commit cfb9bd73b79d6dcc3658bb7c59c4c04ad725cd34 Author: Steven Briscoe Date: Wed Apr 20 22:32:07 2022 +0200 Push all apps to Umbrel App Repo diff --git a/README.md b/README.md new file mode 100644 index 0000000..7213407 --- /dev/null +++ b/README.md @@ -0,0 +1,411 @@ +# Umbrel App Framework + +If you can code in any language, you already know how to develop an app for Umbrel. There is no restriction on the kind of programming languages, frameworks or databases that you can use. Apps run inside isolated Docker containers, and the only requirement (for now) is that they should have a web-based UI. + +> Some server apps might not have a UI at all. In that case, the app should serve a simple web page listing the connection details, QR codes, setup instructions, and anything else needed for the user to connect. The user is never expected to have CLI access on Umbrel. + +To keep this document short and easy, we won't go into the app development itself, and will instead focus on packaging an existing app. + +Let's straightaway jump into action by packaging [BTC RPC Explorer](https://github.com/janoside/btc-rpc-explorer), a Node.js based blockchain explorer, for Umbrel. + +There are 4 steps: + +1. [🛳 Containerizing the app using Docker](#1-containerizing-the-app-using-docker) +1. [☂️ Packaging the app for Umbrel](#2-%EF%B8%8Fpackaging-the-app-for-umbrel) +1. [🛠 Testing the app on Umbrel](#3-testing-the-app-on-umbrel) + 1. [Testing on Umbrel development environment (Linux or macOS)](#31-testing-the-app-on-umbrel-development-environment) + 1. [Testing on Umbrel OS (Raspberry Pi 4)](#32-testing-on-umbrel-os-raspberry-pi-4) +1. [🚀 Submitting the app](#4-submitting-the-app) + +___ + +## 1. 🛳  Containerizing the app using Docker + +1\. Let's start by cloning BTC RPC Explorer on our system: + +```sh +git clone --branch v2.0.2 https://github.com/janoside/btc-rpc-explorer.git +cd btc-rpc-explorer +``` + +2\. Next, we'll create a `Dockerfile` in the app's directory: + +```Dockerfile +FROM node:12-buster-slim AS builder + +WORKDIR /build +COPY . . +RUN apt-get update +RUN apt-get install -y git python3 build-essential +RUN npm ci --production + +FROM node:12-buster-slim + +USER 1000 +WORKDIR /build +COPY --from=builder /build . +EXPOSE 3002 +CMD ["npm", "start"] +``` + +### A good Dockerfile: + +- [x] Uses `debian:buster-slim` (or its derivatives, like `node:12-buster-slim`) as the base image — resulting in less storage consumption and faster app installs as the base image is already cached on the user's Umbrel. +- [x] Uses [multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build/) for smaller image size. +- [x] Ensures development files are not included in the final image. +- [x] Has only one service per container. +- [x] Doesn't run the service as root. +- [x] Uses remote assets that are verified against a checksum. +- [x] Results in deterministic image builds. + +3\. We're now ready to build the Docker image of BTC RPC Explorer. Umbrel supports both 64-bit ARM and x86 architectures, so we'll use `docker buildx` to build, tag, and push multi-architecture Docker images of our app to Docker Hub. + +```sh +docker buildx build --platform linux/arm64,linux/amd64 --tag getumbrel/btc-rpc-explorer:v2.0.2 --output "type=registry" . +``` + +> You need to enable ["experimental features"](https://docs.docker.com/engine/reference/commandline/cli/#experimental-features) in Docker to use `docker buildx`. + +___ + +## 2. ☂️  Packaging the app for Umbrel + +1\. Let's fork the [getumbrel/umbrel](https://github.com/getumbrel/umbrel) repo on GitHub, clone our fork locally, create a new branch for our app, and then switch to it: + +```sh +git clone https://github.com//umbrel.git +cd umbrel +git checkout -b btc-rpc-explorer +``` + +2\. It's now time to decide an ID for our app. An app ID should only contain lowercase alphabetical characters and dashes, and should be humanly recognizable. For this app we'll go with `btc-rpc-explorer`. + +We need to create a new subdirectory in the apps directory with same name as our app ID and move into it: + +```sh +mkdir apps/btc-rpc-explorer +cd apps/btc-rpc-explorer +``` + +3\. We'll now create a `docker-compose.yml` file in this directory to define our application. + +> New to Docker Compose? It's a simple tool for defining and running Docker applications that can have multiple containers. Follow along the tutorial, we promise it's not hard if you already understand the basics of Docker. + +Let's copy-paste the following template `docker-compose.yml` file in a text editor and edit it according to our app. + +```yml +version: "3.7" + +services: + web: + image: : + restart: on-failure + stop_grace_period: 1m + ports: + # Replace with the port that your app's web server + # is listening inside the Docker container. If you need to + # expose more ports, add them below. + - : + volumes: + # Uncomment to mount your data directories inside + # the Docker container for storing persistent data + # - ${APP_DATA_DIR}/foo:/foo + # - ${APP_DATA_DIR}/bar:/bar + + # Uncomment to mount LND's data directory as read-only + # inside the Docker container at path /lnd + # - ${LND_DATA_DIR}:/lnd:ro + + # Uncomment to mount Bitcoin Core's data directory as + # read-only inside the Docker container at path /bitcoin + # - ${BITCOIN_DATA_DIR}:/bitcoin:ro + environment: + # Pass any environment variables to your app for configuration in the form: + # VARIABLE_NAME: value + # + # Here are all the Umbrel provided variables that you can pass through to + # your app to connect to Bitcoin Core, LND, Electrum and Tor: + # + # Bitcoin Core environment variables + # $BITCOIN_NETWORK - Can be "mainnet", "testnet" or "regtest" + # $BITCOIN_IP - Local IP of Bitcoin Core + # $BITCOIN_P2P_PORT - P2P port + # $BITCOIN_RPC_PORT - RPC port + # $BITCOIN_RPC_USER - RPC username + # $BITCOIN_RPC_PASS - RPC password + # $BITCOIN_RPC_AUTH - RPC auth string + # + # LND environment variables + # $LND_IP - Local IP of LND + # $LND_GRPC_PORT - gRPC Port of LND + # $LND_REST_PORT - REST Port of LND + # + # Electrum server environment variables + # $ELECTRUM_IP - Local IP of Electrum server + # $ELECTRUM_PORT - Port of Electrum server + # + # Tor proxy environment variables + # $TOR_PROXY_IP - Local IP of Tor proxy + # $TOR_PROXY_PORT - Port of Tor proxy + # + # App specific environment variables + # $APP_HIDDEN_SERVICE - The address of the Tor hidden service your app will be exposed at + # $APP_DOMAIN - Local domain name of the app ("umbrel.local" on Umbrel OS) + # $APP_PASSWORD - Unique plain text password that can be used for authentication in your app, shown to the user in the Umbrel UI + # $APP_SEED - Unique 256 bit long hex string (128 bits of entropy) deterministically derived from user's Umbrel seed and your app's ID + # If your app has more services, like a database container, you can define those + # services below: + # db: + # image: : + # ... + +``` + +4\. For our app, we'll update `` with `getumbrel/btc-rpc-explorer`, `` with `v2.0.2`, and `` with `3002`. Since BTC RPC Explorer doesn't need to store any persistent data and doesn't require access to Bitcoin Core's or LND's data directories, we can remove the entire `volumes` block. + +BTC RPC Explorer is an application with a single Docker container, so we don't need to define any other additional services (like a database service, etc) in the compose file. + +> If BTC RPC Explorer needed to persist some data we would have created a new `data` directory next to the `docker-compose.yml` file. We'd then mount the volume `- ${APP_DATA_DIR}/data:/data` in `docker-compose.yml` to make the directory available at `/data` inside the container. + +Updated `docker-compose.yml` file: + +```yml +version: "3.7" + +services: + web: + image: getumbrel/btc-rpc-explorer:v2.0.2 + restart: on-failure + stop_grace_period: 1m + ports: + - 3002:3002 + environment: + +``` + +5\. Next, let's set the environment variables required by our app to connect to Bitcoin Core, Electrum server, and for app-related configuration ([as required by the app](https://github.com/janoside/btc-rpc-explorer/blob/master/.env-sample)). + +So the final version of `docker-compose.yml` would be: + +```yml +version: "3.7" + +services: + web: + image: getumbrel/btc-rpc-explorer:v2.0.2 + restart: on-failure + stop_grace_period: 1m + ports: + - 3002:3002 + environment: + # Bitcoin Core connection details + BTCEXP_BITCOIND_HOST: $BITCOIN_IP + BTCEXP_BITCOIND_PORT: $BITCOIN_RPC_PORT + BTCEXP_BITCOIND_USER: $BITCOIN_RPC_USER + BTCEXP_BITCOIND_PASS: $BITCOIN_RPC_PASS + + # Electrum connection details + BTCEXP_ELECTRUMX_SERVERS: "tcp://$ELECTRUM_IP:$ELECTRUM_PORT" + + # App Config + BTCEXP_HOST: 0.0.0.0 + DEBUG: "btcexp:*,electrumClient" + BTCEXP_ADDRESS_API: electrumx + BTCEXP_SLOW_DEVICE_MODE: "true" + BTCEXP_NO_INMEMORY_RPC_CACHE: "true" + BTCEXP_PRIVACY_MODE: "true" + BTCEXP_NO_RATES: "true" + BTCEXP_RPC_ALLOWALL: "false" + BTCEXP_BASIC_AUTH_PASSWORD: "" + +``` + +6\. We're pretty much done here. The next step is to commit the changes, push it to our fork's branch, and test out the app on Umbrel. + +```sh +git add . +git commit -m "Add BTC RPC Explorer" +git push origin btc-rpc-explorer +``` + +___ + +## 3. 🛠  Testing the app on Umbrel + +### 3.1 Testing the app on Umbrel development environment + +Umbrel development environment ([`umbrel-dev`](https://github.com/getumbrel/umbrel-dev)) is a lightweight regtest instance of Umbrel that runs inside a virtual machine on your system. It's currently only compatible with Linux or macOS, so if you're on Windows, you may skip this section and directly test your app on a Raspberry Pi 4 running [Umbrel OS](https://github.com/getumbrel/umbrel-os). + +1\. First, we'll install the `umbrel-dev` CLI and it's dependencies [Virtual Box](https://www.virtualbox.org) and [Vagrant](https://vagrantup.com) on our system. If you use [Homebrew](https://brew.sh) you can do that with just: + +```sh +brew install lukechilds/tap/umbrel-dev gnu-sed +brew install --cask virtualbox vagrant +``` + +2\. Now let's initialize our development environment and boot the VM: + +```sh +mkdir umbrel-dev +cd umbrel-dev +umbrel-dev init +umbrel-dev boot +``` + +> The first `umbrel-dev` boot usually takes a while due to the initial setup and configuration of the VM. Subsequent boots are much faster. + +After the VM has booted, we can verify if the Umbrel dashboard is accessible at http://umbrel-dev.local in our browser to make sure everything is running fine. + +3\. We need to switch the Umbrel installation on `umbrel-dev` to our fork and branch: + +```sh +cd getumbrel/umbrel +git remote add git@github.com:/umbrel.git +git fetch btc-rpc-explorer +git checkout /btc-rpc-explorer +``` + +4\. And finally, it's time to install our app: + +```sh +umbrel-dev app install btc-rpc-explorer +``` + +That's it! Our BTC RPC Explorer app should now be accessible at http://umbrel-dev.local:3002 + +5\. To make changes: + +Edit your app files at `getumbrel/umbrel/apps//` and then run: + +```sh +umbrel-dev reload +``` + +Once you're happy with your changes, just commit and push. + +>Don't forget to shutdown the `umbrel-dev` virtual machine after testing with `umbrel-dev shutdown`! + +### 3.2 Testing on Umbrel OS (Raspberry Pi 4) + +1\. We'll first install and run Umbrel OS on a Raspberry Pi 4. [Full instructions can be found here](https://getumbrel.com/#start). After installation, we'll set it up on http://umbrel.local, and then SSH into the Pi: + +```sh +ssh umbrel@umbrel.local +``` + +(SSH password is the same as your Umbrel's dashboard password) + +2\. Next, we'll switch the Umbrel installation to our fork and branch: + +```sh +sudo scripts/update/update --repo /umbrel#btc-rpc-explorer +``` + +3\. Once the installation has updated, it's time to test our app: + +```sh +scripts/app install btc-rpc-explorer +``` + +The app should now be accessible at http://umbrel.local:3002 + +4\. To uninstall: + +```sh +scripts/app uninstall btc-rpc-explorer +``` + +> When testing your app, make sure to verify that any application state that needs to be persisted is in-fact being persisted in volumes. +> +> A good way to test this is to restart the app with `scripts/app stop && scripts/app start `. If any state is lost, it means that state should be mapped to a persistent volume. +> +> When stopping/starting the app, all data in volumes will be persisted and anything else will be discarded. When uninstalling/installing an app, even persistent data will be discarded. + +___ + +## 4. 🚀  Submitting the app + +We're now ready to open a pull request on the main [getumbrel/umbrel](https://github.com/getumbrel/umbrel) repo to submit our app. Let's copy-paste the following markdown for the pull request description, fill it up with the required details, and then open a pull request. + +``` +# App Submission + +### App name +... + +### Version +... + +### One line description of the app +_(max 50 characters)_ + +... + +### Summary of the app +_(50 to 200 words)_ + +... + +### Developer name +... + +### Developer website +... + +### Source code link +_(Link to your app's source code repository.)_ + +... + +### Support link +_(Link to your Telegram support channel, GitHub issues/discussions, support portal, or any other place where users could contact you for support.)_ + +... + +### Requires +- [ ] Bitcoin Core +- [ ] Electrum server +- [ ] LND + +### 256x256 SVG icon +_(Submit an icon with no rounded corners as it will be dynamically rounded with CSS. GitHub doesn't allow uploading SVGs directly, so please upload your icon to an alternate service, like https://svgur.com, and paste the link below.)_ + +... + +### Gallery images +_(Upload 3 to 5 high-quality gallery images (1440x900px) of your app in PNG format, or just upload 3 to 5 screenshots of your app and we'll help you design the gallery images.)_ + +... + + +### I have tested my app on: +- [ ] [Umbrel dev environment](https://github.com/getumbrel/umbrel-dev) +- [ ] [Umbrel OS on a Raspberry Pi 4](https://github.com/getumbrel/umbrel-os) +- [ ] [Custom Umbrel install on Linux](https://github.com/getumbrel/umbrel#-installation) +``` + +This is where the above information is used when the app goes live in the Umbrel App Store: + +![Umbrel App Store Labels](https://i.imgur.com/0CorPRK.png) + +**Here's our real pull request submitting the BTC RPC Explorer app — [getumbrel/umbrel#334](https://github.com/getumbrel/umbrel/pull/334).** + +> After you've submitted your app, we'll review your pull request, create the required Tor hidden services for it, make some adjustments in the `docker-compose.yml` file, such as removing any port conflicts with other apps, pinning Docker images to their sha256 digests, assigning unique IP addresses to the containers, etc before merging. + +🎉 Congratulations! That's all you need to do to package, test and submit your app to Umbrel. We can't wait to have you onboard! + +--- + +## FAQs + +1. **How to push app updates?** + + Every time you release a new version of your app, you should build, tag and push the new Docker images to Docker Hub. Then open a new PR on our main repo (getumbrel/umbrel) with your up-to-date docker image. For now, app updates are bundled together in the Umbrel releases. In the future, you'll be able to ship updates independently as soon as you make a new release. + +1. **How do users install apps?** + + Users install apps via the Umbrel App Store. They do not use the `scripts/app` CLI directly as it's only meant for development use. + +1. **I need help with something else?** + + Join our [developer chat](https://keybase.io/team/getumbrel) on Keybase, or get in touch with [@mayankchhabra](https://t.me/mayankchhabra) or [@lukechilds](https://t.me/lukechilds) on Telegram. diff --git a/agora/data/entrypoint.sh b/agora/data/entrypoint.sh new file mode 100755 index 0000000..95e195e --- /dev/null +++ b/agora/data/entrypoint.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +# Update configs +/filebrowser config init +/filebrowser config set --branding.name "Agora Admin" +/filebrowser users add umbrel ${APP_PASSWORD} + +exec /filebrowser -p 8080 --baseurl "/admin/files" diff --git a/agora/data/www/admin/index.html b/agora/data/www/admin/index.html new file mode 100644 index 0000000..c3c6564 --- /dev/null +++ b/agora/data/www/admin/index.html @@ -0,0 +1,14 @@ + + + + Agora Admin + + +

Welcome to Agora Admin!

+ + + diff --git a/agora/database/filebrowser.db b/agora/database/filebrowser.db new file mode 100644 index 0000000..e69de29 diff --git a/agora/docker-compose.yml b/agora/docker-compose.yml new file mode 100644 index 0000000..0d79268 --- /dev/null +++ b/agora/docker-compose.yml @@ -0,0 +1,60 @@ +version: "3.7" + +services: + filebrowser: + image: filebrowser/filebrowser:v2.21.1@sha256:e1f43b1b8a1acb1d7cd5f934454e7a2ef571ea3bab48b0e1ed0fa97ef9df8d69 + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/files:/srv + - ${APP_DATA_DIR}/database/filebrowser.db:/database.db + - ${APP_DATA_DIR}/data:/data + environment: + APP_PASSWORD: "$APP_PASSWORD" + entrypoint: /data/entrypoint.sh + networks: + default: + ipv4_address: $APP_AGORA_FILEBROWSER_IP + + agora: + image: ghcr.io/agora-org/agora:sha-48d3205@sha256:35eda120a8d868c7fa3b9cbdcad7cc2245b9fe7e0c5356c8091bb0bf9a65222d + restart: on-failure + init: true + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/files:/files + - ${LND_DATA_DIR}:/lnd:ro + user: "1000:1000" + environment: + # LND environment variables + LND_RPC_AUTHORITY: "$LND_IP:$LND_GRPC_PORT" + TLS_CERT_PATH: "/lnd/tls.cert" + INVOICES_MACAROON_PATH: "/lnd/data/chain/bitcoin/$BITCOIN_NETWORK/invoice.macaroon" + + # App specific environment variables + FILES_DIR: "/files" + AGORA_PORT: 8080 + networks: + default: + ipv4_address: $APP_AGORA_SERVER_IP + + nginx: + image: nginx:1.19-alpine@sha256:07ab71a2c8e4ecb19a5a5abcfb3a4f175946c001c8af288b1aa766d67b0d05d2 + init: true + restart: on-failure + volumes: + - ${APP_DATA_DIR}/nginx/nginx.conf.template:/etc/nginx/templates/nginx.conf.template + - ${APP_DATA_DIR}/data/www:/usr/share/nginx/html + environment: + NGINX_ENVSUBST_OUTPUT_DIR: /etc/nginx/ + APP_AGORA_SERVER_IP: $APP_AGORA_SERVER_IP + APP_AGORA_FILEBROWSER_IP: $APP_AGORA_FILEBROWSER_IP + ports: + - "$APP_AGORA_PORT:80" + depends_on: + - agora + - filebrowser + networks: + default: + ipv4_address: $APP_AGORA_IP diff --git a/agora/exports.sh b/agora/exports.sh new file mode 100644 index 0000000..55346a0 --- /dev/null +++ b/agora/exports.sh @@ -0,0 +1,4 @@ +export APP_AGORA_IP="10.21.21.87" +export APP_AGORA_PORT="12080" +export APP_AGORA_SERVER_IP="10.21.21.88" +export APP_AGORA_FILEBROWSER_IP="10.21.21.89" \ No newline at end of file diff --git a/agora/files/.gitkeep b/agora/files/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/agora/nginx/nginx.conf.template b/agora/nginx/nginx.conf.template new file mode 100644 index 0000000..4cfd1ae --- /dev/null +++ b/agora/nginx/nginx.conf.template @@ -0,0 +1,26 @@ +events { } + +http { + + +server { + listen 80; + server_name _; + + location / { + proxy_pass http://${APP_AGORA_SERVER_IP}:8080; + } + + location /admin { + root /usr/share/nginx/html; + index index.html; + } + + location /admin/files { + client_max_body_size 0; + proxy_pass http://${APP_AGORA_FILEBROWSER_IP}:8080; + } + + } + +} diff --git a/agora/torrc.template b/agora/torrc.template new file mode 100644 index 0000000..6ffe020 --- /dev/null +++ b/agora/torrc.template @@ -0,0 +1,3 @@ +# agora Hidden Service +HiddenServiceDir /data/app-agora +HiddenServicePort 80 $APP_AGORA_IP:80 \ No newline at end of file diff --git a/agora/umbrel-app.yml b/agora/umbrel-app.yml new file mode 100644 index 0000000..ff26a62 --- /dev/null +++ b/agora/umbrel-app.yml @@ -0,0 +1,27 @@ +manifest: 1 +id: agora +category: Files +name: Agora +version: v0.1.2 +tagline: Sell your files for Bitcoin +description: >- + Agora is a project that allows anyone to sell files on the web for + bitcoin using the Lightning Network. + + + Agora serves the contents of a local directory, providing file listings and downloads over HTTP. For example, you can point it at a directory full of PDFs, allowing users to browse and view the PDFs in their web browser. If agora is connected to an LND node, it can be configured to require Lightning Network payments for downloads. +developer: Casey Rodarmor & SĂśnke Hahn +website: https://agora-org.github.io/agora/ +dependencies: + - lnd +repo: https://github.com/agora-org/agora +support: https://t.me/agoradiscussion +port: 12080 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: /admin/ +deterministicPassword: true +defaultUsername: umbrel +torOnly: false \ No newline at end of file diff --git a/bitfeed/data/.gitkeep b/bitfeed/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitfeed/docker-compose.yml b/bitfeed/docker-compose.yml new file mode 100644 index 0000000..7519aa8 --- /dev/null +++ b/bitfeed/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" + +services: + web: + image: ghcr.io/bitfeed-project/bitfeed-client:v2.2.1@sha256:70c89d49d20ba3da21c648c259f45a4b89e06bfe1d97374a092dce6f891d03c6 + restart: on-failure + stop_grace_period: 1m + depends_on: + - "api" + environment: + TARGET: "umbrel" + BACKEND_HOST: "$APP_BITFEED_API_IP" + BACKEND_PORT: "$APP_BITFEED_API_PORT" + ports: + - "$APP_BITFEED_PORT:80" + networks: + default: + ipv4_address: $APP_BITFEED_IP + + api: + image: ghcr.io/bitfeed-project/bitfeed-server:v2.2.1@sha256:60eae8109d3d6a377aec8a954f93b6be9ee48de717c9ab5810c2a5afcf688554 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + PORT: "$APP_BITFEED_API_PORT" + BITCOIN_HOST: "$BITCOIN_IP" + BITCOIN_ZMQ_RAWTX_PORT: "$BITCOIN_ZMQ_RAWTX_PORT" + BITCOIN_ZMQ_RAWBLOCK_PORT: "$BITCOIN_ZMQ_RAWBLOCK_PORT" + BITCOIN_ZMQ_SEQUENCE_PORT: "$BITCOIN_ZMQ_SEQUENCE_PORT" + BITCOIN_RPC_PORT: "$BITCOIN_RPC_PORT" + BITCOIN_RPC_USER: "$BITCOIN_RPC_USER" + BITCOIN_RPC_PASS: "$BITCOIN_RPC_PASS" + RPC_POOLS: "1" + RPC_POOL_SIZE: "16" + LOG_LEVEL: "info" + volumes: + - ${APP_DATA_DIR}/data:/app/data + networks: + default: + ipv4_address: $APP_BITFEED_API_IP diff --git a/bitfeed/exports.sh b/bitfeed/exports.sh new file mode 100644 index 0000000..d980b79 --- /dev/null +++ b/bitfeed/exports.sh @@ -0,0 +1,4 @@ +export APP_BITFEED_IP="10.21.21.68" +export APP_BITFEED_PORT="8314" +export APP_BITFEED_API_IP="10.21.21.69" +export APP_BITFEED_API_PORT="8315" \ No newline at end of file diff --git a/bitfeed/torrc.template b/bitfeed/torrc.template new file mode 100644 index 0000000..4e94074 --- /dev/null +++ b/bitfeed/torrc.template @@ -0,0 +1,3 @@ +# bitfeed Hidden Service +HiddenServiceDir /data/app-bitfeed +HiddenServicePort 80 $APP_BITFEED_IP:80 \ No newline at end of file diff --git a/bitfeed/umbrel-app.yml b/bitfeed/umbrel-app.yml new file mode 100644 index 0000000..1bc4e11 --- /dev/null +++ b/bitfeed/umbrel-app.yml @@ -0,0 +1,29 @@ +manifest: 1 +id: bitfeed +category: Explorers +name: Bitfeed +version: 2.2.1 +tagline: A live visualization of your node's mempool +description: >- + A self-hosted version of Bitfeed - the open source mempool & block + visualizer available at https://bits.monospace.live. + + + Watch as new transactions drop into your node's mempool, before being packaged into newly mined blocks. + + + Monitor Bitcoin network activity, explore the composition of the latest block, or simply enjoy a soothing Bitcoin screensaver. +developer: Mononaut +website: https://monospace.live +dependencies: + - bitcoind +repo: https://github.com/bitfeed-project/bitfeed +support: https://github.com/bitfeed-project/bitfeed/issues +port: 8314 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" \ No newline at end of file diff --git a/bleskomat-server/data/.gitkeep b/bleskomat-server/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bleskomat-server/data/db/.gitkeep b/bleskomat-server/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bleskomat-server/data/web/.gitkeep b/bleskomat-server/data/web/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bleskomat-server/docker-compose.yml b/bleskomat-server/docker-compose.yml new file mode 100644 index 0000000..2e8e819 --- /dev/null +++ b/bleskomat-server/docker-compose.yml @@ -0,0 +1,48 @@ +version: "3.7" + +services: + + db: + image: postgres:10.20-stretch@sha256:130e08bb19199bd055e585e8938c5ebb0555dc13b445fad5b0bd727e4b75149c + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - $APP_DATA_DIR/data/db:/var/lib/postgresql/data + networks: + default: + ipv4_address: $APP_BLESKOMAT_SERVER_DB_IP + environment: + - POSTGRES_USER=bleskomat_server + - POSTGRES_DB=bleskomat_server + - POSTGRES_PASSWORD=moneyprintergobrrr + + web: + image: bleskomat/bleskomat-server:1.3.4@sha256:7bd91b896c5ca4f69b7c9509b40ccfae273cc46120ec66b2e27b295b0186f230 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + depends_on: + - db + ports: + - "$APP_BLESKOMAT_SERVER_PORT:$APP_BLESKOMAT_SERVER_PORT" + volumes: + - $APP_DATA_DIR/data/web:/usr/src/app/data + - $LND_DATA_DIR:/lnd:ro + environment: + DEBUG: "bleskomat-server*,lnurl*" + BLESKOMAT_SERVER_HOST: "0.0.0.0" + BLESKOMAT_SERVER_PORT: "$APP_BLESKOMAT_SERVER_PORT" + BLESKOMAT_SERVER_URL: "$APP_HIDDEN_SERVICE" + BLESKOMAT_SERVER_ENDPOINT: "/u" + BLESKOMAT_SERVER_AUTH_API_KEYS: '[]' + BLESKOMAT_SERVER_LIGHTNING: '{"backend":"lnd","config":{"cert":"/lnd/tls.cert","protocol":"https","hostname":"$LND_IP:$LND_REST_PORT","macaroon":"/lnd/data/chain/bitcoin/$BITCOIN_NETWORK/admin.macaroon"}}' + BLESKOMAT_SERVER_STORE: '{"backend":"knex","config":{"client":"postgres","connection":{"host":"$APP_BLESKOMAT_SERVER_DB_IP","port":5432,"user":"bleskomat_server","password":"moneyprintergobrrr","database":"bleskomat_server"}}}' + BLESKOMAT_SERVER_COINRATES_DEFAULTS_PROVIDER: "coinbase" + BLESKOMAT_SERVER_ADMIN_WEB: "true" + BLESKOMAT_SERVER_ADMIN_PASSWORD_PLAINTEXT: "$APP_PASSWORD" + BLESKOMAT_SERVER_ENV_FILEPATH: "./data/.env" + + networks: + default: + ipv4_address: $APP_BLESKOMAT_SERVER_IP diff --git a/bleskomat-server/exports.sh b/bleskomat-server/exports.sh new file mode 100644 index 0000000..ff28c70 --- /dev/null +++ b/bleskomat-server/exports.sh @@ -0,0 +1,3 @@ +export APP_BLESKOMAT_SERVER_PORT="3333" +export APP_BLESKOMAT_SERVER_IP="10.21.21.85" +export APP_BLESKOMAT_SERVER_DB_IP="10.21.21.86" \ No newline at end of file diff --git a/bleskomat-server/torrc.template b/bleskomat-server/torrc.template new file mode 100644 index 0000000..a36b28c --- /dev/null +++ b/bleskomat-server/torrc.template @@ -0,0 +1,3 @@ +# bleskomat-server Hidden Service +HiddenServiceDir /data/app-bleskomat-server +HiddenServicePort 80 $APP_BLESKOMAT_SERVER_IP:$APP_BLESKOMAT_SERVER_PORT \ No newline at end of file diff --git a/bleskomat-server/umbrel-app.yml b/bleskomat-server/umbrel-app.yml new file mode 100644 index 0000000..e425d54 --- /dev/null +++ b/bleskomat-server/umbrel-app.yml @@ -0,0 +1,25 @@ +manifest: 1 +id: bleskomat-server +category: Wallet Servers +name: Bleskomat Server +version: v1.3.4 +tagline: Connect a Bleskomat ATM to your Lightning node +description: The Bleskomat ATM is the next generation Bitcoin Lightning ATM. + This app will allow you to easily connect your Bleskomat ATM to the Lightning + node on your Umbrel. A simple web interface is provided which you can use to + manage and authorize one or more Bleskomat ATMs as well as view a list of + recent payments handled by the server. +developer: Bleskomat +website: https://www.bleskomat.com +dependencies: + - lnd +repo: https://github.com/samotari/bleskomat-server +support: https://t.me/bleskomat +port: 3333 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +torOnly: false \ No newline at end of file diff --git a/bluewallet/data/redis/.gitkeep b/bluewallet/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bluewallet/docker-compose.yml b/bluewallet/docker-compose.yml new file mode 100644 index 0000000..fad0ee6 --- /dev/null +++ b/bluewallet/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3.7" + +services: + redis: + image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396" + user: "1000:1000" + command: "redis-server --requirepass moneyprintergobrrr" + restart: "on-failure" + stop_grace_period: "1m" + init: true + volumes: + - "${APP_DATA_DIR}/data/redis:/data" + networks: + default: + ipv4_address: "${APP_BLUEWALLET_REDIS_IP}" + + lndhub: + image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a" + user: "1000:1000" + depends_on: [ "redis" ] + restart: "on-failure" + stop_grace_period: "1m" + init: true + ports: + - "${APP_BLUEWALLET_LNDHUB_PORT}:${APP_BLUEWALLET_LNDHUB_PORT}" + volumes: + - "${LND_DATA_DIR}:/lnd:ro" + environment: + PORT: "${APP_BLUEWALLET_LNDHUB_PORT}" + TOR_URL: "${APP_HIDDEN_SERVICE}" + LND_CERT_FILE: "/lnd/tls.cert" + LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon" + CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}' + networks: + default: + ipv4_address: "${APP_BLUEWALLET_LNDHUB_IP}" diff --git a/bluewallet/exports.sh b/bluewallet/exports.sh new file mode 100644 index 0000000..1607ad6 --- /dev/null +++ b/bluewallet/exports.sh @@ -0,0 +1,3 @@ +export APP_BLUEWALLET_LNDHUB_IP="10.21.21.30" +export APP_BLUEWALLET_LNDHUB_PORT="3008" +export APP_BLUEWALLET_REDIS_IP="10.21.21.31" \ No newline at end of file diff --git a/bluewallet/torrc.template b/bluewallet/torrc.template new file mode 100644 index 0000000..89d1bec --- /dev/null +++ b/bluewallet/torrc.template @@ -0,0 +1,2 @@ +HiddenServiceDir /data/app-bluewallet +HiddenServicePort 80 $APP_BLUEWALLET_LNDHUB_IP:$APP_BLUEWALLET_LNDHUB_PORT \ No newline at end of file diff --git a/bluewallet/umbrel-app.yml b/bluewallet/umbrel-app.yml new file mode 100644 index 0000000..2f8b61d --- /dev/null +++ b/bluewallet/umbrel-app.yml @@ -0,0 +1,27 @@ +manifest: 1 +id: bluewallet +category: Wallet Servers +name: BlueWallet Lightning +version: 1.4.1 +tagline: Connect BlueWallet to your Lightning node +description: >- + Run BlueWallet in the most private and secure way possible by + removing 3rd parties and connecting it directly to your Umbrel's Lightning + node. + + + You can pair multiple BlueWallet accounts, so your friends and family can pair their BlueWallet with your Umbrel for a trust-minimized setup. +developer: BlueWallet +website: https://lndhub.io +dependencies: + - lnd +repo: https://github.com/BlueWallet/LndHub +support: https://t.me/bluewallet +port: 3008 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" \ No newline at end of file diff --git a/btc-rpc-explorer/docker-compose.yml b/btc-rpc-explorer/docker-compose.yml new file mode 100644 index 0000000..a5f37f0 --- /dev/null +++ b/btc-rpc-explorer/docker-compose.yml @@ -0,0 +1,34 @@ +version: "3.7" + +services: + web: + image: getumbrel/btc-rpc-explorer:v3.3.0@sha256:cfd14f8e722cfbf1ad106ba224569c8babe685422461a641abc210e13913c636 + restart: on-failure + stop_grace_period: 1m + ports: + - "$APP_BTC_RPC_EXPLORER_PORT:$APP_BTC_RPC_EXPLORER_PORT" + environment: + # Docker requirements + BTCEXP_HOST: 0.0.0.0 + # Bitcoin Core + BTCEXP_BITCOIND_HOST: $BITCOIN_IP + BTCEXP_BITCOIND_PORT: $BITCOIN_RPC_PORT + BTCEXP_BITCOIND_USER: $BITCOIN_RPC_USER + BTCEXP_BITCOIND_PASS: $BITCOIN_RPC_PASS + # Electrum + BTCEXP_ADDRESS_API: electrumx + BTCEXP_ELECTRUMX_SERVERS: "tcp://$ELECTRUM_IP:$ELECTRUM_PORT" + # Log level + DEBUG: "btcexp:*,electrumClient" + # Performance + BTCEXP_SLOW_DEVICE_MODE: "true" + BTCEXP_NO_INMEMORY_RPC_CACHE: "true" + # Privacy + BTCEXP_PRIVACY_MODE: "true" + BTCEXP_NO_RATES: "true" + # Disable RPC + BTCEXP_RPC_ALLOWALL: "false" + BTCEXP_BASIC_AUTH_PASSWORD: "" + networks: + default: + ipv4_address: $APP_BTC_RPC_EXPLORER_IP diff --git a/btc-rpc-explorer/exports.sh b/btc-rpc-explorer/exports.sh new file mode 100644 index 0000000..63906ec --- /dev/null +++ b/btc-rpc-explorer/exports.sh @@ -0,0 +1,3 @@ +export APP_BTC_RPC_EXPLORER_IP="10.21.21.12" +export APP_BTC_RPC_EXPLORER_IP="10.21.21.12" +export APP_BTC_RPC_EXPLORER_PORT="3002" \ No newline at end of file diff --git a/btc-rpc-explorer/torrc.template b/btc-rpc-explorer/torrc.template new file mode 100644 index 0000000..24ab2ee --- /dev/null +++ b/btc-rpc-explorer/torrc.template @@ -0,0 +1,3 @@ +# btc-rpc-explorer Hidden Service +HiddenServiceDir /data/app-btc-rpc-explorer +HiddenServicePort 80 $APP_BTC_RPC_EXPLORER_IP:$APP_BTC_RPC_EXPLORER_PORT \ No newline at end of file diff --git a/btc-rpc-explorer/umbrel-app.yml b/btc-rpc-explorer/umbrel-app.yml new file mode 100644 index 0000000..67f6c73 --- /dev/null +++ b/btc-rpc-explorer/umbrel-app.yml @@ -0,0 +1,32 @@ +manifest: 1 +id: btc-rpc-explorer +category: Explorers +name: BTC RPC Explorer +version: 3.3.0 +tagline: Simple, database-free blockchain explorer +description: >- + BTC RPC Explorer is a full-featured, self-hosted explorer for the + Bitcoin blockchain. With this explorer, you can explore not just the + blockchain database, but also explore the functional capabilities of your + Umbrel. + + + It comes with a network summary dashboard, detailed view of blocks, transactions, addresses, along with analysis tools for viewing stats on miner activity, mempool summary, with fee, size, and age breakdowns. You can also search by transaction ID, block hash/height, and addresses. + + + It's time to appreciate the "fullness" of your node. +developer: Dan Janosik +website: https://explorer.btc21.org +dependencies: + - bitcoind + - electrum +repo: https://github.com/janoside/btc-rpc-explorer +support: https://github.com/janoside/btc-rpc-explorer/discussions +port: 3002 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" \ No newline at end of file diff --git a/btcpay-server/data/btcpay/.gitkeep b/btcpay-server/data/btcpay/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/btcpay-server/data/nbxplorer/.gitkeep b/btcpay-server/data/nbxplorer/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/btcpay-server/data/postgres/.gitkeep b/btcpay-server/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/btcpay-server/docker-compose.yml b/btcpay-server/docker-compose.yml new file mode 100644 index 0000000..5dfe328 --- /dev/null +++ b/btcpay-server/docker-compose.yml @@ -0,0 +1,69 @@ +version: "3.7" + +services: + nbxplorer: + image: nicolasdorier/nbxplorer:2.2.20@sha256:8f0e7f68513596e0a2555990d262169088a70204abe397bf18ba921f9b0608f3 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/nbxplorer:/data + environment: + NBXPLORER_DATADIR: "/data" + NBXPLORER_NETWORK: "$BITCOIN_NETWORK" + NBXPLORER_PORT: 32838 + NBXPLORER_BIND: 0.0.0.0 + NBXPLORER_CHAINS: "btc" + NBXPLORER_SIGNALFILEDIR: "/data" + NBXPLORER_BTCRPCURL: "http://$BITCOIN_IP:$BITCOIN_RPC_PORT" + NBXPLORER_BTCNODEENDPOINT: $BITCOIN_IP:$BITCOIN_P2P_PORT + NBXPLORER_BTCRPCUSER: $BITCOIN_RPC_USER + NBXPLORER_BTCRPCPASSWORD: $BITCOIN_RPC_PASS + networks: + default: + ipv4_address: $APP_BTCPAY_SERVER_NBXPLORER_IP + + web: + image: btcpayserver/btcpayserver:1.4.9@sha256:3310ef8c5fecb3a1c66507b97ebc84a3475fc77e63cd3bd29ab8b76474214566 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + depends_on: [ nbxplorer, postgres ] + entrypoint: [ "dotnet", "BTCPayServer.dll" ] + ports: + - "$APP_BTCPAY_SERVER_PORT:$APP_BTCPAY_SERVER_PORT" + volumes: + - ${APP_DATA_DIR}/data/btcpay:/data + - ${APP_DATA_DIR}/data/nbxplorer:/data/.nbxplorer + - ${LND_DATA_DIR}:/lnd:ro + environment: + HOME: "/data" + BTCPAY_DATADIR: "/data" + BTCPAY_PLUGINDIR: "/data/plugins" + BTCPAY_DOCKERDEPLOYMENT: "false" + BTCPAY_POSTGRES: "User ID=postgres;Host=$APP_BTCPAY_SERVER_DB_IP;Port=5432;Database=btcpayserver$BITCOIN_NETWORK" + BTCPAY_NETWORK: "$BITCOIN_NETWORK" + BTCPAY_BIND: 0.0.0.0:$APP_BTCPAY_SERVER_PORT + BTCPAY_CHAINS: "btc" + BTCPAY_BTCEXPLORERURL: "http://$APP_BTCPAY_SERVER_NBXPLORER_IP:32838" + BTCPAY_BTCLIGHTNING: "type=lnd-rest;server=https://$LND_IP:$LND_REST_PORT/;macaroonfilepath=/lnd/data/chain/bitcoin/$BITCOIN_NETWORK/admin.macaroon;allowinsecure=true" + BTCPAY_SOCKSENDPOINT: $TOR_PROXY_IP:$TOR_PROXY_PORT + networks: + default: + ipv4_address: $APP_BTCPAY_SERVER_IP + + postgres: + image: btcpayserver/postgres:13.6@sha256:dadf0048895a888d88a2dd773dde2f5868c45f74ad37c6d208694df54b590531 + # This needs to run as root for migrations to succeed + # user: "1000:1000" + restart: on-failure + # https://github.com/btcpayserver/btcpayserver-docker/commit/a65e7db6851092c75c5ac6c091a5f36ccc5fc26e + command: [ "-c", "random_page_cost=1.0" ] + stop_grace_period: 1m + environment: + POSTGRES_HOST_AUTH_METHOD: trust + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + networks: + default: + ipv4_address: $APP_BTCPAY_SERVER_DB_IP diff --git a/btcpay-server/exports.sh b/btcpay-server/exports.sh new file mode 100644 index 0000000..e3d5491 --- /dev/null +++ b/btcpay-server/exports.sh @@ -0,0 +1,4 @@ +export APP_BTCPAY_SERVER_IP="10.21.21.19" +export APP_BTCPAY_SERVER_PORT="3003" +export APP_BTCPAY_SERVER_NBXPLORER_IP="10.21.21.20" +export APP_BTCPAY_SERVER_DB_IP="10.21.21.21" \ No newline at end of file diff --git a/btcpay-server/torrc.template b/btcpay-server/torrc.template new file mode 100644 index 0000000..ac091df --- /dev/null +++ b/btcpay-server/torrc.template @@ -0,0 +1,3 @@ +# btcpay-server Hidden Service +HiddenServiceDir /data/app-btcpay-server +HiddenServicePort 80 $APP_BTCPAY_SERVER_IP:$APP_BTCPAY_SERVER_PORT \ No newline at end of file diff --git a/btcpay-server/umbrel-app.yml b/btcpay-server/umbrel-app.yml new file mode 100644 index 0000000..c89fdae --- /dev/null +++ b/btcpay-server/umbrel-app.yml @@ -0,0 +1,35 @@ +manifest: 1 +id: btcpay-server +category: Finance +name: BTCPay Server +version: 1.4.9 +tagline: Accept Bitcoin payments with 0 fees & no 3rd party +description: >- + BTCPay Server is a payment processor that allows you to receive + payments in Bitcoin (and altcoins) directly, with no fees, transaction cost or + a middleman. It is a non-custodial invoicing system which eliminates the + involvement of a third-party. + + + Payments with BTCPay Server go directly to your wallet, which increases the privacy and security. Your private keys are never uploaded to your Umbrel. There is no address re-use, since each invoice generates a new address deriving from your xpubkey. + + + You can not only to attach an unlimited number of stores and use the Lightning Network but also become a payment processor for others. Thanks to the apps built on top of it, you can use BTCPay to receive donations, start a crowdfunding campaign or have an in-store Point of Sale. + + + Please note: Due to your BTCPay instance running on your local network connecting remote applications, such as Shopify or WordPress for example, will fail to connect. +developer: BTCPay Server Foundation +website: https://btcpayserver.org +dependencies: + - bitcoind + - lnd +repo: https://github.com/btcpayserver/btcpayserver +support: https://chat.btcpayserver.org +port: 3003 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" \ No newline at end of file diff --git a/code-server/data/.bashrc b/code-server/data/.bashrc new file mode 100644 index 0000000..2a1ba76 --- /dev/null +++ b/code-server/data/.bashrc @@ -0,0 +1 @@ +source "${HOME}/.loaders/init.sh" diff --git a/code-server/data/.loaders/init.sh b/code-server/data/.loaders/init.sh new file mode 100644 index 0000000..3868b6e --- /dev/null +++ b/code-server/data/.loaders/init.sh @@ -0,0 +1,41 @@ +lazy_load() { + local command="${1}" + local loader="${2}" + local arguments=${@:3} + if ! which $command > /dev/null 2>&1 + then + echo "${command} isn't installed yet, installing it now..." + $loader + echo "${command} installed! Running \"${command} ${arguments}\"..." + echo + fi + $command $arguments +} + +setup_node() { + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash + export NVM_DIR="$HOME/.nvm" + source "${HOME}/.nvm/nvm.sh" + source "${HOME}/.nvm/bash_completion" + nvm install stable +} + +setup_python() { + sudo apt-get update + sudo apt-get install -y python3 python3-pip +} + +setup_rust() { + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source "${HOME}/.cargo/env" +} + +alias node="lazy_load node setup_node" +alias npm="lazy_load npm setup_node" +alias python3="lazy_load python3 setup_python" +alias pip3="lazy_load pip3 setup_python" +alias python="python3" +alias pip="pip3" +alias rustup="lazy_load rustup setup_rust" +alias rustc="lazy_load rustc setup_rust" +alias cargo="lazy_load cargo setup_rust" diff --git a/code-server/docker-compose.yml b/code-server/docker-compose.yml new file mode 100644 index 0000000..378e11a --- /dev/null +++ b/code-server/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + server: + image: codercom/code-server:3.11.1@sha256:9bb2444f9d0c26765924e29155ac4a8febecb1e080f12c4e368e71dbe6a675b5 + restart: on-failure + user: "1000:1000" + ports: + - "${APP_CODE_SERVER_PORT}:8080" + volumes: + - ${APP_DATA_DIR}/data:/home/coder + environment: + PASSWORD: $APP_PASSWORD + networks: + default: + ipv4_address: $APP_CODE_SERVER_IP diff --git a/code-server/exports.sh b/code-server/exports.sh new file mode 100644 index 0000000..7f9fd7a --- /dev/null +++ b/code-server/exports.sh @@ -0,0 +1,2 @@ +export APP_CODE_SERVER_IP="10.21.21.53" +export APP_CODE_SERVER_PORT="8091" \ No newline at end of file diff --git a/code-server/torrc.template b/code-server/torrc.template new file mode 100644 index 0000000..e65cf42 --- /dev/null +++ b/code-server/torrc.template @@ -0,0 +1,3 @@ +# code-server Hidden Service +HiddenServiceDir /data/app-code-server +HiddenServicePort 80 $APP_CODE_SERVER_IP:8080 \ No newline at end of file diff --git a/code-server/umbrel-app.yml b/code-server/umbrel-app.yml new file mode 100644 index 0000000..c8dc26a --- /dev/null +++ b/code-server/umbrel-app.yml @@ -0,0 +1,28 @@ +manifest: 1 +id: code-server +category: Development +name: code-server +version: 3.11.1 +tagline: Run VS Code on your Umbrel +description: >- + Run VS Code on your Umbrel and access it in the browser so you can + code on any device with a consistent development environment. This way you can + use your Umbrel not only to code from any device, anywhere, but to also speed + up tests, compilations, downloads, and more. + + + By running all intensive tasks run on your Umbrel, preserve battery life of your devices when you're on the go. +developer: Coder +website: https://coder.com +dependencies: [] +repo: https://github.com/cdr/code-server +support: https://github.com/cdr/code-server/discussions +port: 8091 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +deterministicPassword: true +torOnly: false \ No newline at end of file diff --git a/electrumx/data/.gitkeep b/electrumx/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/electrumx/docker-compose.yml b/electrumx/docker-compose.yml new file mode 100644 index 0000000..6ee135d --- /dev/null +++ b/electrumx/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + server: + image: lukechilds/electrumx:v1.16.0@sha256:2949784536f8f85af229004e12e5b5c3a1d7428918a492f77b4e958035c2ae2a + user: "1000:1000" + init: true + restart: on-failure + stop_grace_period: 1m + ports: + - "${APP_ELECTRUMX_PORT}:50001" + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + DAEMON_URL: http://${BITCOIN_RPC_USER}:${BITCOIN_RPC_PASS}@${BITCOIN_IP}:${BITCOIN_RPC_PORT} + COIN: BitcoinSegwit + networks: + default: + ipv4_address: $APP_ELECTRUMX_IP \ No newline at end of file diff --git a/element/docker-compose.yml b/element/docker-compose.yml new file mode 100644 index 0000000..160cfe0 --- /dev/null +++ b/element/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.7" + +services: + web: + image: getumbrel/element-web:v1.8.4@sha256:16b2776278a8a9d8a2397ccd75484f8728fd3223cb3329bf572b50b8f950636c + # NGINX parent container requires root + # user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + ports: + - "$APP_ELEMENT_PORT:80" + networks: + default: + ipv4_address: $APP_ELEMENT_IP diff --git a/element/exports.sh b/element/exports.sh new file mode 100644 index 0000000..1735474 --- /dev/null +++ b/element/exports.sh @@ -0,0 +1,2 @@ +export APP_ELEMENT_IP="10.21.21.45" +export APP_ELEMENT_PORT="8088" \ No newline at end of file diff --git a/element/torrc.template b/element/torrc.template new file mode 100644 index 0000000..fda16db --- /dev/null +++ b/element/torrc.template @@ -0,0 +1,3 @@ +# element Hidden Service +HiddenServiceDir /data/app-element +HiddenServicePort 80 $APP_ELEMENT_IP:80 \ No newline at end of file diff --git a/element/umbrel-app.yml b/element/umbrel-app.yml new file mode 100644 index 0000000..3581d4b --- /dev/null +++ b/element/umbrel-app.yml @@ -0,0 +1,39 @@ +manifest: 1 +id: element +category: Social +name: Element +version: 1.8.4 +tagline: A glossy Matrix client compatible with Synapse +description: >- + Element is a new type of messaging app. You choose where your + messages are stored, putting you in control of your data. You can connect it + to the Synapse installation running on your Umbrel. An easy way to get started + is to install the "Synapse" Matrix homserver on your Umbrel and change + Element's Homserver URL from matrix.org to your Synapse's homeserver URL + (http://umbrel.local:8008 or http://