Compare commits
7 Commits
master
...
knorrium/m
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9629b9b39 | ||
|
|
ace49f347c | ||
|
|
8e25003e73 | ||
|
|
bf4fd34338 | ||
|
|
460f36d2f8 | ||
|
|
17164a32f4 | ||
|
|
664b922a3e |
13
.github/workflows/lint-apps.yml
vendored
13
.github/workflows/lint-apps.yml
vendored
@ -1,13 +0,0 @@
|
||||
name: Lint apps
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
lint-apps:
|
||||
name: Lint apps
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: sharknoon/umbrel-app-linter-action@d0b39f9ec5867fd001b05d5ddd6037dcc35f41bd
|
||||
29
.gitignore
vendored
29
.gitignore
vendored
@ -1,29 +0,0 @@
|
||||
# Mac OS specific
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
|
||||
# Editor specific files
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.cursorrules
|
||||
|
||||
# Build artifacts
|
||||
dist/
|
||||
build/
|
||||
out/
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
vendor/
|
||||
|
||||
# Temporary files
|
||||
tmp/
|
||||
temp/
|
||||
*.tmp
|
||||
141
README.md
141
README.md
@ -1,20 +1,22 @@
|
||||
# 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 kinds of programming languages, frameworks, or databases that you can use. Apps run inside isolated [Docker](https://docs.docker.com/) containers, and the only requirement is that they should serve a web-based UI.
|
||||
🚨 This is the current workflow for developing and testing an app on umbrelOS 1.0.x. The app framework is under active development and this workflow will change in the future. For testing on umbrelOS 0.5.4, please refer to the [previous version of this document](https://github.com/getumbrel/umbrel-apps/blob/9eae789b8512ef2a213805524e17f33d2128e33e/README.md).
|
||||
|
||||
If you can code in any language, you already know how to develop an app for Umbrel. There is no restriction on the kinds of programming languages, frameworks, or databases that you can use. Apps run inside isolated [Docker](https://docs.docker.com/) 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 and testing an existing app.
|
||||
|
||||
Let's jump into action by packaging [BTC RPC Explorer](https://github.com/janoside/btc-rpc-explorer), a Node.js based app, for Umbrel.
|
||||
Let's 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 umbrelOS](#2-%EF%B8%8Fpackaging-the-app-for-umbrelos)
|
||||
1. [🛠 Testing the app on umbrelOS](#3-testing-the-app-on-umbrelos)
|
||||
1. [Test using an umbrelOS development environment on your local machine](#31-test-using-an-umbrelos-development-environment-on-your-local-machine)
|
||||
1. [Test using umbrelOS running on a physical device](#32-test-using-umbrelos-running-on-a-physical-device)
|
||||
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. [Test using a Linux VM on your local machine with Multipass](#31-test-using-a-linux-vm-on-your-local-machine-with-multipass)
|
||||
1. [Testing on a Raspberry Pi or Umbrel Home](#32-testing-on-a-raspberry-pi-or-umbrel-home)
|
||||
1. [🚀 Submitting the app](#4-submitting-the-app)
|
||||
___
|
||||
|
||||
@ -67,7 +69,7 @@ docker buildx build --platform linux/arm64,linux/amd64 --tag getumbrel/btc-rpc-e
|
||||
|
||||
___
|
||||
|
||||
## 2. ☂️ Packaging the app for umbrelOS
|
||||
## 2. ☂️ Packaging the app for Umbrel
|
||||
|
||||
1\. Let's fork the [getumbrel/umbrel-apps](https://github.com/getumbrel/umbrel-apps) repo on GitHub, clone our fork locally, create a new branch for our app, and then switch to it:
|
||||
|
||||
@ -203,13 +205,6 @@ submitter: Umbrel
|
||||
submission: https://github.com/getumbrel/umbrel/pull/334
|
||||
```
|
||||
|
||||
When submitting a new app, leave the `gallery` and `releaseNotes` fields empty. Use the following values:
|
||||
|
||||
```yml
|
||||
gallery: []
|
||||
releaseNotes: ""
|
||||
```
|
||||
|
||||
The `dependencies` section within the app manifest gives Umbrel a list of app IDs that must be already installed in order for the user to install BTC RPC Explorer and also function.
|
||||
|
||||
The `exports.sh` shell script is a simple script to export environmental variables that your `docker-compose.yml` can read. These environment variables are also accessible when other apps start through their `docker-compose.yml` files. Most applications will not require this feature.
|
||||
@ -299,113 +294,103 @@ git push
|
||||
|
||||
___
|
||||
|
||||
## 3. 🛠 Testing the app on umbrelOS
|
||||
## 3. 🛠 Testing the app on Umbrel
|
||||
|
||||
🚨 This is the current workflow for testing an app on umbrelOS 1.x. The app framework is under active development and this workflow will change in the future. For testing on umbrelOS 0.5.4, please refer to the [previous version of this document](https://github.com/getumbrel/umbrel-apps/blob/9eae789b8512ef2a213805524e17f33d2128e33e/README.md).
|
||||
🚨 This is the current workflow for testing an app on umbrelOS 1.0.x. The app framework is under active development and this workflow will change in the future. For testing on umbrelOS 0.5.4, please refer to the [previous version of this document](https://github.com/getumbrel/umbrel-apps/blob/9eae789b8512ef2a213805524e17f33d2128e33e/README.md).
|
||||
|
||||
### 3.1 Test using an umbrelOS development environment on your local machine
|
||||
### 3.1 Test using a Linux VM on your local machine with Multipass
|
||||
|
||||
The umbrelOS development environment (umbrel-dev) requires a Docker environment that exposes container IPs to the host. This is how Docker natively works on Linux and can be done with OrbStack on macOS and WSL 2 on Windows.
|
||||
It is very easy to spin up a Linux VM on your local machine using [Multipass](https://multipass.run/) and the pre-configured scripts for creating a production-like umbrelOS environment.
|
||||
|
||||
1\. Install [OrbStack](https://orbstack.dev/) on macOS or [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install) with Docker Desktop on Windows.
|
||||
1\. Install [Multipass](https://multipass.run/)
|
||||
|
||||
2\. Clone the [getumbrel/umbrel](https://github.com/getumbrel/umbrel) repo.
|
||||
|
||||
From the root of the cloned repo, run the following command to view the available umbrel-dev commands:
|
||||
From the root of the cloned repo, run the following command to provision a VM with the latest umbrelOS:
|
||||
|
||||
```sh
|
||||
npm run dev help
|
||||
npm run vm:provision
|
||||
```
|
||||
|
||||
To start the development environment, run the following command:
|
||||
Once provisioned, umbrelOS will be accessible at http://umbrel-dev.local.
|
||||
|
||||
The VM environment has a slight difference compared to the production environment. Specifically, the main Umbrel data directory is located at `~/umbrel/packages/umbreld/data` in the VM environment, whereas in the production environment, it's located at `~/umbrel`.
|
||||
|
||||
3\. The following commands can be used to interact with the VM:
|
||||
|
||||
You can run any command on the VM with `npm run vm:exec -- <command>`. For example:
|
||||
|
||||
```sh
|
||||
npm run dev
|
||||
npm run vm:exec -- sudo journalctl -u umbreld
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> If this is your first time running the development environment, it may take a while to build the OS image locally on your machine.
|
||||
|
||||
Once initialized, umbrelOS will be accessible at http://umbrel-dev.local.
|
||||
|
||||
3\. Copy the app's directory (with any .gitkeep files excluded) to the app-store directory on umbrel-dev.
|
||||
|
||||
To do this, we run the following command on our local machine:
|
||||
You can also run trpc commands on the VM with `npm run vm:trpc <command>`. For example:
|
||||
|
||||
```sh
|
||||
rsync -av --exclude=".gitkeep" <path-to-your-forked-repo-on-local-machine>/btc-rpc-explorer umbrel@umbrel-dev.local:/home/umbrel/umbrel/app-stores/getumbrel-umbrel-apps-github-53f74447/
|
||||
npm run vm:trpc apps.install.mutate -- --appId transmission
|
||||
```
|
||||
|
||||
If you are asked for a password during the transfer, use the password that you set when you created your umbrelOS account.
|
||||
|
||||
4\. Install the app.
|
||||
|
||||
From the umbrelOS homescreen, go to the App Store and navigate to BTC RPC Explorer. Click on the "Install" button and wait for the app to install.
|
||||
|
||||
You can also install the app from the command line. umbrelOS provides a web terminal that can be accessed via Settings > Advanced Settings > Terminal > umbrelOS, or you can use the umbrel-dev scripts to install the app using the umbreld RPC server:
|
||||
Alternatively, you can get a shell on the VM with:
|
||||
|
||||
```sh
|
||||
npm run dev client -- apps.install.mutate -- --appId btc-rpc-explorer
|
||||
npm run vm:shell
|
||||
```
|
||||
|
||||
You can completely destroy the VM with `npm run vm:destroy`.
|
||||
|
||||
Other useful commands can be found in the `package.json` file in the root of the cloned repo.
|
||||
|
||||
4\. This next step will become easier in the future, but for now, we need to manually copy the app directory to the app-store directory in the VM in order to test our app:
|
||||
|
||||
```sh
|
||||
multipass transfer -r <path-to-your-forked-repo>/btc-rpc-explorer/ umbrel-dev:/home/ubuntu/umbrel/packages/umbreld/data/app-stores/getumbrel-umbrel-apps-github-53f74447/
|
||||
```
|
||||
|
||||
5\. And finally, it's time to install our app through the homescreen or via the terminal with:
|
||||
|
||||
```sh
|
||||
npm run vm:trpc apps.install.mutate -- --appId btc-rpc-explorer
|
||||
```
|
||||
|
||||
That's it! Our BTC RPC Explorer app should now be accessible at http://umbrel-dev.local:3002
|
||||
|
||||
To uninstall the app, you can right-click on the app's icon on your homescreen and click on the "Uninstall" button. You can also uninstall the app using the umbrel-dev scripts:
|
||||
### 3.2 Testing on a Raspberry Pi or Umbrel Home
|
||||
|
||||
You can test your app on a real Raspberry Pi (arm64) or Umbrel Home (x86_64) device. Instructions for installing umbrelOS on a Raspberry Pi can be found [here](https://getumbrel.com/#install). For Umbrel Home, simply connect the device to your local network and plug it in.
|
||||
|
||||
1\. After plugging in your device, umbrelOS will be accessible from your browser at http://umbrel.local.
|
||||
|
||||
You can SSH into the device with:
|
||||
|
||||
```sh
|
||||
npm run dev client -- apps.uninstall.mutate -- --appId btc-rpc-explorer
|
||||
ssh umbrel@umbrel.local
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> 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 (right-click on the app's icon on your homescreen and click on the "Restart" button). 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.
|
||||
(SSH password is the same as your Umbrel's homescreen password)
|
||||
|
||||
### 3.2 Test using umbrelOS running on a physical device
|
||||
|
||||
You can get up and running with umbrelOS in a few different ways:
|
||||
|
||||
1. [Install umbrelOS on a Raspberry Pi 5](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5)
|
||||
2. [Install umbrelOS on any x86 system](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-x86-Systems)
|
||||
3. [Install umbrelOS in a VM](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Linux-VM)
|
||||
4. [Purchase an Umbrel Home](https://umbrel.com/umbrel-home)
|
||||
|
||||
Regardless of the method you choose, once you have umbrelOS up and running and have visited http://umbrel.local and created an account, you can follow the steps below to test your app.
|
||||
|
||||
1\. Copy the app's directory (with any .gitkeep files excluded) to the app-store directory on your umbrelOS device.
|
||||
|
||||
To do this, we run the following command on our local machine:
|
||||
2\. This next step will become easier in the future, but for now, we need to manually copy the app directory (with dotfiles excluded) to the app-store directory on your umbrelOS device in order to test our app:
|
||||
|
||||
```sh
|
||||
rsync -av --exclude=".gitkeep" <path-to-your-forked-repo-on-local-machine>/btc-rpc-explorer umbrel@umbrel.local:/home/umbrel/umbrel/app-stores/getumbrel-umbrel-apps-github-53f74447/
|
||||
rsync -av --exclude=".*" <path-to-your-forked-repo>/btc-rpc-explorer umbrel@umbrel.local:/home/umbrel/umbrel/app-stores/getumbrel-umbrel-apps-github-53f74447/
|
||||
```
|
||||
|
||||
If you are asked for a password during the transfer, use the password that you set for your umbrelOS device when you created your account.
|
||||
|
||||
2\. Install the app on your umbrelOS device:
|
||||
|
||||
From your umbrelOS homescreen, go to the App Store and navigate to BTC RPC Explorer. Click on the "Install" button and wait for the app to install.
|
||||
|
||||
You can also install the app from the command line. umbrelOS provides a web terminal that can be accessed via Settings > Advanced Settings > Terminal > umbrelOS, or you can SSH into the device from your local machine via `ssh umbrel@umbrel.local` and use the same password you set for your umbrelOS device when you created your account.
|
||||
3\. We can now install our app through the homescreen or via the terminal with:
|
||||
|
||||
```sh
|
||||
umbreld client apps.install.mutate --appId btc-rpc-explorer
|
||||
```
|
||||
|
||||
That's it! The app should now be accessible at http://umbrel.local:3002
|
||||
The app should now be accessible at http://umbrel.local:3002
|
||||
|
||||
To uninstall the app, you can right-click on the app's icon on your homescreen and click on the "Uninstall" button. You can also uninstall the app from the command line with:
|
||||
4\. To uninstall:
|
||||
|
||||
```sh
|
||||
umbreld client apps.uninstall.mutate --appId btc-rpc-explorer
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> 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 (right-click on the app's icon on your homescreen and click on the "Restart" button). If any state is lost, it means that state should be mapped to a persistent volume.
|
||||
> A good way to test this is to restart the app with `umbreld client apps.restart.mutate --appId <app-id>`. 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.
|
||||
|
||||
@ -422,7 +407,7 @@ We're now ready to open a pull request on the main [getumbrel/umbrel-apps](https
|
||||
...
|
||||
|
||||
### 256x256 SVG icon
|
||||
_(Upload an icon with no rounded corners as it will be dynamically rounded with CSS.)_
|
||||
_(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.)_
|
||||
_We will help finalize this icon before the app goes live in the Umbrel App Store._
|
||||
|
||||
...
|
||||
@ -461,12 +446,12 @@ PROXY_AUTH_ADD: "false"
|
||||
```
|
||||
|
||||
##### Whitelist/blacklist
|
||||
Some apps host a user-facing UI at the root of their web application and then an API at e.g. `/api`. And in this case we would like `/` to be protected by Umbrel and `/api` protected by the apps existing/inbuilt API token system. This can be achieved by adding this env. var. to the `app_proxy` Docker Compose service:
|
||||
Some apps host a user facing at the root of their web application and then an API at e.g. `/api`. And in this case we would like `/` to be protected by Umbrel and `/api` protected by the apps existing/inbuilt API token system. This can be achieved by adding this env. var. to the `app_proxy` Docker Compose service:
|
||||
```
|
||||
PROXY_AUTH_WHITELIST: "/api/*"
|
||||
```
|
||||
|
||||
Another example could be that the root of the web application (`/`) should be publicly accessible but the admin section be protected by Umbrel. This can be achieved by adding these env. vars. to the `app_proxy` Docker Compose service:
|
||||
Another example could be that the root of the web application (`/`) should be publically accessible but the admin section be protected by Umbrel. This can be achieved by adding these env. vars. to the `app_proxy` Docker Compose service:
|
||||
```
|
||||
PROXY_AUTH_WHITELIST: "*"
|
||||
PROXY_AUTH_BLACKLIST: "/admin/*"
|
||||
@ -482,4 +467,4 @@ PROXY_AUTH_BLACKLIST: "/admin/*"
|
||||
|
||||
1. **I need help with something else**
|
||||
|
||||
Feel free to open an [issue](https://github.com/getumbrel/umbrel-apps/issues) on this GitHub repository.
|
||||
You can open an [issue](https://github.com/getumbrel/umbrel-apps/issues) on GitHub or get in touch with [@mayankchhabra](https://t.me/mayankchhabra), [@lukechilds](https://t.me/lukechilds), or [@nmfretz](https://t.me/nmfretz) on Telegram.
|
||||
|
||||
@ -1,63 +0,0 @@
|
||||
version: '3.0'
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: activepieces_app_1
|
||||
APP_PORT: 80
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
app:
|
||||
## does not work rootless as of yet
|
||||
#user: "1000:1000"
|
||||
image: ghcr.io/activepieces/activepieces:0.81.4@sha256:08229ab5e6374ace2ef9471eab0f519d9af1e7eed6dbaa989a5863387591544d
|
||||
restart: on-failure
|
||||
environment:
|
||||
AP_ENGINE_EXECUTABLE_PATH: dist/packages/engine/main.js
|
||||
AP_API_KEY: ${APP_PASSWORD}
|
||||
AP_ENCRYPTION_KEY: ${APP_AP_ENCRYPTION_KEY}
|
||||
AP_JWT_SECRET: ${APP_PASSWORD}
|
||||
AP_ENVIRONMENT: prod
|
||||
AP_FRONTEND_URL: http://${DEVICE_DOMAIN_NAME}:8146
|
||||
AP_WEBHOOK_TIMEOUT_SECONDS: 30
|
||||
AP_TRIGGER_DEFAULT_POLL_INTERVAL: 5
|
||||
AP_POSTGRES_DATABASE: activepieces
|
||||
AP_POSTGRES_HOST: activepieces_db_1
|
||||
AP_POSTGRES_PORT: 5432
|
||||
AP_POSTGRES_USERNAME: activepieces
|
||||
AP_POSTGRES_PASSWORD: activepieces
|
||||
AP_EXECUTION_MODE: UNSANDBOXED
|
||||
AP_REDIS_HOST: activepieces_redis_1
|
||||
AP_REDIS_PORT: 6379
|
||||
AP_FLOW_TIMEOUT_SECONDS: 600
|
||||
AP_TELEMETRY_ENABLED: "true"
|
||||
AP_TEMPLATES_SOURCE_URL: "https://cloud.activepieces.com/api/v1/flow-templates"
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/app/cache:/usr/src/app/cache
|
||||
|
||||
db:
|
||||
user: "1000:1000"
|
||||
image: postgres:17.4@sha256:4aed4b0525233308fc5de1b8d47f92326460d598dc5f004d14b41f183360b4e9
|
||||
restart: on-failure
|
||||
environment:
|
||||
POSTGRES_DB: activepieces
|
||||
POSTGRES_PASSWORD: activepieces
|
||||
POSTGRES_USER: activepieces
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U activepieces"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
redis:
|
||||
user: "1000:1000"
|
||||
image: redis:7.4.3@sha256:ee8ec723c831b815c3e2f2c6fbd1c145c68d1c04ba284f044ec1434fbca0fee8
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/redis:/data
|
||||
@ -1 +0,0 @@
|
||||
export APP_AP_ENCRYPTION_KEY=$(derive_entropy "${app_entropy_identifier}-AP_ENCRYPTION_KEY" | head -c32)
|
||||
@ -1,58 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: activepieces
|
||||
category: automation
|
||||
name: Activepieces
|
||||
version: "0.81.4"
|
||||
releaseNotes: >-
|
||||
This release includes bug fixes and minor improvements:
|
||||
- Fixed project filter so admins no longer see other users' personal projects
|
||||
- Added a database migration rollback system for safer upgrades
|
||||
- Fixed retrying flows from a failed step that was getting stuck in queued status
|
||||
- Fixed audit logs missing the retried case
|
||||
- Fixed MCP OAuth registration returning incorrect numeric values
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/activepieces/activepieces/releases
|
||||
tagline: Your friendliest open source AI automation tool
|
||||
description: >-
|
||||
🤯 Welcome to Activepieces
|
||||
|
||||
|
||||
Your friendliest open source all-in-one automation tool, designed to be extensible through a type-safe pieces framework written in Typescript.
|
||||
|
||||
|
||||
|
||||
🔥 Why Activepieces is Different:
|
||||
- 💖 Loved by Everyone: Intuitive interface and great experience for both technical and non-technical users with a quick learning curve.
|
||||
|
||||
- 🌐 Open Ecosystem: All pieces are open source and available on npmjs.com, 60% of the pieces are contributed by the community.
|
||||
|
||||
- 🛠️ Pieces are written in Typescript: Pieces are npm packages in TypeScript, offering full customization with the best developer experience, including hot reloading for local piece development on your machine. 😎
|
||||
|
||||
- 🤖 AI-Ready: Native AI pieces let you experiment with various providers, or create your own agents using our AI SDK, and there is Copilot to help you build flows inside the builder.
|
||||
|
||||
- 🏢 Enterprise-Ready: Developers set up the tools, and anyone in the organization can use the no-code builder. Full customization from branding to control.
|
||||
|
||||
- 🔒 Secure by Design: Self-hosted and network-gapped for maximum security and control over your data.
|
||||
|
||||
- 🧠 Human in the Loop: Delay execution for a period of time or require approval. These are just pieces built on top of the piece framework, and you can build many pieces like that. 🎨
|
||||
|
||||
- 💻 Human Input Interfaces: Built-in support for human input triggers like "Chat Interface" 💬 and "Form Interface" 📝
|
||||
developer: Activepieces
|
||||
website: https://www.activepieces.com/
|
||||
dependencies: []
|
||||
repo: https://github.com/activepieces/activepieces/
|
||||
support: https://community.activepieces.com/
|
||||
port: 8146
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
backupIgnore:
|
||||
- data/app/cache/*
|
||||
- data/redis/*
|
||||
submitter: al-lac
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/2481
|
||||
@ -2,7 +2,7 @@ version: "3.7"
|
||||
|
||||
services:
|
||||
server:
|
||||
image: adguard/adguardhome:v0.107.73@sha256:7fbf01d73ecb7a32d2d9e6cef8bf88e64bd787889ca80a1e8bce30cd4c084442
|
||||
image: adguard/adguardhome:v0.107.52@sha256:d16cc7517ab96f843e7f8bf8826402dba98f5e6b175858920296243332391589
|
||||
# override the default command to set the web address to port 8095 to avoid conflict with Thunderhub
|
||||
# command from Dockerfile: https://github.com/AdguardTeam/AdGuardHome/blob/master/docker/Dockerfile
|
||||
command: ["--no-check-update", "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", "-w", "/opt/adguardhome/work", "--web-addr", "0.0.0.0:8095"]
|
||||
@ -12,4 +12,4 @@ services:
|
||||
- ${APP_DATA_DIR}/data/work:/opt/adguardhome/work
|
||||
- ${APP_DATA_DIR}/data/conf:/opt/adguardhome/conf
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_ADMIN
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: adguard-home
|
||||
category: networking
|
||||
name: AdGuard Home
|
||||
version: "0.107.73"
|
||||
version: "0.107.52"
|
||||
tagline: Network-wide software for blocking ads and tracking
|
||||
description: >-
|
||||
⚠️ See below for important set-up instructions.
|
||||
@ -19,11 +19,7 @@ description: >-
|
||||
This ensures that the app will not conflict with other apps from the Umbrel App Store, and that the app will be accessible
|
||||
when clicking on the app icon in the umbrelOS homescreen.
|
||||
releaseNotes: >-
|
||||
🚨 Critical Security Update: This hotfix addresses a critical vulnerability that could allow users to bypass authentication and gain full access to AdGuard Home without valid credentials. Updating immediately is strongly recommended.
|
||||
|
||||
|
||||
Security Fix:
|
||||
- Authentication is now enforced for requests upgraded from HTTP/2 Cleartext (H2C) to public resources
|
||||
In this release we have fixed a number of bugs, migrated our front-end to TypeScript and updated our front-end libraries to improve the quality of development and your user experience.
|
||||
|
||||
|
||||
Full release notes can be found at https://github.com/AdguardTeam/AdGuardHome/releases
|
||||
|
||||
@ -1,50 +0,0 @@
|
||||
version: '3.7'
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: adventurelog_web_1
|
||||
APP_PORT: 3000
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
web:
|
||||
image: ghcr.io/seanmorley15/adventurelog-frontend:v0.12.0@sha256:9aa653603eb1305f3c34c61bc99b40a394295aed3fecd8c9777a9e5c04c7155e
|
||||
restart: on-failure
|
||||
environment:
|
||||
PUBLIC_SERVER_URL: "http://adventurelogserver1:8000"
|
||||
ORIGIN: "http://${DEVICE_DOMAIN_NAME}:8015"
|
||||
BODY_SIZE_LIMIT: "Infinity"
|
||||
depends_on:
|
||||
- server
|
||||
db:
|
||||
image: ghcr.io/baosystems/postgis:15-3.5@sha256:ac619116c8ee81a386eb878956950d798b57c502985c12eb6e7be1598aa8d02f
|
||||
restart: on-failure
|
||||
environment:
|
||||
POSTGRES_DB: database
|
||||
POSTGRES_USER: adventure
|
||||
POSTGRES_PASSWORD: adventure
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data/
|
||||
|
||||
server:
|
||||
image: ghcr.io/seanmorley15/adventurelog-backend:v0.12.0@sha256:68725d6a3692333e0049607f32078e865e95ebdb8a13e0c5512a01ef766770ae
|
||||
container_name: adventurelogserver1 # needs to be set for the frontend to be able to connect (underline not supported)
|
||||
restart: on-failure
|
||||
environment:
|
||||
- PGHOST=adventurelog_db_1
|
||||
- PGDATABASE=database
|
||||
- PGUSER=adventure
|
||||
- PGPASSWORD=adventure
|
||||
- SECRET_KEY=adventure
|
||||
- DJANGO_ADMIN_USERNAME=admin
|
||||
- DJANGO_ADMIN_PASSWORD=admin
|
||||
- DJANGO_ADMIN_EMAIL=admin@example.com
|
||||
- PUBLIC_URL=http://${DEVICE_DOMAIN_NAME}:8016
|
||||
- CSRF_TRUSTED_ORIGINS=http://${DEVICE_DOMAIN_NAME}:8015
|
||||
- DEBUG=False
|
||||
- FRONTEND_URL=http://${DEVICE_DOMAIN_NAME}:8015
|
||||
ports:
|
||||
- '8016:80'
|
||||
depends_on:
|
||||
- db
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/app:/code/media/
|
||||
@ -1,9 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")"
|
||||
|
||||
# Remove .gitignore file from data directories if they exist
|
||||
|
||||
[ -f "${APP_DATA_DIR}/data/app/.gitignore" ] && rm -f "${APP_DATA_DIR}/data/app/.gitignore"
|
||||
[ -f "${APP_DATA_DIR}/data/db/.gitignore" ] && rm -f "${APP_DATA_DIR}/data/db/.gitignore"
|
||||
@ -1,43 +0,0 @@
|
||||
manifestVersion: 1.1
|
||||
id: adventurelog
|
||||
category: files
|
||||
name: AdventureLog
|
||||
version: "v0.12.0"
|
||||
tagline: Self-hostable travel tracker and trip planner
|
||||
description: >-
|
||||
🗺️ Starting from a simple idea of tracking travel locations (called adventures), AdventureLog has grown into a full-fledged travel companion. With AdventureLog, you can log your adventures, keep track of where you've been on the world map, plan your next trip collaboratively, and share your experiences with friends and family.
|
||||
|
||||
|
||||
AdventureLog was created to solve a problem: the lack of a modern, open-source, user-friendly travel companion. Many existing travel apps are either too complex, too expensive, or too closed-off to be useful for the average traveler. AdventureLog aims to be the opposite: simple, beautiful, and open to everyone.
|
||||
releaseNotes: >-
|
||||
AdventureLog v0.12.0 is a major update focused on trip planning, itineraries, and smarter travel tools. Key highlights include:
|
||||
|
||||
|
||||
- Completely redesigned itinerary system with drag & drop, reordering, and map-pin-based planning
|
||||
- Day-aware planning with day of week shown throughout collection and itinerary views
|
||||
- Notes and checklists for trip-wide items, viewable and tickable from the itinerary
|
||||
- New budgeting tools with cost fields for locations, transportations, and lodgings, plus currency settings
|
||||
- GPX file upload support for transportation entries
|
||||
- Improved OIDC authentication with auto-redirect, email-based account linking, and smoother flows
|
||||
- Collection UI redesign with statuses, primary photo selection, and improved sharing
|
||||
- New recommendation toggles and smarter city/location detection
|
||||
- Itinerary items now included in backup and restore
|
||||
- Various bug fixes for timezones, calendars, location editing, and UI rendering
|
||||
|
||||
|
||||
Full release notes can be found at https://github.com/seanmorley15/AdventureLog/releases/
|
||||
developer: Sean Morley
|
||||
website: https://adventurelog.app/
|
||||
repo: https://github.com/seanmorley15/AdventureLog
|
||||
support: https://github.com/seanmorley15/AdventureLog/issues
|
||||
port: 8015
|
||||
submitter: Mateo Silguero
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/2222
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
@ -6,34 +6,19 @@ services:
|
||||
APP_PORT: 3010
|
||||
|
||||
web:
|
||||
image: ghcr.io/toeverything/affine:0.26.3@sha256:725aaceb0ed94d4b832ae6ef9414503291c9b2b4f60bd6f3c7eef571b6149add
|
||||
restart: on-failure
|
||||
environment:
|
||||
- AFFINE_CONFIG_PATH=/root/.affine/config
|
||||
- REDIS_SERVER_HOST=affine_redis_1
|
||||
- DATABASE_URL=postgres://affine:affine@affine_db_1:5432/affine
|
||||
- NODE_ENV=production
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/root/.affine/config
|
||||
- ${APP_DATA_DIR}/data/storage/blob:/root/.affine/storage
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
db:
|
||||
condition: service_healthy
|
||||
migration:
|
||||
condition: service_completed_successfully
|
||||
|
||||
migration:
|
||||
image: ghcr.io/toeverything/affine:0.26.3@sha256:725aaceb0ed94d4b832ae6ef9414503291c9b2b4f60bd6f3c7eef571b6149add
|
||||
image: ghcr.io/toeverything/affine-graphql:stable-06890d6@sha256:e80b83a14f11cdaf5388d156cf4bfb1933c39fa8e3f85d7b2874ac4cec72e625
|
||||
restart: on-failure
|
||||
init: true
|
||||
command:
|
||||
['sh', '-c', 'node ./scripts/self-host-predeploy']
|
||||
['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js']
|
||||
environment:
|
||||
- NODE_OPTIONS="--import=./scripts/register.js"
|
||||
- AFFINE_CONFIG_PATH=/root/.affine/config
|
||||
- REDIS_SERVER_HOST=affine_redis_1
|
||||
- DATABASE_URL=postgres://affine:affine@affine_db_1:5432/affine
|
||||
- DATABASE_URL=postgres://affine:affine@db:5432/affine
|
||||
- NODE_ENV=production
|
||||
- AFFINE_ADMIN_EMAIL=admin@umbrel.local
|
||||
- AFFINE_ADMIN_PASSWORD=$APP_PASSWORD
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/root/.affine/config
|
||||
- ${APP_DATA_DIR}/data/storage/blob:/root/.affine/storage
|
||||
@ -68,4 +53,4 @@ services:
|
||||
test: ['CMD-SHELL', 'pg_isready -U affine']
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
retries: 5
|
||||
@ -3,28 +3,26 @@ id: affine
|
||||
name: Affine
|
||||
tagline: Open source alternative to Notion, Miro, and Airtable
|
||||
category: files
|
||||
version: "0.26.3"
|
||||
version: "0.14.2"
|
||||
port: 3013
|
||||
description: >-
|
||||
A privacy-focused, local-first, open-source, and ready-to-use alternative for Notion & Miro.
|
||||
One hyper-fused platform for wildly creative minds.
|
||||
|
||||
|
||||
To Shape, not to adapt. Tools can impact your lifestyle. AFFiNE is built for individual & teams who care their data, who refuse vendor lock-in, and who want to have control over their essential tools.
|
||||
|
||||
|
||||
🛠️ SET-UP INSTRUCTIONS
|
||||
|
||||
In order to save your data, you need to sign in to your self-hosted Affine instance:
|
||||
|
||||
|
||||
1. When you first open Affine, it will walk you through setting up an admin account.
|
||||
1. In the Affine app select the "Sign up/ Sign in" to sync with your self-hosted instance.
|
||||
|
||||
2. After setting up your admin account, close the browser window and open up the Affine app again from the umbrelOS homescreen.
|
||||
|
||||
3. In the Affine app select the Demo Workspace from the sidebar and then select "Create cloud workspace"
|
||||
2. Enter the email and password credentials that are provided when you installed the app. To find these again, right-click on the Affine app icon
|
||||
on the umbrelOS homescreen and select "Show default credentials".
|
||||
|
||||
4. Follow the steps to create your self-hosted cloud workspace. You are now ready to use Affine with your self-hosted instance!
|
||||
|
||||
3. Follow the steps to create your self-hosted cloud workspace. You are now ready to use Affine with your self-hosted instance!
|
||||
developer: toeverything
|
||||
website: https://affine.pro
|
||||
submitter: Jasper
|
||||
@ -35,17 +33,8 @@ gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
releaseNotes: >-
|
||||
Key highlights include:
|
||||
- Improved edgeless performance during dragging and zooming
|
||||
- Improved key mapping for non-U.S. keyboard layouts
|
||||
- Improved database filter, callout default style, and dark mode visibility
|
||||
- Improved S3 provider compatibility for self-hosted setups
|
||||
- Improved admin panel with a better dashboard and settings interface
|
||||
- Fixed an issue where history could be created repeatedly during concurrent operations
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/toeverything/AFFiNE/releases
|
||||
releaseNotes: ""
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultUsername: "admin@umbrel.local"
|
||||
deterministicPassword: true
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1,41 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: akaunting_app_1
|
||||
APP_PORT: 80
|
||||
|
||||
app:
|
||||
image: akaunting/akaunting:3.1.21@sha256:918bbc77981e5b96ab6aa6838491cfa7c98cb4ee7bbf9532ee083e7e66d04255
|
||||
# does not work rootless
|
||||
#user: "1000:1000"
|
||||
restart: on-failure
|
||||
environment:
|
||||
AKAUNTING_SETUP: "true"
|
||||
LOCALE: en-US
|
||||
DB_HOST: akaunting_db_1
|
||||
DB_PORT: 3306
|
||||
DB_NAME: akaunting
|
||||
DB_USERNAME: admin
|
||||
DB_PASSWORD: akaunting_password
|
||||
DB_PREFIX: asd_
|
||||
COMPANY_NAME: "My Company"
|
||||
COMPANY_EMAIL: my@company.com
|
||||
ADMIN_EMAIL: umbrel@umbrel.local
|
||||
ADMIN_PASSWORD: ${APP_PASSWORD}
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
db:
|
||||
image: mariadb:11.8.2@sha256:2bcbaec92bd9d4f6591bc8103d3a8e6d0512ee2235506e47a2e129d190444405
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
environment:
|
||||
MYSQL_DATABASE: akaunting
|
||||
MYSQL_USER: admin
|
||||
MYSQL_PASSWORD: akaunting_password
|
||||
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/db:/var/lib/mysql
|
||||
@ -1,67 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: akaunting
|
||||
name: Akaunting
|
||||
tagline: An intuitive accounting solution for small businesses and freelancers
|
||||
category: finance
|
||||
version: "3.1.21"
|
||||
port: 8773
|
||||
description: >-
|
||||
📊 Akaunting is a powerful open-source accounting software that simplifies financial management for small businesses, freelancers, and entrepreneurs. It offers an all-in-one solution to manage income, expenses, invoices, and financial reports, making it easier to maintain an organized and transparent overview of your finances. With its intuitive design and flexible features, Akaunting helps you save time on administrative tasks while improving accuracy and efficiency.
|
||||
|
||||
|
||||
From creating professional invoices to managing customers, vendors, and recurring payments, Akaunting is built to streamline your day-to-day accounting operations. It also includes robust features like multi-currency support for international transactions, online payment integration for faster cash flow, and inventory tracking to keep stock and sales aligned. For those needing even more functionality, its built-in App Store offers a wide range of add-ons to extend the software according to your needs.
|
||||
|
||||
|
||||
ℹ To access most features of the app, you'll need an API key. You can create one on the developer's website: https://akaunting.com
|
||||
|
||||
|
||||
Key Features:
|
||||
|
||||
|
||||
💰 Invoicing - Create, customize, and send professional invoices with ease.
|
||||
|
||||
|
||||
📥 Expense Tracking - Record, categorize, and monitor expenses to maintain full control over your budget.
|
||||
|
||||
|
||||
📊 Financial Reports - Generate detailed profit & loss statements, balance sheets, and other insights to understand your financial status.
|
||||
|
||||
|
||||
👥 Customer & Vendor Management - Keep all contacts and their transaction history organized and easily accessible.
|
||||
|
||||
|
||||
💳 Online Payments - Accept client payments via PayPal, Stripe, and other popular gateways.
|
||||
|
||||
|
||||
🌍 Multi-Currency Support - Handle transactions in multiple currencies with automatic exchange rate updates.
|
||||
|
||||
|
||||
🧾 Recurring Billing - Automate recurring invoices and payments for subscriptions or long-term contracts.
|
||||
|
||||
|
||||
📦 Inventory Management - Track product stock, sales, and purchases in real time.
|
||||
|
||||
|
||||
🔧 App Store Extensions - Expand functionality with add-ons like payroll, advanced reports, or project management.
|
||||
developer: Akaunting Inc.
|
||||
website: https://akaunting.com/
|
||||
submitter: dennysubke
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/3290
|
||||
repo: https://github.com/akaunting/akaunting
|
||||
support: https://github.com/akaunting/akaunting/issues
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
- 5.jpg
|
||||
releaseNotes: >-
|
||||
This update includes an important fix:
|
||||
- Fixed cache module version issue
|
||||
|
||||
|
||||
Full release notes can be found at https://github.com/akaunting/akaunting/releases
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: umbrel@umbrel.local
|
||||
deterministicPassword: true
|
||||
@ -1,15 +1,11 @@
|
||||
manifestVersion: 1.2
|
||||
manifestVersion: 1
|
||||
id: alby-nostr-wallet-connect
|
||||
name: Nostr Wallet Connect
|
||||
tagline: The power of the zaps at the tip of your fingers
|
||||
category: bitcoin
|
||||
category: finance
|
||||
version: "0.4.2"
|
||||
port: 58000
|
||||
description: >-
|
||||
⚠️ Deprecation notice: This app has been deprecated by the project developers and therefore will no longer receive any app updates.
|
||||
The Alby Hub app on the app store is the evolution of this app from the same developers and should be used instead.
|
||||
|
||||
|
||||
Connect your LND node over Nostr to zap directly from within supported apps like Damus & Amethyst.
|
||||
|
||||
|
||||
@ -37,4 +33,3 @@ dependencies:
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
disabled: true
|
||||
|
||||
@ -1,22 +0,0 @@
|
||||
version: "3.7"
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: albyhub_server_1
|
||||
APP_PORT: 8080
|
||||
server:
|
||||
image: ghcr.io/getalby/hub:v1.21.6@sha256:dc05806a3384f57ded8aca2ba58d47ec93a0aeb213539b5faf32e7a3c71b5c32
|
||||
user: 1000:1000
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/data
|
||||
- ${UMBREL_ROOT}/app-data/lightning/data/lnd:/lnd:ro
|
||||
environment:
|
||||
LN_BACKEND_TYPE: ${APP_ALBYHUB_LN_BACKEND:-LDK}
|
||||
LND_ADDRESS: ${APP_ALBYHUB_LND_ADDRESS}
|
||||
LND_CERT_FILE: ${APP_ALBYHUB_LND_CERT_FILE}
|
||||
LND_MACAROON_FILE: ${APP_ALBYHUB_LND_MACAROON_FILE}
|
||||
WORK_DIR: "/data/albyhub"
|
||||
COOKIE_SECRET: ${APP_SEED}
|
||||
LOG_EVENTS: "true"
|
||||
restart: on-failure
|
||||
stop_grace_period: 3m
|
||||
@ -1,14 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if Lightning Node app is installed and export required variables if so
|
||||
installed_apps=$("${UMBREL_ROOT}/scripts/app" ls-installed)
|
||||
|
||||
if echo "$installed_apps" | grep --quiet -x 'lightning'; then
|
||||
export APP_ALBYHUB_LN_BACKEND="LND"
|
||||
export APP_ALBYHUB_LND_ADDRESS="10.21.21.9:10009"
|
||||
export APP_ALBYHUB_LND_CERT_FILE="/lnd/tls.cert"
|
||||
# Without `lightning` as a dependency, we need to hardcode the LND macaroon file path
|
||||
# This means Alby Hub currently only works with mainnet
|
||||
# When optional dependencies are supported in umbrelOS we can revisit this
|
||||
export APP_ALBYHUB_LND_MACAROON_FILE="/lnd/data/chain/bitcoin/mainnet/admin.macaroon"
|
||||
fi
|
||||
@ -1,57 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: albyhub
|
||||
name: Alby Hub ✨
|
||||
tagline: Self-custodial Lightning wallet with integrated node and app connections
|
||||
category: bitcoin
|
||||
version: "1.21.6"
|
||||
port: 59000
|
||||
description: >-
|
||||
Alby Hub is an open-source, self-custodial Bitcoin Lightning wallet, with the easiest-to-use Lightning Network node for everyone.
|
||||
Whether you're an individual, creator, or developer, Alby Hub is your centre for seamless Bitcoin payments.
|
||||
|
||||
|
||||
Effortlessly connect to a variety of apps like the Alby Browser Extension or Alby Go mobile app, create sub-wallets for family and friends, and take full control of your funds—all within an intuitive interface and developer-ready APIs.
|
||||
|
||||
|
||||
🛠️ SET-UP INSTRUCTIONS
|
||||
|
||||
|
||||
Alby Hub can be set up in two ways:
|
||||
|
||||
1) As a standalone app without Lightning Node (LND) installed: On install, choose to "Get Started (LDK)" to start using the embedded LDK based Lightning node.
|
||||
|
||||
2) Connected to the Lightning Node app (LND) running on your Umbrel: Make sure to first install and set up Lightning Node on your Umbrel. Then install Alby Hub, which will automatically configure itself to connect to the Lightning Node app running on your Umbrel.
|
||||
|
||||
|
||||
USEFUL LINKS
|
||||
- Feature requests, bug reports, feedback board - https://feedback.getalby.com/-alby-hub-request-a-feature
|
||||
- Community of users and developers - https://discord.getalby.com/
|
||||
- List of apps and projects that use NWC protocol - https://github.com/getAlby/awesome-nwc
|
||||
developer: Alby
|
||||
website: https://albyhub.com
|
||||
submitter: Alby
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/1409
|
||||
repo: https://github.com/getAlby/hub
|
||||
support: https://support.getalby.com
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
releaseNotes: >-
|
||||
Key changes in this release:
|
||||
- Updated Boltz dependency for improved swap functionality
|
||||
- Swap-outs (Lightning to on-chain) now only require 1 on-chain confirmation instead of 2
|
||||
- Added Alby's referral program to the earn page
|
||||
- Added Castamatic to the app store
|
||||
- Increased default Alby Account budget from 150k to 250k sats
|
||||
- Removed Bitcoin Maxi Mode
|
||||
- Added a 404 page
|
||||
- Various bugfixes and minor improvements
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/getAlby/hub/releases
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
@ -1,16 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: appsmith_app_1
|
||||
APP_PORT: 80
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
app:
|
||||
image: appsmith/appsmith-ce:v1.98@sha256:533d5bcb7a1715b967e9cfa4bd2eccfc081349261a44453d03d775d86cc6df27
|
||||
environment:
|
||||
APPSMITH_ENCRYPTION_PASSWORD: ${APP_PASSWORD}
|
||||
APPSMITH_ENCRYPTION_SALT: ${APP_PASSWORD}
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/app:/appsmith-stacks
|
||||
@ -1,49 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: appsmith
|
||||
name: Appsmith
|
||||
tagline: Platform to build admin panels, internal tools, and dashboards
|
||||
category: developer
|
||||
version: "v1.98"
|
||||
port: 8654
|
||||
description: >-
|
||||
Appsmith is an open-source, low-code development platform designed to help developers and teams build internal tools and business applications quickly and efficiently. Whether you need dashboards, admin panels, database GUIs, or approval workflows, Appsmith provides a powerful yet flexible environment to create robust applications without the overhead of traditional software development.
|
||||
|
||||
|
||||
At its core, Appsmith offers a drag-and-drop interface featuring over 45 customizable widgets, seamless integration with more than 18 data sources—including PostgreSQL, MongoDB, REST APIs, and GraphQL—and a built-in JavaScript editor for advanced logic and interactivity. This combination empowers both developers and non-technical users to build dynamic, data-driven applications with ease.
|
||||
|
||||
|
||||
Appsmith supports Git-based version control, allowing teams to manage application changes effectively. Its architecture embraces a model-view-controller (MVC) pattern, promoting clean code organization and scalability. Additionally, Appsmith offers both cloud-hosted and self-hosted deployment options, providing flexibility and control over your applications.
|
||||
|
||||
|
||||
Trusted by over 10,000 teams across 150 countries—including organizations like Dropbox, Twilio, and GSK—Appsmith is a proven solution for building internal tools that enhance productivity and streamline operations.
|
||||
|
||||
|
||||
Whether you're a startup looking to accelerate development or an enterprise seeking customizable internal solutions, Appsmith offers the tools and flexibility to meet your needs.
|
||||
developer: Appsmith
|
||||
website: https://www.appsmith.com/
|
||||
submitter: al-lac
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/2634
|
||||
repo: https://github.com/appsmithorg/appsmith
|
||||
support: https://discord.com/invite/rBTTVJp
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
dependencies: []
|
||||
releaseNotes: >-
|
||||
This release introduces new features and security fixes:
|
||||
- Added TLS (SSL mode) support for the Redis datasource
|
||||
- Fixed a security issue allowing unauthorized deletion of application snapshots
|
||||
- Fixed unauthenticated disclosure of instance metadata
|
||||
- Fixed SQL injection vulnerabilities in filter and sort operations
|
||||
- Restricted draft action execution to editors only
|
||||
- Required fields now display a red asterisk for clarity
|
||||
- Increased API timeout for consolidated API calls from 20 seconds to 60 seconds
|
||||
- Various other bug fixes and stability improvements
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/appsmithorg/appsmith/releases
|
||||
path: ""
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1,43 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: arcane_arcane_1
|
||||
APP_PORT: 3552
|
||||
|
||||
docker:
|
||||
image: docker:27.2.0-dind@sha256:f9f72ad901a78f27be922b2d320bbc263174f12919c1b37e6a01f828fa904565
|
||||
privileged: true
|
||||
network_mode: host
|
||||
stop_grace_period: 1m
|
||||
restart: on-failure
|
||||
environment:
|
||||
DOCKER_ENSURE_BRIDGE: "dind0:10.32.0.1/16"
|
||||
entrypoint: /entrypoint.sh
|
||||
command: >
|
||||
dockerd
|
||||
--bridge dind0
|
||||
--data-root /data/data
|
||||
--exec-root /data/exec
|
||||
--host unix:///data/docker.sock
|
||||
--pidfile /data/docker.pid
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/entrypoint.sh:/entrypoint.sh
|
||||
- ${APP_DATA_DIR}/data/docker:/data
|
||||
|
||||
arcane:
|
||||
image: ghcr.io/getarcaneapp/arcane:v1.17.4@sha256:97492274e59c9f822a9c49d67981912b81919c0edad6094e496fa3507348082e
|
||||
depends_on:
|
||||
- docker
|
||||
restart: on-failure
|
||||
environment:
|
||||
APP_URL: http://${DEVICE_DOMAIN_NAME}:3552
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
ENCRYPTION_KEY: ${APP_PASSWORD}
|
||||
JWT_SECRET: ${APP_PASSWORD}
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/app_data:/app/data
|
||||
- ${APP_DATA_DIR}/data/projects:/app/data/projects
|
||||
- ${APP_DATA_DIR}/data/docker:/var/run
|
||||
@ -1,38 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
pidfile="/var/run/docker.pid"
|
||||
if [[ -f "${pidfile}" ]]
|
||||
then
|
||||
rm -f "${pidfile}"
|
||||
fi
|
||||
|
||||
for command in iptables iptables-restore iptables-restore-translate iptables-save iptables-translate
|
||||
do
|
||||
ln -sf /sbin/xtables-nft-multi /sbin/$command
|
||||
done
|
||||
|
||||
ensure_bridge_exists() {
|
||||
local name="${1}"
|
||||
local ip_range="${2}"
|
||||
if ip link show "${name}" &>/dev/null
|
||||
then
|
||||
echo "Bridge '${name}' already exists. Skipping creation."
|
||||
ip addr show "${name}"
|
||||
return
|
||||
fi
|
||||
echo "Bridge '${name}' does not exist. Creating..."
|
||||
ip link add "${name}" type bridge
|
||||
ip addr add "${ip_range}" dev "${name}"
|
||||
ip link set "${name}" up
|
||||
echo "Bridge '${name}' is now up with IP range '${ip_range}'."
|
||||
ip addr show "${name}"
|
||||
}
|
||||
|
||||
if [[ "${DOCKER_ENSURE_BRIDGE}" != "" ]]
|
||||
then
|
||||
bridge="${DOCKER_ENSURE_BRIDGE%%:*}"
|
||||
ip_range="${DOCKER_ENSURE_BRIDGE#*:}"
|
||||
ensure_bridge_exists "${bridge}" "${ip_range}"
|
||||
fi
|
||||
|
||||
exec dockerd-entrypoint.sh $@
|
||||
@ -1,7 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data"
|
||||
|
||||
# Remove stale docker.pid file that can cause issues after power outages or crashes
|
||||
rm -f "${APP_DATA_DIR}/docker/docker.pid"
|
||||
@ -1,84 +0,0 @@
|
||||
manifestVersion: 1.1
|
||||
id: arcane
|
||||
category: developer
|
||||
name: Arcane
|
||||
version: "1.17.4"
|
||||
tagline: An easy and modern Docker management platform
|
||||
description: >-
|
||||
⚠️ Make sure to only use named Docker volumes for your containers and projects. Data in bind-mounted volumes will be lost when the Arcane app is restarted or updated.
|
||||
|
||||
|
||||
⚠️ Watch out for port conflicts between your custom Docker containers and your umbrelOS apps.
|
||||
|
||||
|
||||
Arcane is a powerful and modern container management platform designed to simplify the way developers interact with Docker environments. It provides a seamless and visually appealing interface that brings all aspects of container management together in one place. Users can create, start, stop, and inspect containers, explore networks, manage images, and handle volumes with precision and control.
|
||||
|
||||
|
||||
Beyond basic management, Arcane enhances productivity by offering integrated tools that developers typically rely on during their daily workflows. Its built-in terminal allows direct interaction with running containers, while the embedded code editor enables quick configuration or script adjustments without switching to external applications. Real-time system insights and detailed logging give users a clear view of their infrastructure's performance and resource usage.
|
||||
|
||||
|
||||
The platform is designed to bridge the gap between simplicity and advanced control. It combines a clean, modern design with powerful backend capabilities, making it equally suitable for developers experimenting locally and professionals managing larger setups. With Arcane, managing containers feels more like using a well-crafted development environment than an administrative dashboard, allowing users to focus on building and running applications instead of dealing with complex Docker commands.
|
||||
|
||||
|
||||
🧩 Arcane on Umbrel is designed for advanced users who want complete control over their containers. Follow these recommendations to ensure a reliable and stable experience.
|
||||
|
||||
|
||||
1. Persistent data: Always use named Docker volumes for your containers and projects. Any data stored in bind mounts will be lost when the Arcane app is updated or restarted.
|
||||
|
||||
|
||||
2. Port usage: Be mindful of port conflicts between your containers, Umbrel system services, and other installed or future apps. Assign unique port numbers to prevent conflicts.
|
||||
|
||||
|
||||
3. Restart behavior: Configure your containers with the restart policy set to unless stopped or always. This ensures they automatically restart after Arcane restarts or updates.
|
||||
|
||||
|
||||
4. Web access: You can access any container that exposes a web interface at `umbrel.local:PORT_NUMBER`. For example, if your app runs on port 5050, open `http://umbrel.local:5050` in your browser.
|
||||
website: https://getarcane.app/
|
||||
dependencies: []
|
||||
repo: https://github.com/getarcaneapp/arcane
|
||||
support: https://github.com/getarcaneapp/arcane/issues
|
||||
port: 3552
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
- 5.jpg
|
||||
path: ""
|
||||
defaultUsername: "arcane"
|
||||
defaultPassword: "arcane-admin"
|
||||
releaseNotes: >-
|
||||
New features in this release:
|
||||
- Added ECR (Amazon Elastic Container Registry) support
|
||||
- Added a per-container redeploy button
|
||||
- Added support for symlinked project directories
|
||||
- Added static admin API key support
|
||||
- Added additional theme variants
|
||||
- Added an updated log viewer with improved streaming
|
||||
- Added Docker Swarm support
|
||||
- Added network ports and topology views
|
||||
- Added per-container auto-update toggle
|
||||
- Added inbound webhook support
|
||||
- Added Git Sync folder support for GitOps workflows
|
||||
- Added compose-aware update logic for projects
|
||||
|
||||
|
||||
Bug fixes in this release:
|
||||
- Fixed truncation of long image references in the container table
|
||||
- Fixed project icons not loading when using YAML or env aliases
|
||||
- Fixed project max depth not working for filesystem discovery
|
||||
- Fixed the "Update Projects" button to only update project containers
|
||||
- Fixed per-container redeploy to use the compose-aware path
|
||||
- Fixed webhook URL query parameters being lost in generic notifications
|
||||
- Fixed unnecessary container recreation when the image is already up to date
|
||||
- Fixed various Svelte reactivity issues in project editors
|
||||
- Fixed notifications not being sent on single container updates
|
||||
- Fixed light mode contrast for CPU and memory monitor stats
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/getarcaneapp/arcane/releases
|
||||
permissions:
|
||||
- GPU
|
||||
developer: Arcane
|
||||
submitter: dennysubke
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/4017
|
||||
@ -8,7 +8,7 @@ services:
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
web:
|
||||
image: ghcr.io/advplyr/audiobookshelf:2.33.1@sha256:a4a5841bba093d81e5f4ad1eaedb4da3fda6dbb2528c552349da50ad1f7ae708
|
||||
image: ghcr.io/advplyr/audiobookshelf:2.11.0@sha256:725c287ac1b56f8115dfc7fca75d8490976af59466f893fbf344711bd117f8cb
|
||||
user: 1000:1000
|
||||
init: true
|
||||
restart: on-failure
|
||||
@ -24,4 +24,4 @@ services:
|
||||
- ${APP_DATA_DIR}/data/config:/home/node/config
|
||||
- ${APP_DATA_DIR}/data/metadata:/home/node/metadata
|
||||
- ${UMBREL_ROOT}/data/storage/downloads/audiobooks:/audiobooks
|
||||
- ${UMBREL_ROOT}/data/storage/downloads/podcasts:/podcasts
|
||||
- ${UMBREL_ROOT}/data/storage/downloads/podcasts:/podcasts
|
||||
@ -3,7 +3,7 @@ id: audiobookshelf
|
||||
name: Audiobookshelf
|
||||
tagline: Audiobook and podcast server
|
||||
category: media
|
||||
version: "2.33.1"
|
||||
version: "2.11.0"
|
||||
port: 13378
|
||||
description: >-
|
||||
Features:
|
||||
@ -26,7 +26,7 @@ description: >-
|
||||
- Backup your metadata + automated daily backups
|
||||
|
||||
- Progressive Web App (PWA)
|
||||
|
||||
|
||||
- Chromecast support on the web app and android app
|
||||
|
||||
- Fetch metadata and cover art from several sources
|
||||
@ -43,8 +43,8 @@ description: >-
|
||||
Android App (beta)
|
||||
|
||||
- Try it out on the Google Play Store
|
||||
|
||||
|
||||
|
||||
|
||||
iOS App (early beta)
|
||||
|
||||
- Available using Test Flight: https://testflight.apple.com/join/wiic7QIW
|
||||
@ -61,10 +61,72 @@ path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: >-
|
||||
Bug fixes:
|
||||
- Fixed API keys not respecting user enabled/disabled flag
|
||||
- Fixed podcast episode updates to sanitize HTML in subtitles
|
||||
- Fixed playlist and collection endpoints to strip HTML tags from names
|
||||
This release brings audiobookshelf from version 2.9.0 to 2.11.0.
|
||||
|
||||
|
||||
Added
|
||||
|
||||
- Create book share links with expiration (admin users only)
|
||||
|
||||
- Email settings option to enable/disable rejecting unauthorized certificates
|
||||
|
||||
- Support for disabling SSRF request filter with env variable
|
||||
|
||||
- Support for custom backup path on backups config page or with env variable
|
||||
|
||||
- Epub ereader setting for font boldness
|
||||
|
||||
- Finnish translations
|
||||
|
||||
|
||||
Fixed
|
||||
|
||||
- Casting podcast episodes
|
||||
|
||||
- Match all authors hitting rate limit
|
||||
|
||||
- Scheduled library scans using old copy of library
|
||||
|
||||
- Changing author name in edit author modal not updating metadata JSON files
|
||||
|
||||
- AB merge tool not working in Debian pkg due to ffmpeg v7
|
||||
|
||||
- Download file ssrfFilter URL
|
||||
|
||||
- Overdrive mediamarkers incorrect timestamp parsing
|
||||
|
||||
- Unhandled exception syncing user progress
|
||||
|
||||
- Server crash from library scanner race condition
|
||||
|
||||
- UI/UX: PDF reader flickering
|
||||
|
||||
- UI/UX: Audio player long author name overflowing
|
||||
|
||||
- UI/UX: Audio player long chapter name overflowing
|
||||
|
||||
|
||||
Changed
|
||||
|
||||
- Replace Tone with Ffmpeg for embedding metadata
|
||||
|
||||
- Playback sessions are closed after 36 hours of inactivity
|
||||
|
||||
- User agent string for podcast RSS feed and file download requests
|
||||
|
||||
- Increased time delay between when watcher detects a file and when it scans the folder
|
||||
|
||||
- Prevent editing backup path if it is set using env variable
|
||||
|
||||
- UI/UX: Show publish date in changelog modal
|
||||
|
||||
- UI/UX: Chapters table "End" column changed to a "Duration" column
|
||||
|
||||
- UI/UX: Bookshelf refactor for consistent scaling
|
||||
|
||||
- UI/UX: Cleaner error page for 404s
|
||||
|
||||
- More strings translated
|
||||
|
||||
|
||||
Full release notes can be found at https://github.com/advplyr/audiobookshelf/releases
|
||||
|
||||
@ -8,9 +8,9 @@ services:
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
web:
|
||||
image: ghcr.io/autobrr/autobrr:v1.76.0@sha256:f0f4d73fcd77700b1c98233562cd94a78b9bf685a7594a0aac4f8a9436b5044d
|
||||
image: ghcr.io/autobrr/autobrr:v1.43.0@sha256:e26879a64c2251bd1ab42822b4a36f5acc8add8a4d4ec536f634d04745ae7455
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
user: "1000:1000"
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/config
|
||||
- ${APP_DATA_DIR}/data:/config
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: autobrr
|
||||
category: media
|
||||
name: autobrr
|
||||
version: "1.76.0"
|
||||
version: "1.43.0"
|
||||
tagline: Modern, easy to use download automation for torrents and usenet
|
||||
description: >-
|
||||
autobrr is the modern download automation tool for torrents and usenet.
|
||||
@ -17,21 +17,22 @@ description: >-
|
||||
|
||||
It then sends that torrent file to a download client of your choice. A download client can be anything from qBittorrent, Deluge, Radarr, Sonarr, watch folder, and more.
|
||||
releaseNotes: >-
|
||||
This release includes new features and improvements:
|
||||
- Added PKCE support to OIDC authentication
|
||||
- Added NZB download type support for RSS feeds
|
||||
- Added InfinityHD indexer support
|
||||
- Added Retro Movies Club indexer support
|
||||
- Added Samaritano indexer support
|
||||
- Added SeedPool (Music) indexer support
|
||||
- Added support for `/sleep` in IRC connect commands
|
||||
- Added French, German, Russian, and Spanish language support
|
||||
- Added internationalization (i18n) support with English and Simplified Chinese locales
|
||||
New Features:
|
||||
|
||||
- Support for daily shows
|
||||
|
||||
- Added BitHUmen indexer
|
||||
|
||||
- Added FinElite indexer
|
||||
|
||||
- Added missing variables in macros
|
||||
|
||||
|
||||
Bug fixes:
|
||||
- Fixed releases being incorrectly deleted when PUSH_APPROVED is not in the cleanup list
|
||||
- Fixed indexer proxy button overflow in the web UI
|
||||
|
||||
- Correct error message when providing wrong current password at credential change
|
||||
|
||||
- Custom client for RSS tests
|
||||
|
||||
|
||||
Full release notes are available at https://autobrr.com/release-notes
|
||||
|
||||
@ -1,13 +1,10 @@
|
||||
manifestVersion: 1.2
|
||||
manifestVersion: 1
|
||||
id: back-that-mac-up
|
||||
category: files
|
||||
name: Back That Mac Up
|
||||
version: "1.1.0"
|
||||
tagline: Backup your Mac to your Umbrel using Time Machine
|
||||
description: >
|
||||
⚠️ Removal Notice: This app has been removed from the Umbrel App Store. It would really make sense for this to be integrated directly into umbrelOS... hmmmmmmm.
|
||||
|
||||
|
||||
Introducing Back That Mac Up — an official app by Umbrel.
|
||||
|
||||
|
||||
@ -55,4 +52,3 @@ widgets:
|
||||
progress: 0.42
|
||||
submitter: Umbrel
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/929
|
||||
disabled: true
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: baikal_web_1
|
||||
APP_PORT: 80
|
||||
PROXY_AUTH_ADD: "false"
|
||||
web:
|
||||
image: ckulka/baikal:0.10.1@sha256:2385faeb7cc165d2b080c0ed8c84cc59e84d03107f814ad897ab62684c792f7b
|
||||
# This container runs as user 33:33 and cannot be changed in compose (https://github.com/ckulka/baikal-docker/blob/master/examples/docker-compose.localvolumes.yaml)
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/var/www/baikal/config
|
||||
- ${APP_DATA_DIR}/data/Specific:/var/www/baikal/Specific
|
||||
@ -1,46 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: baikal
|
||||
name: Baikal
|
||||
tagline: A lightweight calendar and contacts server
|
||||
category: networking
|
||||
version: "0.10.1"
|
||||
port: 8890
|
||||
description: >-
|
||||
🪆 Baikal Server is a lightweight CalDAV and CardDAV server designed for users who want to manage their calendar and contact information securely on their own server. This robust application offers an extensive web interface that simplifies the management of users, address books, and calendars, making it accessible for both beginners and experienced users.
|
||||
|
||||
|
||||
One of the key features of Baikal is its ease of installation and configuration. It requires only a basic PHP-capable server, which means you don't need extensive technical knowledge to get started. The server supports both MySQL and SQLite databases for data storage, providing flexibility depending on your preferences and needs.
|
||||
|
||||
|
||||
Baikal allows users to seamlessly access their contacts and calendars from any device. It is compatible with a wide range of applications, including iOS, macOS, DAVx5 on Android, Mozilla Thunderbird, and many other CalDAV and CardDAV capable applications. This compatibility ensures that you can sync your data across multiple platforms without any hassle.
|
||||
|
||||
|
||||
In addition to its user-friendly features, Baikal emphasizes privacy and data security. By hosting your calendars and contacts yourself, you maintain full control over your personal information, protecting it from potential breaches and unauthorized access. This is particularly important in an era where data privacy is a growing concern.
|
||||
|
||||
|
||||
Whether you are an individual looking for a reliable personal organizer or a small team needing a collaborative solution, Baikal Server provides a practical and efficient way to manage your scheduling and contact needs while ensuring your data remains private and secure. With its fast performance and straightforward interface, Baikal is an excellent choice for anyone seeking a self-hosted calendar and contact management solution.
|
||||
|
||||
developer: fruux GmbH
|
||||
website: https://sabre.io/baikal/
|
||||
submitter: dennysubke
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/1606
|
||||
repo: https://github.com/sabre-io/Baikal
|
||||
support: https://github.com/sabre-io/Baikal/issues
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
releaseNotes: >-
|
||||
This release includes the following improvements:
|
||||
- Fixed authentication issues when using reverse proxies
|
||||
- Added PostgreSQL database support
|
||||
- New environment variable configuration options
|
||||
- Fixed database setup screen on install wizard
|
||||
- Updated to sabre/dav 4.7.0
|
||||
|
||||
|
||||
Full release notes can be found at https://github.com/sabre-io/Baikal/releases
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
@ -1,16 +0,0 @@
|
||||
{
|
||||
"btcd" : [
|
||||
{
|
||||
"url": "${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}",
|
||||
"auth": "${APP_BITCOIN_RPC_USER}",
|
||||
"pass": "${APP_BITCOIN_RPC_PASS}",
|
||||
"notify" : true
|
||||
}
|
||||
],
|
||||
"btcsig" : "/mined by Bassin on Umbrel/",
|
||||
"mindiff": 1,
|
||||
"startdiff": 42,
|
||||
"maxdiff" : 0,
|
||||
"logdir" : "/www",
|
||||
"zmqblock" : "tcp://${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_ZMQ_HASHBLOCK_PORT}"
|
||||
}
|
||||
@ -1,69 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: bassin_www_1
|
||||
APP_PORT: 80
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
init:
|
||||
image: alpine:3.22.1@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1
|
||||
entrypoint: >-
|
||||
/bin/sh -c '
|
||||
apk add --no-cache envsubst &&
|
||||
if [ ! -f /config/ckpool.conf ]; then
|
||||
envsubst < /config/ckpool.conf.template > /config/ckpool.conf &&
|
||||
chown 1000:1000 /config/ckpool.conf
|
||||
fi
|
||||
'
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
environment:
|
||||
- APP_BITCOIN_NODE_IP=${APP_BITCOIN_NODE_IP}
|
||||
- APP_BITCOIN_RPC_PORT=${APP_BITCOIN_RPC_PORT}
|
||||
- APP_BITCOIN_RPC_USER=${APP_BITCOIN_RPC_USER}
|
||||
- APP_BITCOIN_RPC_PASS=${APP_BITCOIN_RPC_PASS}
|
||||
- APP_BITCOIN_ZMQ_HASHBLOCK_PORT=${APP_BITCOIN_ZMQ_HASHBLOCK_PORT}
|
||||
|
||||
ckpool:
|
||||
image: ghcr.io/getumbrel/docker-ckpool-solo:590fb2a@sha256:4e6b8f4f9c7d74c2111a6e082a2bbdc936fa510989a81e7cef714d1da944336b
|
||||
command: '-k -B -c /config/ckpool.conf'
|
||||
user: "1000:1000"
|
||||
depends_on:
|
||||
init:
|
||||
condition: service_completed_successfully
|
||||
restart: on-failure
|
||||
stop_grace_period: 30s
|
||||
ports:
|
||||
- "3456:3333/tcp"
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config:ro
|
||||
- ${APP_DATA_DIR}/data/www:/www
|
||||
|
||||
ui:
|
||||
image: ghcr.io/duckaxe/bassin-ui:580689d@sha256:ece16d859295c01f3c7bdaf78679f5b3477073af93937c367ae6174191c0de19
|
||||
entrypoint: /bin/sh -c "cp -r /ui/* /www/"
|
||||
user: "1000:1000"
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/www:/www
|
||||
restart: on-failure
|
||||
|
||||
www:
|
||||
image: halverneus/static-file-server:v1.8.11@sha256:2e91ce7ffb8519eeb882ba52d75c191ca6c921c16438447362128ef73ee2ea7e
|
||||
user: "1000:1000"
|
||||
environment:
|
||||
- FOLDER=/www
|
||||
- PORT=80
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/www:/www:ro
|
||||
depends_on:
|
||||
- ui
|
||||
restart: on-failure
|
||||
|
||||
widget-server:
|
||||
image: ghcr.io/duckaxe/umbrel-bassin-widget:main@sha256:293d4a17579bbef339c3f4595ed2dc36bef70699d34909bfa3ac20bba8facb7c
|
||||
user: "1000:1000"
|
||||
environment:
|
||||
- BASSIN_API_POOL_URL=http://bassin_www_1/pool/pool.status
|
||||
restart: on-failure
|
||||
@ -1,32 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# This script updates the btcsig in ckpool.conf for existing users
|
||||
# who installed when the default was "/mined by Bassin/"
|
||||
# Only runs once to avoid overriding user's intentional changes
|
||||
|
||||
APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")"
|
||||
CKPOOL_CONFIG_FILE="${APP_DATA_DIR}/data/config/ckpool.conf"
|
||||
BTCSIG_MIGRATION_FLAG="${APP_DATA_DIR}/BTCSIG_MIGRATED"
|
||||
|
||||
# Skip if migration has already run
|
||||
if [[ -f "${BTCSIG_MIGRATION_FLAG}" ]]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check if the config file exists
|
||||
if [[ ! -f "${CKPOOL_CONFIG_FILE}" ]]; then
|
||||
touch "${BTCSIG_MIGRATION_FLAG}"
|
||||
exit
|
||||
fi
|
||||
|
||||
OLD_BTCSIG='"btcsig" : "/mined by Bassin/",'
|
||||
NEW_BTCSIG='"btcsig" : "/mined by Bassin on Umbrel/",'
|
||||
|
||||
# Check if the exact old btcsig line exists
|
||||
if grep -qF "${OLD_BTCSIG}" "${CKPOOL_CONFIG_FILE}"; then
|
||||
echo "App: ${APP_ID} - Updating btcsig in ckpool.conf"
|
||||
sed -i "s|${OLD_BTCSIG}|${NEW_BTCSIG}|" "${CKPOOL_CONFIG_FILE}"
|
||||
fi
|
||||
|
||||
# Mark migration as complete
|
||||
touch "${BTCSIG_MIGRATION_FLAG}"
|
||||
@ -1,62 +0,0 @@
|
||||
manifestVersion: 1.1
|
||||
version: "2.1.0-hotfix"
|
||||
id: bassin
|
||||
name: Bassin
|
||||
tagline: Solo Bitcoin Mining Pool (ckPool)
|
||||
description: >-
|
||||
A zero-fee Bitcoin solo mining pool for Umbrel. Run your own ckPool at home.
|
||||
|
||||
|
||||
No setup, no hassle.
|
||||
- Make sure your Bitcoin node is fully synchronized and running
|
||||
- Install the app, then follow the on-screen instructions
|
||||
- Be part of decentralized mining
|
||||
|
||||
|
||||
Check out the FAQ page: https://github.com/duckaxe/bassin/wiki/FAQ
|
||||
|
||||
|
||||
For academic and research purposes only.
|
||||
category: bitcoin
|
||||
dependencies:
|
||||
- bitcoin
|
||||
releaseNotes: >-
|
||||
🚨 CRITICAL SECURITY UPDATE - Please update immediately.
|
||||
|
||||
|
||||
A security issue was discovered with the previous ckpool software used by this app. It has been replaced with a new version built from a verified source: https://github.com/getumbrel/docker-ckpool-solo
|
||||
port: 5008
|
||||
submitter: duckaxe
|
||||
developer: duckaxe
|
||||
website: https://github.com/duckaxe
|
||||
repo: https://github.com/duckaxe/bassin
|
||||
support: https://github.com/duckaxe/bassin/issues
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/3375
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
widgets:
|
||||
- id: "stats"
|
||||
type: "four-stats"
|
||||
refresh: "30s"
|
||||
endpoint: "widget-server:3000/widgets/pool"
|
||||
link: ""
|
||||
example:
|
||||
type: "four-stats"
|
||||
link: ""
|
||||
items:
|
||||
- title: "Hashrate"
|
||||
text: "2.10"
|
||||
subtext: "Th/s"
|
||||
- title: "Workers"
|
||||
text: "2"
|
||||
- title: "Best Share"
|
||||
text: "21"
|
||||
subtext: "G"
|
||||
- title: "Total Shares"
|
||||
text: "210"
|
||||
subtext: "M"
|
||||
@ -8,11 +8,11 @@ services:
|
||||
PROXY_AUTH_WHITELIST: "/api/*"
|
||||
|
||||
server:
|
||||
image: linuxserver/bazarr:1.5.6@sha256:b0bc617664dbca25845ac3b1bb6411b145b6a44a6d173071c9d2f426524fdd9f
|
||||
image: linuxserver/bazarr:1.4.3@sha256:5da74fc1bbd5da69e3b4f9b2376f6ccfbe3b47f143e6eb5651ed37cc1d4412dd
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
- ${UMBREL_ROOT}/data/storage/downloads:/downloads
|
||||
restart: on-failure
|
||||
restart: on-failure
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: bazarr
|
||||
category: media
|
||||
name: Bazarr
|
||||
version: "1.5.6"
|
||||
version: "1.4.3"
|
||||
tagline: Manage and download subtitles for Sonarr and Radarr
|
||||
description: >-
|
||||
Bazarr is a companion application to Sonarr and Radarr that manages and downloads subtitles based on your requirements.
|
||||
@ -18,24 +18,19 @@ description: >-
|
||||
You can find your device's IP address by visiting your router's admin dashboard or by using an IP scanning tool like Angry IP Scanner.
|
||||
You will also need to input your API key for Sonarr and/or Radarr. You can find your API keys in the settings of the Sonarr and Radarr apps.
|
||||
releaseNotes: >-
|
||||
Key improvements in this release include:
|
||||
- Added Spain vs LATAM Spanish detection to SubX provider
|
||||
- Added SubX subtitle proxy for Subdivx Latam Spanish provider
|
||||
- Removed subdivx provider as it is no longer supported
|
||||
- Added hostname setting in General for webhook security to prevent hostname poisoning
|
||||
- Added audio delay detection in MKV headers for WhisperAI using FFprobe
|
||||
- Added Plex library refresh after subtitle deletions or modifications
|
||||
- Improved subdl provider with search by TMDB ID and better error handling
|
||||
- Improved Gestdown provider release matching
|
||||
- Fixed assrt provider skipping season pack subtitles for episode searches
|
||||
- Fixed missing audio_exclude migration in language profile upgrades
|
||||
- Fixed post-processing failing on non-English Windows systems
|
||||
- Fixed subssabbz search, diacritics, language comparison, and download error handling
|
||||
- Improved job queue handling to prevent high CPU usage from busy waiting
|
||||
- Improved performance by replacing blocking job progress monitoring with async implementation
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/morpheus65535/bazarr/releases
|
||||
This release updates Bazarr from 1.4.2 to 1.4.3. This update includes several fixes and improvements:
|
||||
|
||||
- Fixed issues with throttled providers and restart exceptions.
|
||||
|
||||
- Improved compatibility with case insensitive filesystems and fixed various provider-related errors.
|
||||
|
||||
- Reverted Apprise to version 1.7.6 to fix upgrade issues.
|
||||
|
||||
- Added support for additional languages and improved logging for subtitle scoring.
|
||||
|
||||
- Fixed issues with embedded subtitles and improved UI and error handling.
|
||||
|
||||
Full release notes are found at https://github.com/morpheus65535/bazarr/releases.
|
||||
developer: morpheus65535
|
||||
website: https://www.bazarr.media/
|
||||
dependencies: []
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: bentopdf_web_1
|
||||
APP_PORT: 8080
|
||||
|
||||
web:
|
||||
image: ghcr.io/alam00000/bentopdf:v2.8.2@sha256:ceee3325f10c3c7e2eef582cc14492e809c1646b5bee4ef00094f2ef3bacebf9
|
||||
restart: on-failure
|
||||
@ -1,48 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: bentopdf
|
||||
name: BentoPDF
|
||||
tagline: A Privacy First PDF Toolkit
|
||||
category: files
|
||||
version: "2.8.2"
|
||||
port: 8730
|
||||
description: >-
|
||||
📄 BentoPDF is an advanced privacy-oriented application designed to give users complete control over their PDF documents directly within the browser. It eliminates the need for external uploads or online conversion services, ensuring that every action takes place locally and confidentially. This focus on privacy makes BentoPDF a secure alternative to traditional cloud-based PDF tools.
|
||||
|
||||
|
||||
At its core, BentoPDF provides an extensive set of features for working with digital documents. Users can merge multiple PDFs into a single file, split them into separate sections, or reorganize individual pages in just a few clicks. The application allows rotating, duplicating, or removing pages with ease, offering full flexibility when editing complex documents. Visual adjustments such as background color changes, watermarks, headers, and footers can also be applied to enhance the appearance of professional documents.
|
||||
|
||||
|
||||
BentoPDF includes a robust conversion engine that supports transforming images into PDFs and exporting individual pages back into common image formats. It also enables file compression to optimize storage space without compromising quality. For document security, users can apply passwords, encrypt sensitive information, or remove existing restrictions to regain editing access. These tools make it suitable for both personal use and professional document preparation.
|
||||
|
||||
|
||||
Another highlight is the integrated OCR functionality, which scans and recognizes text from image-based PDFs, turning them into fully searchable documents. Metadata editing options let users refine document properties and improve organization. With all these capabilities combined, BentoPDF offers a comprehensive, user-friendly environment for creating, editing, and managing PDFs efficiently — all while maintaining the highest level of privacy and control.
|
||||
developer: BentoPDF
|
||||
website: https://bentopdf.com/
|
||||
submitter: dennysubke
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/3843
|
||||
repo: https://github.com/alam00000/bentopdf
|
||||
support: https://github.com/alam00000/bentopdf/issues
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
releaseNotes: >-
|
||||
This update brings minor bug fixes and quality of life improvements.
|
||||
|
||||
|
||||
✨ New features and improvements:
|
||||
- The container listen port can now be changed via the PORT environment variable
|
||||
- All tools now preserve the original filename on download instead of adding prefixes like "encrypted-" or "rotated_"
|
||||
- Auto orientation in Page Size now correctly matches the source page layout
|
||||
- Multi-channel TIFF formats are now supported with added compression options
|
||||
- OCR quality improved by copying original pages instead of embedding rasterized images
|
||||
- Fixed permission errors when running as a non-root user introduced in v2.8
|
||||
- Dutch translation corrections
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/alam00000/bentopdf/releases
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
@ -1,30 +0,0 @@
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: bitaxe-sentry_web_1
|
||||
APP_PORT: 7070
|
||||
|
||||
sentry:
|
||||
image: zachprice105/bitaxe-sentry:v0.6.1@sha256:2326e3ea1f7e054da41768a4648277cd523d19a235490a2c0ae364315abbc8ee
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/sentry:/var/lib/bitaxe
|
||||
environment:
|
||||
DB_PATH: "/var/lib/bitaxe/bitaxe_sentry.db"
|
||||
DB_DATA_DIR: "/var/lib/bitaxe"
|
||||
|
||||
web:
|
||||
image: zachprice105/bitaxe-sentry:v0.6.1@sha256:2326e3ea1f7e054da41768a4648277cd523d19a235490a2c0ae364315abbc8ee
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/sentry:/var/lib/bitaxe
|
||||
environment:
|
||||
DB_PATH: "/var/lib/bitaxe/bitaxe_sentry.db"
|
||||
DB_DATA_DIR: "/var/lib/bitaxe"
|
||||
command: uvicorn bitaxe_sentry.sentry.webapp:app --host 0.0.0.0 --port 7070
|
||||
depends_on:
|
||||
- sentry
|
||||
@ -1,33 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: bitaxe-sentry
|
||||
category: bitcoin
|
||||
name: Bitaxe Sentry
|
||||
version: "0.6.1"
|
||||
tagline: Bitaxe stats and alerts, all in one
|
||||
description: >-
|
||||
Bitaxe Sentry is a monitoring and management solution for Bitaxe ASIC miners.
|
||||
Track the performance, temperature, and status of your miners from a single dashboard. Get alerts when your miners hit a new best difficulty, or when temperature or voltage thresholds are exceeded.
|
||||
|
||||
|
||||
Features included:
|
||||
- 📊 Centralized dashboard for all Bitaxe miners
|
||||
- 🌡️ Temperature and hashrate monitoring
|
||||
- 🚨 Discord notifications for critical events
|
||||
releaseNotes: >-
|
||||
This release includes a minor bug fix:
|
||||
- Changed mh/s to gh/s to reflect the correct unit of hashrate
|
||||
developer: Zach Price
|
||||
website: https://github.com/zachchan105/bitaxe-sentry
|
||||
repo: https://github.com/zachchan105/bitaxe-sentry
|
||||
support: https://github.com/zachchan105/bitaxe-sentry/issues
|
||||
port: 7070
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
submitter: Zach Price
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/3122
|
||||
dependencies: []
|
||||
@ -3,57 +3,53 @@ version: "3.7"
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: $APP_BITCOIN_KNOTS_NODE_IP
|
||||
APP_PORT: 3000
|
||||
APP_HOST: $APP_BITCOIN_KNOTS_IP
|
||||
APP_PORT: 3005
|
||||
|
||||
app:
|
||||
image: ghcr.io/retropex/umbrel-bitcoin-knots:1.2.10@sha256:4dc37d9014eb29d47898d512422736ad2eed89bf31d321fc27b27547f04d0866
|
||||
user: "1000:1000"
|
||||
server:
|
||||
image: retropexx/umbrel-bitcoin-knots:v0.5.3@sha256:c21fc893fb943c92fb078afb7622ab0741eccccf9073629a5bda713ed7a8f537
|
||||
depends_on: [bitcoind]
|
||||
restart: on-failure
|
||||
stop_grace_period: 15m30s
|
||||
# these ports are exposed for external connections to bitcoind
|
||||
ports:
|
||||
- "${APP_BITCOIN_KNOTS_P2P_PORT}:${APP_BITCOIN_KNOTS_P2P_PORT}"
|
||||
- "${APP_BITCOIN_KNOTS_RPC_PORT}:${APP_BITCOIN_KNOTS_RPC_PORT}"
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/data # data/app and data/bitcoin
|
||||
- ${APP_DATA_DIR}/data/app:/data # volume to persist advanced settings json
|
||||
- ${APP_BITCOIN_KNOTS_DATA_DIR}:/bitcoin/.bitcoin # volume to persist umbrel-bitcoin.conf and bitcoin.conf
|
||||
environment:
|
||||
# DATA DIRECTORY SETTINGS
|
||||
# BITCOIN_DIR: bitcoin-dir-override
|
||||
# APP_STATE_DIR: app-state-dir-override
|
||||
|
||||
# BITCOIND BINARY SETTINGS
|
||||
# BITCOIND_BIN: bitcoind-binary-path-override
|
||||
# comma-delimited list of extra startup flags to pass to bitcoind
|
||||
BITCOIND_EXTRA_ARGS: '-deprecatedrpc=create_bdb' # We can remove depratedrpc=create_bdb in a future update once Jam (JoinMarket) implements descriptor wallet support
|
||||
|
||||
# BITCOIND CONF FILE SETTINGS
|
||||
APPS_SUBNET: "${NETWORK_IP}/16" # used for rpcallowip
|
||||
P2P_PORT: "${APP_BITCOIN_KNOTS_P2P_PORT}" # port, bind (also used for connect details)
|
||||
P2P_WHITEBIND_PORT: "${APP_BITCOIN_KNOTS_P2P_WHITEBIND_PORT}" # Additional inbound P2P listener granting whitelisted permissions (whitebind) to this port; for trusted internal apps only; do not publish externally
|
||||
RPC_PORT: "${APP_BITCOIN_KNOTS_RPC_PORT}" # rpcport (also used for rpc client and connect details)
|
||||
TOR_PORT: "${APP_BITCOIN_KNOTS_TOR_PORT}" # bind=onion
|
||||
ZMQ_RAWBLOCK_PORT: "${APP_BITCOIN_KNOTS_ZMQ_RAWBLOCK_PORT}" # zmqpubrawblock
|
||||
ZMQ_RAWTX_PORT: "${APP_BITCOIN_KNOTS_ZMQ_RAWTX_PORT}" # zmqpubrawtx
|
||||
ZMQ_HASHBLOCK_PORT: "${APP_BITCOIN_KNOTS_ZMQ_HASHBLOCK_PORT}" # zmqpubhashblock
|
||||
ZMQ_SEQUENCE_PORT: "${APP_BITCOIN_KNOTS_ZMQ_SEQUENCE_PORT}" # zmqpubsequence
|
||||
ZMQ_HASHTX_PORT: "${APP_BITCOIN_KNOTS_ZMQ_HASHTX_PORT}" # zmqpubhashtx
|
||||
TOR_HOST: "${APP_BITCOIN_KNOTS_TOR_PROXY_IP}" # proxy, onion, torcontrol
|
||||
TOR_SOCKS_PORT: "9050" # proxy, onion
|
||||
TOR_CONTROL_PORT: "9051" # torcontrol
|
||||
TOR_CONTROL_PASSWORD: "moneyprintergobrrr" # torpassword
|
||||
I2P_HOST: "${APP_BITCOIN_KNOTS_I2P_DAEMON_IP}" # i2psam
|
||||
I2P_SAM_PORT: "7656" # i2psam
|
||||
|
||||
# RPC CLIENT SETTINGS
|
||||
BITCOIND_IP: "${APP_BITCOIN_KNOTS_NODE_IP}" # host for the rpc client. Also used for bitcoind conf file rpcbind & bind.
|
||||
RPC_USER: "${APP_BITCOIN_KNOTS_RPC_USER}" # also shown in the connect modal
|
||||
RPC_PASS: "${APP_BITCOIN_KNOTS_RPC_PASS}" # also shown in the connect modal
|
||||
|
||||
# CONNECTION DETAILS (shown to user in the connect modal)
|
||||
PORT: "3005"
|
||||
BITCOIN_HOST: "${APP_BITCOIN_KNOTS_NODE_IP}"
|
||||
RPC_PORT: "${APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT}"
|
||||
BITCOIN_RPC_PORT: "${APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT}"
|
||||
RPC_USER: "${APP_BITCOIN_KNOTS_RPC_USER}"
|
||||
BITCOIN_RPC_USER: "${APP_BITCOIN_KNOTS_RPC_USER}"
|
||||
RPC_PASSWORD: "${APP_BITCOIN_KNOTS_RPC_PASS}"
|
||||
BITCOIN_RPC_PASSWORD: "${APP_BITCOIN_KNOTS_RPC_PASS}"
|
||||
BITCOIN_RPC_HIDDEN_SERVICE: "${APP_BITCOIN_KNOTS_RPC_HIDDEN_SERVICE}"
|
||||
BITCOIN_P2P_HIDDEN_SERVICE: "${APP_BITCOIN_KNOTS_P2P_HIDDEN_SERVICE}"
|
||||
BITCOIN_P2P_PORT: "${APP_BITCOIN_KNOTS_P2P_PORT}"
|
||||
DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}"
|
||||
P2P_HIDDEN_SERVICE: "${APP_BITCOIN_KNOTS_P2P_HIDDEN_SERVICE}"
|
||||
RPC_HIDDEN_SERVICE: "${APP_BITCOIN_KNOTS_RPC_HIDDEN_SERVICE}"
|
||||
BITCOIN_DEFAULT_NETWORK: "${BITCOIN_KNOTS_DEFAULT_NETWORK:-mainnet}"
|
||||
# not needed
|
||||
BITCOIN_INITIALIZE_WITH_CLEARNET_OVER_TOR: "${BITCOIN_INITIALIZE_WITH_CLEARNET_OVER_TOR:-unset}"
|
||||
BITCOIND_IP: "${APP_BITCOIN_KNOTS_NODE_IP}"
|
||||
TOR_PROXY_IP: "${APP_BITCOIN_KNOTS_TOR_PROXY_IP}"
|
||||
TOR_PROXY_PORT: "9050"
|
||||
TOR_PROXY_CONTROL_PORT: "9051"
|
||||
TOR_PROXY_CONTROL_PASSWORD: "moneyprintergobrrr"
|
||||
I2P_DAEMON_IP: "${APP_BITCOIN_KNOTS_I2P_DAEMON_IP}"
|
||||
I2P_DAEMON_PORT: "7656"
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: $APP_BITCOIN_KNOTS_IP
|
||||
|
||||
bitcoind:
|
||||
image: retropexx/bitcoind:v27.1@sha256:4b405d9aca9d5b37a70cfa397f87df490a3f3452885d7bc80d1d1a6b110b06b5
|
||||
command: "${APP_BITCOIN_KNOTS_COMMAND}"
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 15m30s
|
||||
volumes:
|
||||
- "${APP_BITCOIN_KNOTS_DATA_DIR}:/data/.bitcoin"
|
||||
ports:
|
||||
- "${APP_BITCOIN_KNOTS_P2P_PORT}:${APP_BITCOIN_KNOTS_INTERNAL_P2P_PORT}"
|
||||
- "${APP_BITCOIN_KNOTS_RPC_PORT}:${APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT}"
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: $APP_BITCOIN_KNOTS_NODE_IP
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
export APP_BITCOIN_KNOTS_IP="10.21.22.5"
|
||||
export APP_BITCOIN_KNOTS_NODE_IP="10.21.21.7"
|
||||
export APP_BITCOIN_KNOTS_TOR_PROXY_IP="10.21.22.12"
|
||||
export APP_BITCOIN_KNOTS_I2P_DAEMON_IP="10.21.22.13"
|
||||
@ -5,62 +6,116 @@ export APP_BITCOIN_KNOTS_I2P_DAEMON_IP="10.21.22.13"
|
||||
export APP_BITCOIN_KNOTS_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin"
|
||||
export APP_BITCOIN_KNOTS_RPC_PORT="9332"
|
||||
export APP_BITCOIN_KNOTS_P2P_PORT="9333"
|
||||
# Additional inbound P2P listener granting whitelisted permissions (whitebind) to this port; for trusted internal apps only; do not publish externally
|
||||
export APP_BITCOIN_KNOTS_P2P_WHITEBIND_PORT="9335"
|
||||
export APP_BITCOIN_KNOTS_TOR_PORT="8334"
|
||||
export APP_BITCOIN_KNOTS_TOR_PORT="9334"
|
||||
export APP_BITCOIN_KNOTS_ZMQ_RAWBLOCK_PORT="48332"
|
||||
export APP_BITCOIN_KNOTS_ZMQ_RAWTX_PORT="48333"
|
||||
export APP_BITCOIN_KNOTS_ZMQ_HASHBLOCK_PORT="48334"
|
||||
export APP_BITCOIN_KNOTS_ZMQ_SEQUENCE_PORT="48335"
|
||||
export APP_BITCOIN_KNOTS_ZMQ_HASHTX_PORT="48336"
|
||||
export APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT="8332"
|
||||
export APP_BITCOIN_KNOTS_INTERNAL_P2P_PORT="8333"
|
||||
export APP_BITCOIN_KNOTS_INTERNAL_tor_PORT="8334"
|
||||
|
||||
# These are legacy env vars we need to keep around for DATUM compatibility
|
||||
export APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT="9332"
|
||||
export APP_BITCOIN_KNOTS_INTERNAL_P2P_PORT="9333"
|
||||
BITCOIN_CHAIN="main"
|
||||
BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env"
|
||||
|
||||
export APP_BITCOIN_KNOTS_NETWORK="mainnet"
|
||||
|
||||
# Check for an existing settings.json file to override APP_BITCOIN_NETWORK with user's choice
|
||||
{
|
||||
BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/settings.json"
|
||||
BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/bitcoin-config.json"
|
||||
if [[ -f "${BITCOIN_APP_CONFIG_FILE}" ]]
|
||||
then
|
||||
bitcoin_app_network=$(jq -r '.chain' "${BITCOIN_APP_CONFIG_FILE}")
|
||||
bitcoin_app_network=$(jq -r '.network' "${BITCOIN_APP_CONFIG_FILE}")
|
||||
case $bitcoin_app_network in
|
||||
"main")
|
||||
APP_BITCOIN_KNOTS_NETWORK="mainnet";;
|
||||
BITCOIN_NETWORK="mainnet";;
|
||||
"test")
|
||||
APP_BITCOIN_KNOTS_NETWORK="testnet";;
|
||||
"testnet4")
|
||||
APP_BITCOIN_KNOTS_NETWORK="testnet4";;
|
||||
BITCOIN_NETWORK="testnet";;
|
||||
"signet")
|
||||
APP_BITCOIN_KNOTS_NETWORK="signet";;
|
||||
BITCOIN_NETWORK="signet";;
|
||||
"regtest")
|
||||
APP_BITCOIN_KNOTS_NETWORK="regtest";;
|
||||
*)
|
||||
if [[ -n "$bitcoin_app_network" ]] && [[ "$bitcoin_app_network" != "null" ]]; then
|
||||
echo "Warning (${EXPORTS_APP_ID}): Invalid network '${bitcoin_app_network}' in settings.json. Exporting APP_BITCOIN_NETWORK as default 'mainnet'."
|
||||
fi;;
|
||||
BITCOIN_NETWORK="regtest";;
|
||||
esac
|
||||
fi
|
||||
} > /dev/null || true
|
||||
|
||||
BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env"
|
||||
|
||||
if [[ ! -f "${BITCOIN_ENV_FILE}" ]]; then
|
||||
if [[ -z "${BITCOIN_NETWORK}" ]]; then
|
||||
BITCOIN_NETWORK="mainnet"
|
||||
fi
|
||||
|
||||
if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]]; then
|
||||
if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]] || [[ -z ${BITCOIN_RPC_AUTH+x} ]]; then
|
||||
BITCOIN_RPC_USER="umbrel"
|
||||
BITCOIN_RPC_DETAILS=$("${EXPORTS_APP_DIR}/scripts/rpcauth.py" "${BITCOIN_RPC_USER}")
|
||||
BITCOIN_RPC_PASS=$(echo "$BITCOIN_RPC_DETAILS" | tail -1)
|
||||
BITCOIN_RPC_AUTH=$(echo "$BITCOIN_RPC_DETAILS" | head -2 | tail -1 | sed -e "s/^rpcauth=//")
|
||||
fi
|
||||
|
||||
echo "export APP_BITCOIN_KNOTS_NETWORK='${BITCOIN_NETWORK}'" > "${BITCOIN_ENV_FILE}"
|
||||
echo "export APP_BITCOIN_KNOTS_RPC_USER='${BITCOIN_RPC_USER}'" >> "${BITCOIN_ENV_FILE}"
|
||||
echo "export APP_BITCOIN_KNOTS_RPC_PASS='${BITCOIN_RPC_PASS}'" >> "${BITCOIN_ENV_FILE}"
|
||||
echo "export APP_BITCOIN_KNOTS_RPC_AUTH='${BITCOIN_RPC_AUTH}'" >> "${BITCOIN_ENV_FILE}"
|
||||
fi
|
||||
|
||||
. "${BITCOIN_ENV_FILE}"
|
||||
|
||||
# Make sure we don't persist the original value in .env if we have a more recent
|
||||
# value from the app config
|
||||
{
|
||||
if [[ ! -z ${BITCOIN_NETWORK+x} ]] && [[ "${BITCOIN_NETWORK}" ]] && [[ "${APP_BITCOIN_KNOTS_NETWORK}" ]]
|
||||
then
|
||||
APP_BITCOIN_KNOTS_NETWORK="${BITCOIN_NETWORK}"
|
||||
fi
|
||||
} > /dev/null || true
|
||||
|
||||
if [[ "${APP_BITCOIN_KNOTS_NETWORK}" == "mainnet" ]]; then
|
||||
BITCOIN_CHAIN="main"
|
||||
elif [[ "${APP_BITCOIN_KNOTS_NETWORK}" == "testnet" ]]; then
|
||||
BITCOIN_CHAIN="test"
|
||||
# export APP_BITCOIN_RPC_PORT="18332"
|
||||
# export APP_BITCOIN_P2P_PORT="18333"
|
||||
# export APP_BITCOIN_TOR_PORT="18334"
|
||||
elif [[ "${APP_BITCOIN_KNOTS_NETWORK}" == "signet" ]]; then
|
||||
BITCOIN_CHAIN="signet"
|
||||
# export APP_BITCOIN_RPC_PORT="38332"
|
||||
# export APP_BITCOIN_P2P_PORT="38333"
|
||||
# export APP_BITCOIN_TOR_PORT="38334"
|
||||
elif [[ "${APP_BITCOIN_KNOTS_NETWORK}" == "regtest" ]]; then
|
||||
BITCOIN_CHAIN="regtest"
|
||||
# export APP_BITCOIN_RPC_PORT="18443"
|
||||
# export APP_BITCOIN_P2P_PORT="18444"
|
||||
# export APP_BITCOIN_TOR_PORT="18445"
|
||||
else
|
||||
echo "Warning (${EXPORTS_APP_ID}): Bitcoin Network '${APP_BITCOIN_KNOTS_NETWORK}' is not supported"
|
||||
fi
|
||||
|
||||
export BITCOIN_KNOTS_DEFAULT_NETWORK="${BITCOIN_CHAIN}"
|
||||
|
||||
BIN_ARGS=()
|
||||
# Commenting out options that are replaced by generated config file. We should migrate all these over in a future update.
|
||||
# BIN_ARGS+=( "-chain=${BITCOIN_CHAIN}" )
|
||||
# BIN_ARGS+=( "-proxy=${TOR_PROXY_IP}:${TOR_PROXY_PORT}" )
|
||||
# BIN_ARGS+=( "-listen" )
|
||||
# BIN_ARGS+=( "-bind=0.0.0.0:${APP_BITCOIN_TOR_PORT}=onion" )
|
||||
# BIN_ARGS+=( "-bind=${APP_BITCOIN_NODE_IP}" )
|
||||
# BIN_ARGS+=( "-port=${APP_BITCOIN_P2P_PORT}" )
|
||||
# BIN_ARGS+=( "-rpcport=${APP_BITCOIN_RPC_PORT}" )
|
||||
BIN_ARGS+=( "-port=8333" )
|
||||
BIN_ARGS+=( "-rpcport=8332" )
|
||||
BIN_ARGS+=( "-rpcbind=${APP_BITCOIN_KNOTS_NODE_IP}" )
|
||||
BIN_ARGS+=( "-rpcbind=127.0.0.1" )
|
||||
BIN_ARGS+=( "-rpcallowip=${NETWORK_IP}/16" )
|
||||
BIN_ARGS+=( "-rpcallowip=127.0.0.1" )
|
||||
BIN_ARGS+=( "-rpcauth=\"${APP_BITCOIN_KNOTS_RPC_AUTH}\"" )
|
||||
BIN_ARGS+=( "-zmqpubrawblock=tcp://0.0.0.0:${APP_BITCOIN_KNOTS_ZMQ_RAWBLOCK_PORT}" )
|
||||
BIN_ARGS+=( "-zmqpubrawtx=tcp://0.0.0.0:${APP_BITCOIN_KNOTS_ZMQ_RAWTX_PORT}" )
|
||||
BIN_ARGS+=( "-zmqpubhashblock=tcp://0.0.0.0:${APP_BITCOIN_KNOTS_ZMQ_HASHBLOCK_PORT}" )
|
||||
BIN_ARGS+=( "-zmqpubsequence=tcp://0.0.0.0:${APP_BITCOIN_KNOTS_ZMQ_SEQUENCE_PORT}" )
|
||||
# BIN_ARGS+=( "-txindex=1" )
|
||||
# BIN_ARGS+=( "-blockfilterindex=1" )
|
||||
# BIN_ARGS+=( "-peerbloomfilters=1" )
|
||||
# BIN_ARGS+=( "-peerblockfilters=1" )
|
||||
# BIN_ARGS+=( "-rpcworkqueue=128" )
|
||||
|
||||
export APP_BITCOIN_KNOTS_COMMAND=$(IFS=" "; echo "${BIN_ARGS[@]}")
|
||||
|
||||
# echo "${APP_BITCOIN_KNOTS_COMMAND}"
|
||||
|
||||
rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname"
|
||||
@ -74,32 +129,30 @@ if [[ "${APP_BITCOIN_KNOTS_NETWORK_ELECTRS}" = "mainnet" ]]; then
|
||||
APP_BITCOIN_KNOTS_NETWORK_ELECTRS="bitcoin"
|
||||
fi
|
||||
|
||||
for var in \
|
||||
NODE_IP \
|
||||
TOR_PROXY_IP \
|
||||
I2P_DAEMON_IP \
|
||||
DATA_DIR \
|
||||
RPC_PORT \
|
||||
P2P_PORT \
|
||||
P2P_WHITEBIND_PORT \
|
||||
TOR_PORT \
|
||||
ZMQ_RAWBLOCK_PORT \
|
||||
ZMQ_RAWTX_PORT \
|
||||
ZMQ_HASHBLOCK_PORT \
|
||||
ZMQ_SEQUENCE_PORT \
|
||||
ZMQ_HASHTX_PORT \
|
||||
NETWORK \
|
||||
RPC_USER \
|
||||
RPC_PASS \
|
||||
RPC_HIDDEN_SERVICE \
|
||||
P2P_HIDDEN_SERVICE \
|
||||
NETWORK_ELECTRS
|
||||
do
|
||||
bitcoin_var="APP_BITCOIN_${var}"
|
||||
knots_var="APP_BITCOIN_KNOTS_${var}"
|
||||
if [ -n "${!knots_var-}" ]; then
|
||||
export "$bitcoin_var"="${!bitcoin_var:=${!knots_var}}"
|
||||
else
|
||||
echo "Warning: $knots_var is unset or empty"
|
||||
fi
|
||||
done
|
||||
# We do not need this legacy bitcoin app logic because the Bitcoin Knots app was forked after advanced settings were introduced
|
||||
|
||||
# {
|
||||
# # Migrate settings for app updates differently to fresh installs
|
||||
# BITCOIN_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin"
|
||||
# IS_POST_ADVANCED_SETTINGS_INSTALL_FILE_PATH="${EXPORTS_APP_DIR}/data/app/IS_POST_ADVANCED_SETTINGS_INSTALL"
|
||||
|
||||
# # If no blocks directory exists, we write out a file to indicate that this is a fresh install.
|
||||
# # This gets around the issue of the pre-start hook starting up the bitcoind container early for Tor HS creation
|
||||
# # and creating the blocks directory.
|
||||
# if [[ ! -d "${BITCOIN_DATA_DIR}/blocks" ]] && [[ ! -d "${BITCOIN_DATA_DIR}/testnet3/blocks" ]] && [[ ! -d "${BITCOIN_DATA_DIR}/regtest/blocks" ]]
|
||||
# then
|
||||
# touch "${IS_POST_ADVANCED_SETTINGS_INSTALL_FILE_PATH}"
|
||||
# fi
|
||||
|
||||
# APP_CONFIG_EXISTS="false"
|
||||
# if [[ -f "${EXPORTS_APP_DIR}/data/app/bitcoin-config.json" ]]
|
||||
# then
|
||||
# APP_CONFIG_EXISTS="true"
|
||||
# fi
|
||||
|
||||
# if [[ ! -f "${IS_POST_ADVANCED_SETTINGS_INSTALL_FILE_PATH}" ]] && [[ "${APP_CONFIG_EXISTS}" = "false" ]]
|
||||
# then
|
||||
# # This app is not a fresh install, it's being updated, so preserve existing clearnet over Tor setting
|
||||
# export BITCOIN_INITIALIZE_WITH_CLEARNET_OVER_TOR="true"
|
||||
# fi
|
||||
# } || true
|
||||
@ -1,41 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../data)"
|
||||
DESIRED_OWNER="1000:1000"
|
||||
|
||||
set_correct_permissions() {
|
||||
local -r path="${1}"
|
||||
|
||||
# Check if the file exists
|
||||
if [[ -f "${path}" ]]; then
|
||||
owner=$(stat -c "%u:%g" "${path}")
|
||||
|
||||
if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then
|
||||
chown "${DESIRED_OWNER}" "${path}"
|
||||
echo "Changed ownership of ${path} to ${DESIRED_OWNER}"
|
||||
fi
|
||||
else
|
||||
echo "Skipping ${path} - file does not exist"
|
||||
fi
|
||||
}
|
||||
|
||||
# We set the correct permissions for any files that may have been created by a previous app running as root:
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/umbrel-bitcoin.conf"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf.save"
|
||||
# settings.json for any network could have been self-corrected by the old app running under root.
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/settings.json"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/regtest/settings.json"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/signet/settings.json"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet3/settings.json"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet4/settings.json"
|
||||
|
||||
# Set permissions recursively on the entire /app bind directory
|
||||
if [[ -d "${APP_DATA_DIR}/app" ]]; then
|
||||
chown -R "${DESIRED_OWNER}" "${APP_DATA_DIR}/app"
|
||||
fi
|
||||
|
||||
# Delay booting the full app until the RPC and P2P Tor Hidden Services are ready
|
||||
# Delay booting Bitcoin until the RPC and P2P Tor Hidden Services are ready
|
||||
|
||||
HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname"
|
||||
|
||||
@ -43,7 +8,7 @@ if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach app
|
||||
"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach bitcoind
|
||||
"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor
|
||||
|
||||
echo "App: ${APP_ID} - Generating Tor Hidden Service..."
|
||||
|
||||
@ -4,10 +4,10 @@ CookieAuthentication 1
|
||||
CookieAuthFileGroupReadable 1
|
||||
HashedControlPassword 16:39AF5EEFA4FC1D986022FDFB13663669FE50FB6DE9A3B4FE4FC7D82010 # moneyprintergobrrr
|
||||
|
||||
# Bitcoin Knots P2P Hidden Service
|
||||
# Bitcoin Core P2P Hidden Service
|
||||
HiddenServiceDir /data/app-$APP_ID-p2p
|
||||
HiddenServicePort $APP_BITCOIN_KNOTS_P2P_PORT $APP_BITCOIN_KNOTS_NODE_IP:$APP_BITCOIN_KNOTS_TOR_PORT
|
||||
HiddenServicePort $APP_BITCOIN_P2P_PORT $APP_BITCOIN_NODE_IP:$APP_BITCOIN_TOR_PORT
|
||||
|
||||
# Bitcoin Knots RPC Hidden Service
|
||||
# Bitcoin Core RPC Hidden Service
|
||||
HiddenServiceDir /data/app-$APP_ID-rpc
|
||||
HiddenServicePort $APP_BITCOIN_KNOTS_RPC_PORT $APP_BITCOIN_KNOTS_NODE_IP:$APP_BITCOIN_KNOTS_RPC_PORT
|
||||
HiddenServicePort $APP_BITCOIN_RPC_PORT $APP_BITCOIN_NODE_IP:$APP_BITCOIN_RPC_PORT
|
||||
@ -1,25 +1,16 @@
|
||||
manifestVersion: 1.1
|
||||
id: bitcoin-knots
|
||||
implements:
|
||||
- bitcoin
|
||||
category: bitcoin
|
||||
name: Bitcoin Knots
|
||||
version: "1.2.10"
|
||||
version: "27.1"
|
||||
tagline: Run your personal node powered by Bitcoin Knots
|
||||
description: >-
|
||||
Take control of your digital sovereignty by choosing Bitcoin Knots to run your node! By using Knots, you’re supporting a version of Bitcoin that prioritizes efficiency, security, and flexibility. With Bitcoin Knots’ enhanced configuration options, you can fine-tune your node to help keep the network clean and resilient, actively reducing unnecessary load from spam or parasitic transactions.
|
||||
Take control of your digital sovereignty by running a Bitcoin node that aligns with your needs and preferences.
|
||||
Independently store and validate every single Bitcoin transaction with Bitcoin Knots.
|
||||
|
||||
|
||||
|
||||
Every node strengthens the Bitcoin network, and your decision to use Bitcoin Knots contributes directly to a more decentralized and spam-resistant ecosystem. Your node not only validates and secures transactions but also sets an example for a more sustainable, user-focused Bitcoin network.
|
||||
|
||||
|
||||
Welcome to the community of Bitcoin Knots users, and thank you for helping Bitcoin grow stronger!
|
||||
|
||||
|
||||
Here's a guide on how to move the blockchain from bitcoin core to knots: https://docs.mempool.guide/page/migrationumbrel.html
|
||||
|
||||
|
||||
To forward incoming peer traffic to your device, set up the following configuration: (router) 9333 -> (device) 9333
|
||||
⚠️ Bitcoin Knots does not yet automatically integrate with other apps in the Bitcoin ecosystem on Umbrel.
|
||||
However, in a future umbrelOS update, users will be able to choose which Bitcoin node app they want to use to connect with other apps.
|
||||
|
||||
|
||||
Powered by Bitcoin Knots: https://bitcoinknots.org/
|
||||
@ -36,56 +27,9 @@ gallery:
|
||||
path: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: >-
|
||||
Internal changes
|
||||
widgets:
|
||||
- id: "stats"
|
||||
type: "four-stats"
|
||||
refresh: "5s"
|
||||
endpoint: "app:3000/api/widget/stats"
|
||||
link: ""
|
||||
example:
|
||||
type: "four-stats"
|
||||
link: ""
|
||||
items:
|
||||
- title: "Connections"
|
||||
text: "11"
|
||||
subtext: "peers"
|
||||
- title: "Mempool"
|
||||
text: "257"
|
||||
subtext: "MB"
|
||||
- title: "Hashrate"
|
||||
text: "590"
|
||||
subtext: "EH/s"
|
||||
- title: "Blockchain size"
|
||||
text: "600"
|
||||
subtext: "GB"
|
||||
- id: "sync"
|
||||
type: "text-with-progress"
|
||||
refresh: "2s"
|
||||
endpoint: "app:3000/api/widget/sync"
|
||||
link: ""
|
||||
example:
|
||||
type: "text-with-progress"
|
||||
link: ""
|
||||
title: "Blockchain sync"
|
||||
text: "83%"
|
||||
progressLabel: "In progress"
|
||||
progress: 0.83
|
||||
backupIgnore:
|
||||
- data/bitcoin/blocks
|
||||
- data/bitcoin/chainstate
|
||||
- data/bitcoin/indexes
|
||||
- data/bitcoin/testnet3/blocks
|
||||
- data/bitcoin/testnet3/chainstate
|
||||
- data/bitcoin/testnet3/indexes
|
||||
- data/bitcoin/testnet4/blocks
|
||||
- data/bitcoin/testnet4/chainstate
|
||||
- data/bitcoin/testnet4/indexes
|
||||
- data/bitcoin/signet/blocks
|
||||
- data/bitcoin/signet/chainstate
|
||||
- data/bitcoin/signet/indexes
|
||||
- data/bitcoin/regtest/blocks
|
||||
- data/bitcoin/regtest/chainstate
|
||||
- data/bitcoin/regtest/indexes
|
||||
This release updates Bitcoin Knots to version 27.1
|
||||
|
||||
|
||||
Full release notes for Bitcoin Knots can be found at https://github.com/bitcoinknots/bitcoin/releases/tag/v27.1.knots20240621
|
||||
submitter: Léo Haf
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/953
|
||||
|
||||
@ -3,59 +3,52 @@ version: "3.7"
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: $APP_BITCOIN_NODE_IP
|
||||
APP_PORT: 3000
|
||||
|
||||
app:
|
||||
image: ghcr.io/getumbrel/umbrel-bitcoin:v1.2.2@sha256:bc72c7fe705c582b8be1740c52449ac82de4d40b0e91ea090513aac6d4fc9393
|
||||
user: "1000:1000"
|
||||
APP_HOST: $APP_BITCOIN_IP
|
||||
APP_PORT: 3005
|
||||
|
||||
server:
|
||||
image: getumbrel/umbrel-bitcoin:v0.7.0@sha256:f2bb98c962fbad13991ceeda1308bbfaca13cc7cd5cb7d6b2e0d1d06e6123072
|
||||
depends_on: [bitcoind]
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/app:/data # volume to persist advanced settings json
|
||||
- ${APP_BITCOIN_DATA_DIR}:/bitcoin/.bitcoin # volume to persist umbrel-bitcoin.conf and bitcoin.conf
|
||||
environment:
|
||||
PORT: "3005"
|
||||
BITCOIN_HOST: "${APP_BITCOIN_NODE_IP}"
|
||||
RPC_PORT: "${APP_BITCOIN_RPC_PORT}"
|
||||
BITCOIN_RPC_PORT: "${APP_BITCOIN_RPC_PORT}"
|
||||
RPC_USER: "${APP_BITCOIN_RPC_USER}"
|
||||
BITCOIN_RPC_USER: "${APP_BITCOIN_RPC_USER}"
|
||||
RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}"
|
||||
BITCOIN_RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}"
|
||||
BITCOIN_RPC_HIDDEN_SERVICE: "${APP_BITCOIN_RPC_HIDDEN_SERVICE}"
|
||||
BITCOIN_P2P_HIDDEN_SERVICE: "${APP_BITCOIN_P2P_HIDDEN_SERVICE}"
|
||||
BITCOIN_P2P_PORT: "${APP_BITCOIN_P2P_PORT}"
|
||||
DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}"
|
||||
BITCOIN_DEFAULT_NETWORK: "${BITCOIN_DEFAULT_NETWORK:-mainnet}"
|
||||
BITCOIN_INITIALIZE_WITH_CLEARNET_OVER_TOR: "${BITCOIN_INITIALIZE_WITH_CLEARNET_OVER_TOR:-unset}"
|
||||
BITCOIND_IP: "${APP_BITCOIN_NODE_IP}"
|
||||
TOR_PROXY_IP: "${APP_BITCOIN_TOR_PROXY_IP}"
|
||||
TOR_PROXY_PORT: "9050"
|
||||
TOR_PROXY_CONTROL_PORT: "9051"
|
||||
TOR_PROXY_CONTROL_PASSWORD: "moneyprintergobrrr"
|
||||
I2P_DAEMON_IP: "${APP_BITCOIN_I2P_DAEMON_IP}"
|
||||
I2P_DAEMON_PORT: "7656"
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: $APP_BITCOIN_IP
|
||||
|
||||
bitcoind:
|
||||
image: lncm/bitcoind:v27.0@sha256:324fec72192e8a1c7b79e7ab91003e47678b808d46da2c1943e72ec212ab348f
|
||||
command: "${APP_BITCOIN_COMMAND}"
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 15m30s
|
||||
# these ports are exposed for external connections to bitcoind
|
||||
volumes:
|
||||
- "${APP_BITCOIN_DATA_DIR}:/data/.bitcoin"
|
||||
ports:
|
||||
- "${APP_BITCOIN_P2P_PORT}:${APP_BITCOIN_P2P_PORT}"
|
||||
- "${APP_BITCOIN_RPC_PORT}:${APP_BITCOIN_RPC_PORT}"
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/data # data/app and data/bitcoin
|
||||
environment:
|
||||
# DATA DIRECTORY SETTINGS
|
||||
# BITCOIN_DIR: bitcoin-dir-override
|
||||
# APP_STATE_DIR: app-state-dir-override
|
||||
|
||||
# BITCOIND BINARY SETTINGS
|
||||
# BITCOIND_BIN: bitcoind-binary-path-override
|
||||
# BITCOIND_EXTRA_ARGS is a comma-delimited list of extra startup flags to pass to bitcoind
|
||||
# We can remove depratedrpc=create_bdb in a future update once Jam (JoinMarket) implements descriptor wallet support
|
||||
# Bitcoin Core v30 no longer supports legacy bdb wallets, so Jam users will need to run v29.2 for compatibility
|
||||
BITCOIND_EXTRA_ARGS: '-deprecatedrpc=create_bdb'
|
||||
|
||||
# BITCOIND CONF FILE SETTINGS
|
||||
APPS_SUBNET: "${NETWORK_IP}/16" # used for rpcallowip
|
||||
P2P_PORT: "${APP_BITCOIN_P2P_PORT}" # port, bind (also used for connect details)
|
||||
P2P_WHITEBIND_PORT: "${APP_BITCOIN_P2P_WHITEBIND_PORT}" # Additional inbound P2P listener granting whitelisted permissions (whitebind) to this port; for trusted internal apps only; do not publish externally
|
||||
RPC_PORT: "${APP_BITCOIN_RPC_PORT}" # rpcport (also used for rpc client and connect details)
|
||||
TOR_PORT: "${APP_BITCOIN_TOR_PORT}" # bind=onion
|
||||
ZMQ_RAWBLOCK_PORT: "${APP_BITCOIN_ZMQ_RAWBLOCK_PORT}" # zmqpubrawblock
|
||||
ZMQ_RAWTX_PORT: "${APP_BITCOIN_ZMQ_RAWTX_PORT}" # zmqpubrawtx
|
||||
ZMQ_HASHBLOCK_PORT: "${APP_BITCOIN_ZMQ_HASHBLOCK_PORT}" # zmqpubhashblock
|
||||
ZMQ_SEQUENCE_PORT: "${APP_BITCOIN_ZMQ_SEQUENCE_PORT}" # zmqpubsequence
|
||||
ZMQ_HASHTX_PORT: "${APP_BITCOIN_ZMQ_HASHTX_PORT}" # zmqpubhashtx
|
||||
TOR_HOST: "${APP_BITCOIN_TOR_PROXY_IP}" # proxy, onion, torcontrol
|
||||
TOR_SOCKS_PORT: "9050" # proxy, onion
|
||||
TOR_CONTROL_PORT: "9051" # torcontrol
|
||||
TOR_CONTROL_PASSWORD: "moneyprintergobrrr" # torpassword
|
||||
I2P_HOST: "${APP_BITCOIN_I2P_DAEMON_IP}" # i2psam
|
||||
I2P_SAM_PORT: "7656" # i2psam
|
||||
|
||||
# RPC CLIENT SETTINGS
|
||||
BITCOIND_IP: "${APP_BITCOIN_NODE_IP}" # host for the rpc client. Also used for bitcoind conf file rpcbind & bind.
|
||||
RPC_USER: "${APP_BITCOIN_RPC_USER}" # also shown in the connect modal
|
||||
RPC_PASS: "${APP_BITCOIN_RPC_PASS}" # also shown in the connect modal
|
||||
|
||||
# CONNECTION DETAILS (shown to user in the connect modal)
|
||||
DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}"
|
||||
P2P_HIDDEN_SERVICE: "${APP_BITCOIN_P2P_HIDDEN_SERVICE}"
|
||||
RPC_HIDDEN_SERVICE: "${APP_BITCOIN_RPC_HIDDEN_SERVICE}"
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: $APP_BITCOIN_NODE_IP
|
||||
@ -74,7 +67,7 @@ services:
|
||||
ipv4_address: "${APP_BITCOIN_TOR_PROXY_IP}"
|
||||
|
||||
i2pd_daemon:
|
||||
image: purplei2p/i2pd:release-2.59.0@sha256:257653c18ce0b127ef480e3d8373b3ddbf1495e842674c8cfc59909be0015979
|
||||
image: purplei2p/i2pd:release-2.44.0@sha256:d154a599793c393cf9c91f8549ba7ece0bb40e5728e1813aa6dd4c210aa606f6
|
||||
user: "root"
|
||||
command: --sam.enabled=true --sam.address=0.0.0.0 --sam.port=7656 --loglevel=error
|
||||
restart: on-failure
|
||||
|
||||
@ -1,81 +1,155 @@
|
||||
# IP ADDRESSES
|
||||
export APP_BITCOIN_IP="10.21.22.2"
|
||||
export APP_BITCOIN_NODE_IP="10.21.21.8"
|
||||
export APP_BITCOIN_TOR_PROXY_IP="10.21.22.10"
|
||||
export APP_BITCOIN_I2P_DAEMON_IP="10.21.22.11"
|
||||
|
||||
# DATA DIR
|
||||
export APP_BITCOIN_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin"
|
||||
|
||||
# PORTS
|
||||
export APP_BITCOIN_RPC_PORT="8332"
|
||||
export APP_BITCOIN_P2P_PORT="8333"
|
||||
# Additional inbound P2P listener granting whitelisted permissions (whitebind) to this port; for trusted internal apps only; do not publish externally
|
||||
export APP_BITCOIN_P2P_WHITEBIND_PORT="8335"
|
||||
# As of v28.1, the default onion listening port will now be derived to be -port + 1 instead of being set to a fixed value (8334 on mainnet)
|
||||
# We are fine because we always hardcode port to 8333 regardless of network
|
||||
export APP_BITCOIN_TOR_PORT="8334"
|
||||
export APP_BITCOIN_ZMQ_RAWBLOCK_PORT="28332"
|
||||
export APP_BITCOIN_ZMQ_RAWTX_PORT="28333"
|
||||
export APP_BITCOIN_ZMQ_HASHBLOCK_PORT="28334"
|
||||
export APP_BITCOIN_ZMQ_SEQUENCE_PORT="28335"
|
||||
export APP_BITCOIN_ZMQ_HASHTX_PORT="28336"
|
||||
|
||||
# NETWORK
|
||||
export APP_BITCOIN_NETWORK="mainnet"
|
||||
BITCOIN_CHAIN="main"
|
||||
BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env"
|
||||
|
||||
# Check for an existing settings.json file to override APP_BITCOIN_NETWORK with user's choice
|
||||
{
|
||||
BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/settings.json"
|
||||
BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/bitcoin-config.json"
|
||||
if [[ -f "${BITCOIN_APP_CONFIG_FILE}" ]]
|
||||
then
|
||||
bitcoin_app_network=$(jq -r '.chain' "${BITCOIN_APP_CONFIG_FILE}")
|
||||
bitcoin_app_network=$(jq -r '.network' "${BITCOIN_APP_CONFIG_FILE}")
|
||||
case $bitcoin_app_network in
|
||||
"main")
|
||||
APP_BITCOIN_NETWORK="mainnet";;
|
||||
BITCOIN_NETWORK="mainnet";;
|
||||
"test")
|
||||
APP_BITCOIN_NETWORK="testnet";;
|
||||
"testnet4")
|
||||
APP_BITCOIN_NETWORK="testnet4";;
|
||||
BITCOIN_NETWORK="testnet";;
|
||||
"signet")
|
||||
APP_BITCOIN_NETWORK="signet";;
|
||||
BITCOIN_NETWORK="signet";;
|
||||
"regtest")
|
||||
APP_BITCOIN_NETWORK="regtest";;
|
||||
*)
|
||||
if [[ -n "$bitcoin_app_network" ]] && [[ "$bitcoin_app_network" != "null" ]]; then
|
||||
echo "Warning (${EXPORTS_APP_ID}): Invalid network '${bitcoin_app_network}' in settings.json. Exporting APP_BITCOIN_NETWORK as default 'mainnet'."
|
||||
fi;;
|
||||
BITCOIN_NETWORK="regtest";;
|
||||
esac
|
||||
fi
|
||||
} > /dev/null || true
|
||||
|
||||
# .env file to persist the rpc username and password
|
||||
BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env"
|
||||
|
||||
# If no .env file exists, create one with generated values
|
||||
if [[ ! -f "${BITCOIN_ENV_FILE}" ]]; then
|
||||
if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]]; then
|
||||
if [[ -z "${BITCOIN_NETWORK}" ]]; then
|
||||
BITCOIN_NETWORK="mainnet"
|
||||
fi
|
||||
|
||||
if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]] || [[ -z ${BITCOIN_RPC_AUTH+x} ]]; then
|
||||
BITCOIN_RPC_USER="umbrel"
|
||||
BITCOIN_RPC_DETAILS=$("${EXPORTS_APP_DIR}/scripts/rpcauth.py" "${BITCOIN_RPC_USER}")
|
||||
BITCOIN_RPC_PASS=$(echo "$BITCOIN_RPC_DETAILS" | tail -1)
|
||||
BITCOIN_RPC_AUTH=$(echo "$BITCOIN_RPC_DETAILS" | head -2 | tail -1 | sed -e "s/^rpcauth=//")
|
||||
fi
|
||||
|
||||
echo "export APP_BITCOIN_NETWORK='${BITCOIN_NETWORK}'" > "${BITCOIN_ENV_FILE}"
|
||||
echo "export APP_BITCOIN_RPC_USER='${BITCOIN_RPC_USER}'" >> "${BITCOIN_ENV_FILE}"
|
||||
echo "export APP_BITCOIN_RPC_PASS='${BITCOIN_RPC_PASS}'" >> "${BITCOIN_ENV_FILE}"
|
||||
echo "export APP_BITCOIN_RPC_AUTH='${BITCOIN_RPC_AUTH}'" >> "${BITCOIN_ENV_FILE}"
|
||||
fi
|
||||
|
||||
# Source the .env file to export APP_BITCOIN_RPC_USER and APP_BITCOIN_RPC_PASS
|
||||
. "${BITCOIN_ENV_FILE}"
|
||||
|
||||
# HIDDEN SERVICES
|
||||
# Make sure we don't persist the original value in .env if we have a more recent
|
||||
# value from the app config
|
||||
{
|
||||
if [[ ! -z ${BITCOIN_NETWORK+x} ]] && [[ "${BITCOIN_NETWORK}" ]] && [[ "${APP_BITCOIN_NETWORK}" ]]
|
||||
then
|
||||
APP_BITCOIN_NETWORK="${BITCOIN_NETWORK}"
|
||||
fi
|
||||
} > /dev/null || true
|
||||
|
||||
if [[ "${APP_BITCOIN_NETWORK}" == "mainnet" ]]; then
|
||||
BITCOIN_CHAIN="main"
|
||||
elif [[ "${APP_BITCOIN_NETWORK}" == "testnet" ]]; then
|
||||
BITCOIN_CHAIN="test"
|
||||
# export APP_BITCOIN_RPC_PORT="18332"
|
||||
# export APP_BITCOIN_P2P_PORT="18333"
|
||||
# export APP_BITCOIN_TOR_PORT="18334"
|
||||
elif [[ "${APP_BITCOIN_NETWORK}" == "signet" ]]; then
|
||||
BITCOIN_CHAIN="signet"
|
||||
# export APP_BITCOIN_RPC_PORT="38332"
|
||||
# export APP_BITCOIN_P2P_PORT="38333"
|
||||
# export APP_BITCOIN_TOR_PORT="38334"
|
||||
elif [[ "${APP_BITCOIN_NETWORK}" == "regtest" ]]; then
|
||||
BITCOIN_CHAIN="regtest"
|
||||
# export APP_BITCOIN_RPC_PORT="18443"
|
||||
# export APP_BITCOIN_P2P_PORT="18444"
|
||||
# export APP_BITCOIN_TOR_PORT="18445"
|
||||
else
|
||||
echo "Warning (${EXPORTS_APP_ID}): Bitcoin Network '${APP_BITCOIN_NETWORK}' is not supported"
|
||||
fi
|
||||
|
||||
export BITCOIN_DEFAULT_NETWORK="${BITCOIN_CHAIN}"
|
||||
|
||||
BIN_ARGS=()
|
||||
# Commenting out options that are replaced by generated config file. We should migrate all these over in a future update.
|
||||
# BIN_ARGS+=( "-chain=${BITCOIN_CHAIN}" )
|
||||
# BIN_ARGS+=( "-proxy=${TOR_PROXY_IP}:${TOR_PROXY_PORT}" )
|
||||
# BIN_ARGS+=( "-listen" )
|
||||
# BIN_ARGS+=( "-bind=0.0.0.0:${APP_BITCOIN_TOR_PORT}=onion" )
|
||||
# BIN_ARGS+=( "-bind=${APP_BITCOIN_NODE_IP}" )
|
||||
# BIN_ARGS+=( "-port=${APP_BITCOIN_P2P_PORT}" )
|
||||
# BIN_ARGS+=( "-rpcport=${APP_BITCOIN_RPC_PORT}" )
|
||||
BIN_ARGS+=( "-port=8333" )
|
||||
BIN_ARGS+=( "-rpcport=8332" )
|
||||
BIN_ARGS+=( "-rpcbind=${APP_BITCOIN_NODE_IP}" )
|
||||
BIN_ARGS+=( "-rpcbind=127.0.0.1" )
|
||||
BIN_ARGS+=( "-rpcallowip=${NETWORK_IP}/16" )
|
||||
BIN_ARGS+=( "-rpcallowip=127.0.0.1" )
|
||||
BIN_ARGS+=( "-rpcauth=\"${APP_BITCOIN_RPC_AUTH}\"" )
|
||||
BIN_ARGS+=( "-zmqpubrawblock=tcp://0.0.0.0:${APP_BITCOIN_ZMQ_RAWBLOCK_PORT}" )
|
||||
BIN_ARGS+=( "-zmqpubrawtx=tcp://0.0.0.0:${APP_BITCOIN_ZMQ_RAWTX_PORT}" )
|
||||
BIN_ARGS+=( "-zmqpubhashblock=tcp://0.0.0.0:${APP_BITCOIN_ZMQ_HASHBLOCK_PORT}" )
|
||||
BIN_ARGS+=( "-zmqpubsequence=tcp://0.0.0.0:${APP_BITCOIN_ZMQ_SEQUENCE_PORT}" )
|
||||
# BIN_ARGS+=( "-txindex=1" )
|
||||
# BIN_ARGS+=( "-blockfilterindex=1" )
|
||||
# BIN_ARGS+=( "-peerbloomfilters=1" )
|
||||
# BIN_ARGS+=( "-peerblockfilters=1" )
|
||||
# BIN_ARGS+=( "-rpcworkqueue=128" )
|
||||
# We can remove depratedrpc=create_bdb in a future update once Jam (JoinMarket) implements descriptor wallet support
|
||||
BIN_ARGS+=( "-deprecatedrpc=create_bdb" )
|
||||
|
||||
export APP_BITCOIN_COMMAND=$(IFS=" "; echo "${BIN_ARGS[@]}")
|
||||
|
||||
# echo "${APP_BITCOIN_COMMAND}"
|
||||
|
||||
rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname"
|
||||
p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname"
|
||||
export APP_BITCOIN_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")"
|
||||
export APP_BITCOIN_P2P_HIDDEN_SERVICE="$(cat "${p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")"
|
||||
|
||||
# TODO: it would be nice for Electrs to handle this instead, but removing this would break existing installs of Electrs until they updated.
|
||||
# Export an electrs compatible network parameter
|
||||
# electrs uses "bitcoin" instead of "mainnet", but matches all other test networks
|
||||
# electrs compatible network param
|
||||
export APP_BITCOIN_NETWORK_ELECTRS=$APP_BITCOIN_NETWORK
|
||||
if [[ "${APP_BITCOIN_NETWORK_ELECTRS}" = "mainnet" ]]; then
|
||||
APP_BITCOIN_NETWORK_ELECTRS="bitcoin"
|
||||
fi
|
||||
fi
|
||||
|
||||
{
|
||||
# Migrate settings for app updates differently to fresh installs
|
||||
BITCOIN_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin"
|
||||
IS_POST_ADVANCED_SETTINGS_INSTALL_FILE_PATH="${EXPORTS_APP_DIR}/data/app/IS_POST_ADVANCED_SETTINGS_INSTALL"
|
||||
|
||||
# If no blocks directory exists, we write out a file to indicate that this is a fresh install.
|
||||
# This gets around the issue of the pre-start hook starting up the bitcoind container early for Tor HS creation
|
||||
# and creating the blocks directory.
|
||||
if [[ ! -d "${BITCOIN_DATA_DIR}/blocks" ]] && [[ ! -d "${BITCOIN_DATA_DIR}/testnet3/blocks" ]] && [[ ! -d "${BITCOIN_DATA_DIR}/regtest/blocks" ]]
|
||||
then
|
||||
touch "${IS_POST_ADVANCED_SETTINGS_INSTALL_FILE_PATH}"
|
||||
fi
|
||||
|
||||
APP_CONFIG_EXISTS="false"
|
||||
if [[ -f "${EXPORTS_APP_DIR}/data/app/bitcoin-config.json" ]]
|
||||
then
|
||||
APP_CONFIG_EXISTS="true"
|
||||
fi
|
||||
|
||||
if [[ ! -f "${IS_POST_ADVANCED_SETTINGS_INSTALL_FILE_PATH}" ]] && [[ "${APP_CONFIG_EXISTS}" = "false" ]]
|
||||
then
|
||||
# This app is not a fresh install, it's being updated, so preserve existing clearnet over Tor setting
|
||||
export BITCOIN_INITIALIZE_WITH_CLEARNET_OVER_TOR="true"
|
||||
fi
|
||||
} || true
|
||||
@ -1,41 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../data)"
|
||||
DESIRED_OWNER="1000:1000"
|
||||
|
||||
set_correct_permissions() {
|
||||
local -r path="${1}"
|
||||
|
||||
# Check if the file exists
|
||||
if [[ -f "${path}" ]]; then
|
||||
owner=$(stat -c "%u:%g" "${path}")
|
||||
|
||||
if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then
|
||||
chown "${DESIRED_OWNER}" "${path}"
|
||||
echo "Changed ownership of ${path} to ${DESIRED_OWNER}"
|
||||
fi
|
||||
else
|
||||
echo "Skipping ${path} - file does not exist"
|
||||
fi
|
||||
}
|
||||
|
||||
# We set the correct permissions for any files that may have been created by a previous app running as root:
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/umbrel-bitcoin.conf"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf.save"
|
||||
# settings.json for any network could have been self-corrected by the old app running under root.
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/settings.json"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/regtest/settings.json"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/signet/settings.json"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet3/settings.json"
|
||||
set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet4/settings.json"
|
||||
|
||||
# Set permissions recursively on the entire /app bind directory
|
||||
if [[ -d "${APP_DATA_DIR}/app" ]]; then
|
||||
chown -R "${DESIRED_OWNER}" "${APP_DATA_DIR}/app"
|
||||
fi
|
||||
|
||||
# Delay booting the full app until the RPC and P2P Tor Hidden Services are ready
|
||||
# Delay booting Bitcoin until the RPC and P2P Tor Hidden Services are ready
|
||||
|
||||
HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname"
|
||||
|
||||
@ -43,7 +8,7 @@ if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach app
|
||||
"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach bitcoind
|
||||
"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor
|
||||
|
||||
echo "App: ${APP_ID} - Generating Tor Hidden Service..."
|
||||
|
||||
@ -2,19 +2,25 @@ manifestVersion: 1.1
|
||||
id: bitcoin
|
||||
category: bitcoin
|
||||
name: Bitcoin Node
|
||||
version: "1.2.2"
|
||||
version: "27.0"
|
||||
tagline: Run your personal node powered by Bitcoin Core
|
||||
description: >-
|
||||
Run your Bitcoin node, powered by Bitcoin Core. Independently store and validate every Bitcoin transaction.
|
||||
Connect your wallet directly to your node for unmatched privacy so your wallet provider can't track your activity - or worse, mislead you.
|
||||
Run your Bitcoin node and independently store and validate
|
||||
every single Bitcoin transaction with it. Achieve unparalleled
|
||||
privacy by connecting your wallet directly to your node to
|
||||
ensure that your wallet company can’t spy on your transactions,
|
||||
or worse — lie to you.
|
||||
|
||||
|
||||
Transacting through your own node also helps keep the Bitcoin network decentralized — win-win.
|
||||
Plus, transacting with your own node also helps keep the entire
|
||||
Bitcoin network decentralized; win-win!
|
||||
|
||||
|
||||
With over 20 advanced settings, you're in full control. Choose which version of Bitcoin Core your node runs,
|
||||
how your node connects to other nodes over Tor, clearnet, and I2P, adjust daily upload limits, set the maximum mempool size,
|
||||
fine-tune performance, and much more.
|
||||
With over 20 advanced settings, you can take control of your node
|
||||
and customize it to your needs. Control how your node connects to
|
||||
other nodes over Tor, clearnet, and I2P, adjust your daily upload
|
||||
limit, set the maximum mempool size, fine-tune its performance,
|
||||
and much more.
|
||||
|
||||
|
||||
Don't trust. Verify. On steroids.
|
||||
@ -36,12 +42,28 @@ gallery:
|
||||
path: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: >-
|
||||
This update fixes an issue that could cause the Bitcoin Node app to crash and restart unexpectedly.
|
||||
This release of the Bitcoin Node app includes the following updates:
|
||||
|
||||
|
||||
- Bitcoin Core: Upgrades Bitcoin Core to version 27.0. Full release notes for Bitcoin Core 27.0 can be found at https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-27.0.md.
|
||||
|
||||
|
||||
- New Advanced Settings Options: Adds 3 new options to the Advanced Settings menu:
|
||||
- datacarrier: Choose whether or not to relay transactions with OP_RETURN outputs.
|
||||
- datacarriersize: Set the maximum size of the data in OP_RETURN outputs (in bytes) that your node will relay.
|
||||
- permitbaremultisig: Choose wether or not to relay non-P2SH multisig transactions.
|
||||
|
||||
|
||||
- JoinMarket Compatibility: The deprecated RPC 'deprecatedrpc=create_bdb' is enabled to allow integration with JoinMarket and the Jam app by default.
|
||||
This fixes an issue where Jam app users who upgraded to Bitcoin Core v26.0 would have to manually add 'deprecatedrpc=create_bdb' to their bitcoin.conf file in order for the app to work.
|
||||
|
||||
|
||||
⚠️ For existing Jam users, if you receive a connection error in Jam after updating to Bitcoin Core v27.0, please restart the Jam app from your homescreen by right-clicking on the app and selecting 'restart'.
|
||||
widgets:
|
||||
- id: "stats"
|
||||
type: "four-stats"
|
||||
refresh: "5s"
|
||||
endpoint: "app:3000/api/widget/stats"
|
||||
endpoint: "server:3005/v1/bitcoind/widgets/stats"
|
||||
link: ""
|
||||
example:
|
||||
type: "four-stats"
|
||||
@ -62,7 +84,7 @@ widgets:
|
||||
- id: "sync"
|
||||
type: "text-with-progress"
|
||||
refresh: "2s"
|
||||
endpoint: "app:3000/api/widget/sync"
|
||||
endpoint: "server:3005/v1/bitcoind/widgets/sync"
|
||||
link: ""
|
||||
example:
|
||||
type: "text-with-progress"
|
||||
@ -71,21 +93,5 @@ widgets:
|
||||
text: "83%"
|
||||
progressLabel: "In progress"
|
||||
progress: 0.83
|
||||
backupIgnore:
|
||||
- data/bitcoin/blocks
|
||||
- data/bitcoin/chainstate
|
||||
- data/bitcoin/indexes
|
||||
- data/bitcoin/testnet3/blocks
|
||||
- data/bitcoin/testnet3/chainstate
|
||||
- data/bitcoin/testnet3/indexes
|
||||
- data/bitcoin/testnet4/blocks
|
||||
- data/bitcoin/testnet4/chainstate
|
||||
- data/bitcoin/testnet4/indexes
|
||||
- data/bitcoin/signet/blocks
|
||||
- data/bitcoin/signet/chainstate
|
||||
- data/bitcoin/signet/indexes
|
||||
- data/bitcoin/regtest/blocks
|
||||
- data/bitcoin/regtest/chainstate
|
||||
- data/bitcoin/regtest/indexes
|
||||
submitter: Umbrel
|
||||
submission: https://github.com/getumbrel/umbrel-apps/commit/576ecd2bef8d625abceed0f67ec9c487da9b2b1b
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: bitwatch_web_1
|
||||
APP_PORT: 3117
|
||||
|
||||
web:
|
||||
image: ghcr.io/zapomatic/bitwatch:v1.7.2@sha256:bfc7522e0953c212010e189fdf6bd060168fb9ed283f59512600b0da0c98bd3b
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/app/server/data
|
||||
@ -1,43 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: bitwatch
|
||||
category: bitcoin
|
||||
name: Bitwatch
|
||||
version: "1.7.2"
|
||||
tagline: Monitor Bitcoin addresses in real-time
|
||||
description: >-
|
||||
Monitor Bitcoin addresses in the mempool and on-chain using the mempool.space API and websocket.
|
||||
|
||||
|
||||
Track balance changes, get telegram notifications, and manage expectations for multiple addresses.
|
||||
|
||||
|
||||
Features:
|
||||
- Build list of addresses in collections to sum-up balances accross wallets
|
||||
- Subscribes to mempool.space (or locally hosted) websocket for real-time mempool activity
|
||||
- Double checks data against mempool.space (or locally hosted) API on a configured interval
|
||||
- Track both on-chain and mempool activity
|
||||
- Configure auto-acceptance or alert mode of changes (chain_in, chain_out, mempool_in, mempool_out)
|
||||
- by default, incoming transactions are auto-accepted, outgoing transactions are alerted
|
||||
- all activity is alerted to a configured telegram connection once (even when auto-accepted)
|
||||
- Option to use your own local node for privacy
|
||||
|
||||
|
||||
Recommended to have Mempool + Fulcrum to run privately but not required.
|
||||
developer: Zap-O-Matic
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
releaseNotes: >-
|
||||
This release addresses privacy concerns:
|
||||
|
||||
- when a local mempool instance is configured, address links open to that service url
|
||||
|
||||
website: https://github.com/zapomatic/bitwatch
|
||||
repo: https://github.com/zapomatic/bitwatch
|
||||
support: https://github.com/zapomatic/bitwatch/issues
|
||||
dependencies: []
|
||||
port: 3117
|
||||
path: ""
|
||||
submitter: Zap-O-Matic
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/2410
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1,50 +0,0 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: blinko_app_1
|
||||
APP_PORT: 1111
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
db:
|
||||
image: postgres:17.3@sha256:6e3358e46e34dae6c184f48fd06fe1b3dbf958ad5b83480031907e52b9ec2a7d
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "-q", "-d", "blinko", "-U", "blinkouser"]
|
||||
timeout: 45s
|
||||
interval: 10s
|
||||
retries: 10
|
||||
user: "1000:1000"
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data:rw
|
||||
environment:
|
||||
POSTGRES_DB: blinko
|
||||
POSTGRES_USER: blinkouser
|
||||
POSTGRES_PASSWORD: blinkopass
|
||||
restart: on-failure
|
||||
|
||||
app:
|
||||
image: blinkospace/blinko:1.8.7@sha256:f7c1167f8c86db586599d849539a732929d89adb10977046e7b427813b2a84b4
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:1111"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
NEXTAUTH_URL: http://${DEVICE_DOMAIN_NAME}:1111
|
||||
NEXT_PUBLIC_BASE_URL: http://${DEVICE_DOMAIN_NAME}:1111
|
||||
NEXTAUTH_SECRET: ${APP_SEED}
|
||||
DATABASE_URL: postgresql://blinkouser:blinkopass@blinko_db_1:5432/blinko
|
||||
user: "1000:1000"
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/app:/app/.blinko:rw
|
||||
logging:
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
restart: on-failure
|
||||
@ -1,48 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: blinko
|
||||
name: Blinko
|
||||
tagline: An AI-powered hub for your ideas and notes
|
||||
category: files
|
||||
version: "1.8.7"
|
||||
port: 1111
|
||||
description: >-
|
||||
😉 Blinko is an open-source application that combines note-taking, microblogging, pastebin functionality, task management, and AI-powered features in a self-hosted environment. The platform allows users to quickly and efficiently capture their thoughts, with full Markdown support for easy formatting.
|
||||
|
||||
|
||||
With the integration of AI models like OpenAI or Ollama, content can be intelligently searched and organized.
|
||||
|
||||
If you want to use the Ollama instance of your Umbrel, enter the following URL in the settings to connect to it: **http://ollama_ollama_1:11434**
|
||||
|
||||
|
||||
The application provides a flexible way to manage notes, which can remain private or be shared publicly. Regular automatic backups and seamless data import and export ensure that users always retain control over their content. Since Blinko is self-hosted, users maintain full data sovereignty and can rely on a secure environment without commercial restrictions.
|
||||
|
||||
|
||||
Built on Next.js, Blinko is optimized for speed and efficiency, offering a responsive and modern user experience. As an open-source project, it encourages collaboration and is available for free without hidden fees. It is designed for anyone looking for a powerful and customizable solution for digital organization.
|
||||
developer: Blinko
|
||||
website: https://blinko-demo.vercel.app/
|
||||
submitter: dennysubke
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/2183
|
||||
repo: https://github.com/blinko-space/blinko
|
||||
support: https://github.com/blinko-space/blinko/issues
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
- 5.jpg
|
||||
releaseNotes: >-
|
||||
This update includes new features, bug fixes, and improvements.
|
||||
|
||||
|
||||
Key highlights in this version:
|
||||
- Added MiniMax as a new built-in AI/LLM provider option
|
||||
- Fixed file upload errors caused by special characters in filenames
|
||||
- Fixed tag filters not being cleared when resetting search
|
||||
- Updated Turkish translations for various UI elements
|
||||
|
||||
|
||||
Full release notes are available at https://github.com/blinko-space/blinko/releases
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: booklore_web_1
|
||||
APP_PORT: 6060
|
||||
|
||||
web:
|
||||
image: booklore/booklore:v2.2.0@sha256:346064cb1fef6149dad2d8a373ea5fd1a7e3b61c22540995e40e8452136e202b
|
||||
# does not work rootless
|
||||
#user: "1000:1000"
|
||||
restart: on-failure
|
||||
environment:
|
||||
DATABASE_URL: jdbc:mariadb://booklore_db_1:3306/booklore
|
||||
DATABASE_USERNAME: bookloreuser
|
||||
DATABASE_PASSWORD: booklorepass
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_started
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/app:/app/data
|
||||
- ${APP_DATA_DIR}/data/books:/books
|
||||
|
||||
db:
|
||||
image: mariadb:12.0.2@sha256:b30cc65b57a11a2e791ad5c06284e599fe9f1bf3fe9081a88d85bcf36389be4a
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
environment:
|
||||
MARIADB_DATABASE: booklore
|
||||
MARIADB_USER: bookloreuser
|
||||
MARIADB_PASSWORD: booklorepass
|
||||
MARIADB_ROOT_PASSWORD: rootpass
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/db:/var/lib/mysql
|
||||
@ -1,62 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: booklore
|
||||
name: BookLore
|
||||
tagline: An app for managing and reading books
|
||||
category: files
|
||||
version: "2.2.0"
|
||||
port: 6060
|
||||
description: >-
|
||||
📖 BookLore is a modern web application created to transform the way digital libraries are managed and experienced. It is designed for readers who want to bring order and beauty to their collection of books and comics while also making them instantly accessible. Instead of leaving files scattered across folders, BookLore gathers them into a central library that can be explored and enjoyed directly through the browser. It provides a seamless reading environment where organization, discovery, and enjoyment flow together.
|
||||
|
||||
|
||||
One of the most defining features of BookLore is its ability to automatically retrieve detailed information about each book. When a new file is added, the application fetches metadata such as title, author, description, and cover art, ensuring that the library always looks complete and polished. This automation removes the tedious task of entering details by hand and makes the collection feel like a professional archive. Users can browse their books with confidence that the information they see is accurate and visually appealing.
|
||||
|
||||
|
||||
Organization is at the heart of the experience. Books can be sorted and displayed in a variety of ways, including by library, shelf, genre, author, or even mood. This flexibility allows each reader to create a system that matches personal habits and preferences, whether the goal is to maintain a precise catalog or to simply group titles in a way that feels natural. The interface encourages exploration and makes it easy to rediscover forgotten gems within the collection.
|
||||
|
||||
|
||||
Reading itself is made enjoyable through the integrated BookLore reader, which supports popular formats such as PDF, EPUB, and CBZ. The reader is not only functional but also customizable, allowing themes and layouts to be adjusted so that each session feels comfortable. Whether someone prefers dark mode for nighttime reading or a lighter background during the day, the application adapts to the needs of the reader. This level of care ensures that the act of reading is always pleasant, no matter the device or environment.
|
||||
|
||||
|
||||
BookLore is also built for sharing and collaboration. It supports multiple users with individually assigned permissions, making it possible to create a communal library without giving up control. Some users can be allowed to upload and edit entries, while others may only be able to read or download. This approach makes the application suitable for families, reading groups, or anyone who wants to curate a shared space for books while maintaining order and consistency.
|
||||
|
||||
|
||||
Another powerful element is the way BookLore integrates with external reading tools. Through support for OPDS, it can synchronize with many popular reader applications, allowing books to be accessed beyond the browser while still being part of the same collection. This flexibility ensures that the library feels connected and portable, no matter which reading environment is preferred.
|
||||
|
||||
|
||||
Adding new titles is effortless thanks to the BookDrop feature. Instead of manually managing file names and directories, users can simply place a book into a designated space, and BookLore automatically processes it, retrieves the correct metadata, and adds it to the collection. The process is smooth and requires almost no interaction, transforming what is usually a chore into a delightfully simple act.
|
||||
|
||||
|
||||
The application also makes it easy to share individual books directly with others. With built in email functionality, a title can be sent straight to a recipient, which is especially useful for sending documents or transferring books to dedicated e reading devices such as a Kindle. This convenience bridges the gap between managing a collection and actually putting the books into the hands of readers.
|
||||
|
||||
|
||||
The design of the interface is another strength of BookLore. It is responsive, intuitive, and built to adapt to different screen sizes, ensuring that browsing the library is equally pleasant on a phone, tablet, or desktop. The layout emphasizes clarity and usability, encouraging readers to engage with their collection in a way that feels natural and inviting.
|
||||
|
||||
|
||||
At its core, BookLore is more than just a management tool. It is a thoughtful environment for digital reading that combines organization, automation, sharing, and customization into a single experience. By bringing together the functional needs of cataloging with the emotional enjoyment of reading, it helps transform a scattered set of files into a living, evolving library that is both beautiful and deeply personal.
|
||||
developer: BookLore
|
||||
website: https://demo.booklore.dev/login
|
||||
submitter: dennysubke
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/3560
|
||||
repo: https://github.com/booklore-app/booklore
|
||||
support: https://github.com/booklore-app/booklore/issues
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
- 5.jpg
|
||||
- 6.jpg
|
||||
releaseNotes: >-
|
||||
New features and improvements in this release:
|
||||
- Two new library organization modes: Book per File (every file becomes its own book) and Book per Folder (files in the same folder are grouped into one book)
|
||||
- Auto-detect mode is now marked as legacy and cannot be changed on existing libraries
|
||||
- Configurable magnifier zoom and lens size for the CBX reader
|
||||
- OIDC scopes are now configurable
|
||||
|
||||
|
||||
Full release notes can be found at: https://github.com/booklore-app/booklore/releases
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
@ -7,7 +7,7 @@ services:
|
||||
APP_PORT: 8080
|
||||
|
||||
web:
|
||||
image: getumbrel/btc-rpc-explorer:v3.5.1@sha256:ebf4cdafc189761b909bb3e211b01a6b50d2f08097f3493543ed9c3174d83d89
|
||||
image: getumbrel/btc-rpc-explorer:v3.4.0@sha256:e85a1fe80919d308b1f80de2dc7174e7b61ec79384d695304fbf259b67b53594
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
environment:
|
||||
@ -32,4 +32,4 @@ services:
|
||||
BTCEXP_NO_RATES: "true"
|
||||
# Disable RPC
|
||||
BTCEXP_RPC_ALLOWALL: "false"
|
||||
BTCEXP_BASIC_AUTH_PASSWORD: ${APP_PASSWORD}
|
||||
BTCEXP_BASIC_AUTH_PASSWORD: ""
|
||||
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: btc-rpc-explorer
|
||||
category: bitcoin
|
||||
name: BTC RPC Explorer
|
||||
version: "3.5.1"
|
||||
version: "3.4.0"
|
||||
tagline: Simple, database-free blockchain explorer
|
||||
description: >-
|
||||
BTC RPC Explorer is a full-featured, self-hosted explorer for the
|
||||
@ -16,13 +16,20 @@ description: >-
|
||||
|
||||
It's time to appreciate the "fullness" of your node.
|
||||
releaseNotes: >-
|
||||
⚠️ It may take a few minutes for the app to be accessible after updating. Please be patient.
|
||||
This update brings several changes to BTC RPC Explorer, including:
|
||||
|
||||
|
||||
This release includes some small fixes, as well as a new addition to the Bitcoin Fun page.
|
||||
- Several new API actions/changes (some breaking)
|
||||
|
||||
- Homepage additions such as a "Next Halving" widget.
|
||||
|
||||
- New curated list of Bitcoin "Holidays"
|
||||
|
||||
- Refreshed "Dark" theme with blues toned down (legacy dark theme still available)
|
||||
|
||||
- and more!
|
||||
|
||||
|
||||
Full release notes for BTC RPC Explorer versions are available at https://github.com/janoside/btc-rpc-explorer/releases
|
||||
Full release notes are available at https://github.com/janoside/btc-rpc-explorer/releases/tag/v3.4.0
|
||||
developer: Dan Janosik
|
||||
website: https://bitcoinexplorer.org/
|
||||
dependencies:
|
||||
@ -36,7 +43,7 @@ gallery:
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
path: ""
|
||||
defaultUsername: "umbrel"
|
||||
deterministicPassword: true
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
submitter: Umbrel
|
||||
submission: https://github.com/getumbrel/umbrel/pull/334
|
||||
|
||||
@ -8,7 +8,7 @@ services:
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
nbxplorer:
|
||||
image: nicolasdorier/nbxplorer:2.6.0@sha256:bd2f0f513cfed2e9ab4c72e891bb8b5b508bb7ce0026bdc39babaa9362800c1e
|
||||
image: nicolasdorier/nbxplorer:2.5.2@sha256:a85a697d1cb35fd3736ed3bd4690076141beb32a965569b003b209e0b6fd4631
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
@ -22,14 +22,16 @@ services:
|
||||
NBXPLORER_CHAINS: "btc"
|
||||
NBXPLORER_SIGNALFILEDIR: "/data"
|
||||
NBXPLORER_BTCRPCURL: "http://$APP_BITCOIN_NODE_IP:$APP_BITCOIN_RPC_PORT"
|
||||
NBXPLORER_BTCNODEENDPOINT: $APP_BITCOIN_NODE_IP:${APP_BITCOIN_P2P_WHITEBIND_PORT-${APP_BITCOIN_P2P_PORT}}
|
||||
NBXPLORER_BTCNODEENDPOINT: $APP_BITCOIN_NODE_IP:$APP_BITCOIN_P2P_PORT
|
||||
NBXPLORER_BTCRPCUSER: $APP_BITCOIN_RPC_USER
|
||||
NBXPLORER_BTCRPCPASSWORD: $APP_BITCOIN_RPC_PASS
|
||||
NBXPLORER_POSTGRES: User ID=postgres;Host=btcpay-server_postgres_1;Port=5432;Application Name=nbxplorer;MaxPoolSize=20;Database=nbxplorer$APP_BITCOIN_NETWORK
|
||||
NBXPLORER_AUTOMIGRATE: 1
|
||||
NBXPLORER_NOMIGRATEEVTS: 1
|
||||
NBXPLORER_BTCHASTXINDEX: 1
|
||||
|
||||
web:
|
||||
image: btcpayserver/btcpayserver:2.3.6@sha256:0ff445daffc6d3d6bb8a59cf37f0f6c0d958eafb9b62147f65de7d66d5132392
|
||||
image: btcpayserver/btcpayserver:1.13.1@sha256:ee432e652e129d82a76e4de8ff28e90eb5476d01fcb008e3678991c52f5084e9
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: btcpay-server
|
||||
category: bitcoin
|
||||
name: BTCPay Server
|
||||
version: "2.3.6"
|
||||
version: "1.13.1"
|
||||
tagline: Accept Bitcoin payments with 0 fees & no 3rd party
|
||||
description: >-
|
||||
BTCPay Server is a payment processor that allows you to receive
|
||||
@ -34,29 +34,22 @@ path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: >-
|
||||
This release comes with new features, bug fixes, improvements, and reverts a regression.
|
||||
This update brings BTCPay Server to version 1.13.1, and includes various new features, bug fixes, and improvements.
|
||||
|
||||
|
||||
New features:
|
||||
- Wallets: Add filtering using search bar on the label filter dropdown when labels exceed more than 20
|
||||
- API: Include a payment method in the Get invoices endpoint
|
||||
- BTCPay Invoice Modal: Add a paymentMethodId parameter
|
||||
- Security: Include API key permission analysis metadata
|
||||
- A plugin can now create new permission policies
|
||||
Highlights:
|
||||
|
||||
Bug fixes:
|
||||
- Dashboard layout issues on mobile, regression from 2.3.5
|
||||
- Subscriber portal sessions can be created again via API
|
||||
- Can't upgrade/downgrade a Lifetime subscription
|
||||
- It is now possible to customize your instance name and add a contact URL in Server Settings
|
||||
|
||||
- There is a new Admin overview of the stores on the instance
|
||||
|
||||
- Onboarding: Invite new users (#5714 #5719 #5874) @dennisreimann @dstrukt
|
||||
|
||||
- A new option to add item list to keypad
|
||||
|
||||
- Support for Better Bitcoin QRs (BBQr)
|
||||
|
||||
Improvements:
|
||||
- Update Wasabi wallet folder access instructions
|
||||
- Security: Apply CSRF protection globally to UI controllers
|
||||
- Update many missing translations from the language packs
|
||||
|
||||
Regression:
|
||||
- Revert: Dashboard: Support multi-crypto wallet balance widgets
|
||||
|
||||
Full release notes can be found at https://github.com/btcpayserver/btcpayserver/releases
|
||||
Full release notes can be found at https://github.com/btcpayserver/btcpayserver/releases.
|
||||
submitter: Umbrel
|
||||
submission: https://github.com/getumbrel/umbrel/pull/353
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
version: "3.7"
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: btctracker_web_1
|
||||
APP_PORT: 3000
|
||||
|
||||
web:
|
||||
image: thewilqq/btc-tracker:v0.7.0@sha256:0c7beea5e0791cc39c9294f0a62faa24aa2ef42ed04571b63977c0afe085321b
|
||||
restart: on-failure
|
||||
user: 1000:1000
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- PORT=3000
|
||||
- DATABASE_URL=file:/app/data/bitcoin-tracker.db
|
||||
- NEXTAUTH_SECRET=${APP_SEED}
|
||||
- NEXTAUTH_URL=http://${DEVICE_DOMAIN_NAME}:3947
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/app/data
|
||||
@ -1,54 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: btctracker
|
||||
name: BTC Tracker
|
||||
tagline: A simple, privacy-focused Bitcoin investment tracker
|
||||
category: bitcoin
|
||||
version: "0.7.0"
|
||||
port: 3947
|
||||
description: >-
|
||||
BTC Tracker is a user-friendly yet powerful application designed for managing and analyzing Bitcoin investments. It was created to offer a privacy-focused and straightforward alternative to existing tracking tools, which are often cluttered with unnecessary features, complicated to set up, or designed for managing large, diversified portfolios. Many of those tools require connections to external services and the sharing of sensitive information such as wallet addresses or transaction histories.
|
||||
|
||||
|
||||
BTC Tracker takes a different approach. The entire application runs locally on your own device, with no data ever sent to external servers or third parties. All investment data, transactions, and settings are stored securely and privately on your machine, giving you full control over your personal information at all times. This makes BTC Tracker an ideal solution for anyone who values privacy and data ownership.
|
||||
|
||||
|
||||
Beyond simply recording investments, BTC Tracker provides powerful analysis features. Users can track the performance of their Bitcoin holdings over time, calculate profits and losses, and monitor their return on investment (ROI). The app supports multiple currencies, including EUR, USD, GBP, JPY, CHF, and PLN, allowing users to view their data in their preferred local currency.
|
||||
|
||||
|
||||
The interface is modern and responsive, designed to work seamlessly on both desktop and mobile devices. Users can choose between a light or dark theme depending on their visual preferences. BTC Tracker also includes CSV import and export features, making it easy to migrate data from other tools or create backups.
|
||||
|
||||
|
||||
Overall, BTC Tracker is a focused tool that puts privacy first and strips away unnecessary complexity. It gives you a clear, secure way to track your Bitcoin investments without compromising your data.
|
||||
|
||||
|
||||
⚠️ To use BTC Tracker, you need to create a user account. The application cannot function without it, as all data is securely linked to your personal profile and stored locally.
|
||||
developer: wilqq-the
|
||||
website: https://github.com/wilqq-the
|
||||
submitter: dennysubke
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/2597
|
||||
repo: https://github.com/wilqq-the/BTC-Tracker
|
||||
support: https://github.com/wilqq-the/BTC-Tracker/issues
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
releaseNotes: >-
|
||||
✨ New Features
|
||||
- Exchange Auto-Sync (Beta) — connect exchange API keys to automatically import BTC spot trades; supports Binance, Kraken, Coinbase, Bybit, and Gemini
|
||||
- Exchange Connections UI — new "Exchanges" tab in Settings to manage connections, test credentials, and trigger syncs
|
||||
|
||||
|
||||
🐛 Bug Fixes
|
||||
- Fixed "Net Holdings" on Transactions page showing USD values regardless of display currency setting
|
||||
|
||||
|
||||
🔧 Improvements
|
||||
- Calendar now has month/year dropdowns for faster navigation
|
||||
- Sort and filter on Transactions page now works across all pages (server-side)
|
||||
- New optional "Wallet" column in transactions showing source/destination wallet
|
||||
- Named wallets now show individual BTC balances in the portfolio sidebar
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
@ -1,17 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: budibase_budibase_1
|
||||
APP_PORT: 80
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
budibase:
|
||||
image: budibase/budibase:3.34.11@sha256:5f13b4c0939c5905cfeb8770bf982f71c7914f36b414c85a90a5986d251bd902
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/budibase:/data
|
||||
environment:
|
||||
JWT_SECRET: ${APP_SEED}
|
||||
@ -1,48 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: budibase
|
||||
name: Budibase
|
||||
tagline: The low code platform you'll enjoy using
|
||||
category: developer
|
||||
version: "3.34.11"
|
||||
port: 6733
|
||||
description: >-
|
||||
Budibase is an open-source low-code platform that saves engineers 100s of hours building forms, portals, and approval apps, securely.
|
||||
|
||||
|
||||
🔨 Build and ship real software
|
||||
|
||||
Unlike other platforms, with Budibase you build and ship real software. Budibase applications have performance baked in and can be designed responsively, providing users with a great experience.
|
||||
|
||||
|
||||
🗄️ Load data or start from scratch
|
||||
|
||||
Budibase pulls data from multiple sources, including MongoDB, CouchDB, PostgreSQL, MySQL, Airtable, S3, DynamoDB, or a REST API. And unlike other platforms, with Budibase you can start from scratch and create business apps with no data sources.
|
||||
|
||||
|
||||
🎨 Design and build apps with powerful pre-made components
|
||||
|
||||
Budibase comes out of the box with beautifully designed, powerful components which you can use like building blocks to build your UI. We also expose many of your favourite CSS styling options so you can go that extra creative mile.
|
||||
|
||||
|
||||
⚙️ Automate processes, integrate with other tools and connect to webhooks
|
||||
|
||||
Save time by automating manual processes and workflows. From connecting to webhooks to automating emails, simply tell Budibase what to do and let it work for you.
|
||||
developer: Budibase
|
||||
website: https://budibase.com
|
||||
submitter: Sharknoon
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/1178
|
||||
repo: https://github.com/Budibase/budibase
|
||||
support: https://github.com/Budibase/budibase/discussions
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
releaseNotes: >-
|
||||
Key improvements in this release include:
|
||||
- Fixed context passing to formatter
|
||||
- Implemented EventBrokerProcessor HTTP request to Account Portal
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/Budibase/budibase/releases
|
||||
dependencies: []
|
||||
path: ""
|
||||
@ -7,7 +7,7 @@ services:
|
||||
APP_PORT: 8083
|
||||
|
||||
server:
|
||||
image: linuxserver/calibre-web:0.6.26@sha256:95fa0d0d07bf1be2404236222a882a467431f34ee35ad29b6e7b3b4bca3b0376
|
||||
image: linuxserver/calibre-web:0.6.21@sha256:e7470c127d86178c2de121b1382cff697f233195b58e31a423ef0a235048cf63
|
||||
stop_grace_period: 1m
|
||||
environment:
|
||||
- PUID=1000
|
||||
|
||||
@ -2,18 +2,21 @@ manifestVersion: 1
|
||||
id: calibre-web
|
||||
category: files
|
||||
name: Calibre Web
|
||||
version: "0.6.26"
|
||||
version: "0.6.21"
|
||||
tagline: A clean web app for your eBooks
|
||||
description: >-
|
||||
Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.
|
||||
Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.
|
||||
It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.
|
||||
It's the webbapp version of the well known Calibre for desktop.
|
||||
|
||||
|
||||
🛠️ SET-UP INSTRUCTIONS
|
||||
|
||||
- Library Setup: On the initial setup screen, enter /books as your calibre library location.
|
||||
- Uploading eBooks: If you wish to enable the upload feature, navigate to Admin > Edit Basic Configuration > Feature Configuration and toggle "Enable Upload".
|
||||
- Documentation: It is recommended to read through the official documentation available at https://github.com/janeczku/calibre-web/wiki
|
||||
On the initial setup screen, enter /books as your calibre library location.
|
||||
|
||||
|
||||
If you wish to enable the upload feature, please go to "Settings > Edit Basic Configuration > Feature Configuration > Enable Upload".
|
||||
|
||||
|
||||
It's recommended to read through the official documentation, which is available at https://github.com/janeczku/calibre-web/wiki
|
||||
developer: Janeczku
|
||||
website: https://github.com/janeczku/calibre-web
|
||||
dependencies: []
|
||||
@ -29,20 +32,25 @@ defaultUsername: "admin"
|
||||
defaultPassword: "admin123"
|
||||
torOnly: false
|
||||
releaseNotes: >-
|
||||
This update includes several new features and improvements:
|
||||
This release contains various bug fixes, as well as the following new features:
|
||||
|
||||
- cb7 files are now supported for metadata extrcation of comicfiles (but not for comicreader)
|
||||
|
||||
- Updated lubimyczytac metadata provider
|
||||
|
||||
- Cover size is adapted to requested size from kobo
|
||||
|
||||
- Added option "-o" to define logfile via command line
|
||||
|
||||
- Added "/opds/stats" route to generate a widget
|
||||
|
||||
- Reading position can be saved in comic reader
|
||||
|
||||
- Several dependencies are upgraded to newer versions
|
||||
|
||||
- Additional translations: portuguese
|
||||
|
||||
|
||||
- Multi-edit capability for books in the book list
|
||||
- Instapaper configuration support for Kobo sync
|
||||
- Enhanced EPUB reader with page count display and Books button to return to Calibre-Web
|
||||
- Additional EPUB reader theme
|
||||
- Improved performance during search operations
|
||||
- Fixed compatibility with Calibre 9
|
||||
- Fixed read status updates when books are archived
|
||||
- Fixed mass removal of books from shelves
|
||||
- Security improvement: API keys are no longer exposed in config exports
|
||||
|
||||
|
||||
Full release notes can be found here: https://github.com/janeczku/calibre-web/releases
|
||||
Full release notes can be found here: https://github.com/janeczku/calibre-web/releases/tag/0.6.21
|
||||
submitter: Xosten
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/74
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1,34 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: canary_web_1
|
||||
APP_PORT: 3000
|
||||
PROXY_AUTH_WHITELIST: "/api/*"
|
||||
|
||||
backend:
|
||||
image: schjonhaug/canary-backend:v1.4.0@sha256:daf6920e1f0ff781c526fa92ee0e39720dd1b18b5d7e1bcdd0aeff0cb76a68ad
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
environment:
|
||||
CANARY_NETWORK: mainnet
|
||||
CANARY_ELECTRUM_URL: tcp://$APP_ELECTRS_NODE_IP:$APP_ELECTRS_NODE_PORT
|
||||
CANARY_BIND_ADDRESS: 0.0.0.0:3001
|
||||
CANARY_DATA_DIR: /app/data
|
||||
CANARY_MODE: "self-hosted"
|
||||
CANARY_SYNC_INTERVAL: 60
|
||||
CANARY_MEMPOOL_PORT: ${APP_CANARY_MEMPOOL_PORT:-}
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/app/data
|
||||
|
||||
web:
|
||||
image: schjonhaug/canary-frontend:v1.4.0@sha256:5c273df8bf4dc16af0edc8f6d48519ecffb4a76b49ad8eb0cef99259c6188511
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
environment:
|
||||
API_URL: http://canary_backend_1:3001
|
||||
depends_on:
|
||||
- backend
|
||||
@ -1,10 +0,0 @@
|
||||
export APP_CANARY_PORT="3005"
|
||||
|
||||
# Auto-detect optional Mempool integration
|
||||
# If Mempool is installed on Umbrel, pass its port so Canary can link to it
|
||||
# Note: APP_MEMPOOL_PORT comes from Mempool's exports.sh, which is only sourced
|
||||
# if Mempool is a dependency. Since it's optional, we hardcode the known port.
|
||||
installed_apps=$("${UMBREL_ROOT}/scripts/app" ls-installed)
|
||||
if echo "$installed_apps" | grep --quiet 'mempool'; then
|
||||
export APP_CANARY_MEMPOOL_PORT="3006"
|
||||
fi
|
||||
@ -1,35 +0,0 @@
|
||||
manifestVersion: 1.1
|
||||
id: canary
|
||||
category: bitcoin
|
||||
name: Canary
|
||||
version: "1.4.0"
|
||||
tagline: Early warning system for Bitcoin cold storage
|
||||
description: >-
|
||||
A canary in the cold mine. When your bitcoins are in cold storage, you seldom check on them.
|
||||
|
||||
|
||||
Canary acts as an early warning system that alerts you the moment your coins move, giving you immediate notification of any activity on your wallets.
|
||||
|
||||
|
||||
Built with Rust and BDK, it provides real-time transaction intelligence with advanced pattern recognition (RBF fee bumping, CPFP acceleration) and instant multilingual notifications via ntfy.sh.
|
||||
|
||||
|
||||
Set custom balance alerts (equal, less than, or more than) to monitor your holdings. Perfect for monitoring cold storage and Bitcoin holdings you don't actively use.
|
||||
developer: schjonhaug
|
||||
website: https://github.com/schjonhaug/canary
|
||||
repo: https://github.com/schjonhaug/canary
|
||||
support: https://github.com/schjonhaug/canary/issues
|
||||
port: 3005
|
||||
dependencies:
|
||||
- electrs
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
releaseNotes: >-
|
||||
Monitor individual Bitcoin addresses alongside HD wallets, with automatic transaction lookup via your local Mempool instance when installed on Umbrel. Added the ability to test your ntfy notification setup directly from the app.
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
submitter: schjonhaug
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/4117
|
||||
@ -1,12 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: cashu-me_web_1
|
||||
APP_PORT: 80
|
||||
|
||||
web:
|
||||
image: rstmsn/cashu-me:0.1.1@sha256:46cf3752f58e20b7fd191b270208f6f41aa143ba950fddb0efb390ed3ea2851b
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
@ -1,49 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: cashu-me
|
||||
category: bitcoin
|
||||
name: Cashu.me Wallet
|
||||
version: "0.1.1"
|
||||
tagline: An open-source Bitcoin ecash wallet
|
||||
description: >-
|
||||
🥜 Cashu.me is a free and open-source Bitcoin wallet built on the Cashu ecash protocol.
|
||||
It combines the speed and efficiency of ecash with the power of Bitcoin — ensuring
|
||||
your financial privacy like never before.
|
||||
|
||||
## 🚀 Why Use Cashu.me?
|
||||
|
||||
- 🧾 No KYC – You stay anonymous.
|
||||
- 🔐 Privacy-first – Ecash ensures your wallet data stays yours.
|
||||
- 🪙 Bitcoin-native – Designed from the ground up to work with Bitcoin.
|
||||
- 🧠 Open-source – Trust through transparency.
|
||||
|
||||
## 🌐 How It Works
|
||||
|
||||
Cashu is a privacy-focused ecash protocol for Bitcoin. Learn more at https://cashu.space.
|
||||
|
||||
To use the wallet, you need to connect to one or more Cashu mints of your choice. This
|
||||
wallet is not affiliated with any specific mint.
|
||||
|
||||
## 📦 Important to Know
|
||||
|
||||
- 🔑 **Back up your seed phrase!** Your ecash tokens are stored locally in your browser.
|
||||
If you clear your browser data without a backup, your funds will be lost forever.
|
||||
- 🧪 **Beta Warning**: This wallet is in active development and considered beta software.
|
||||
Use at your own risk.
|
||||
- 🧾 **License**: Open-source and MIT licensed.
|
||||
releaseNotes: >-
|
||||
This release contains various improvements and bug fixes.
|
||||
developer: cashubtc
|
||||
website: https://cashu.space
|
||||
dependencies: []
|
||||
repo: https://github.com/cashubtc/cashu.me
|
||||
support: https://docs.cashu.space/
|
||||
port: 3194
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
submitter: RSTMSN
|
||||
submission: https://github.com/getumbrel/umbrel\-apps/pull/3044
|
||||
@ -1,24 +0,0 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: chantools_chantools_1
|
||||
APP_PORT: 7682
|
||||
|
||||
chantools:
|
||||
image: guggero/chantools:v0.14.1-umbrel@sha256:8994745086ab1708205f030f70e37dcfbe57154c72f27782089b229069fd8043
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1s
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/chantools
|
||||
- ${UMBREL_ROOT}/app-data/lightning/data/lnd:/lnd:ro
|
||||
command:
|
||||
- "ttyd"
|
||||
- "-W"
|
||||
- "-p"
|
||||
- "7682"
|
||||
- "bash"
|
||||
- "-c"
|
||||
- "/bash-wrapper.sh"
|
||||
@ -1,36 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: chantools
|
||||
category: bitcoin
|
||||
name: chantools CLI
|
||||
version: "v1.14.1"
|
||||
tagline: lnd and cln channel rescue utility
|
||||
description: >-
|
||||
chantools is a command line interface (CLI) utility designed to help
|
||||
Lightning Network node operators rescue their funds after experiencing data
|
||||
loss.
|
||||
|
||||
|
||||
You might want to visit https://www.node-recovery.com/chantools for more
|
||||
information about what commands to run and how to compose those commands.
|
||||
|
||||
|
||||
Also, you don't have to run chantools on Umbrel specifically. You can download
|
||||
and run it on any machine, there is no direct interaction with your Lightning
|
||||
node required and for most commands you don't even need anything other than
|
||||
your seed phrase.
|
||||
developer: guggero
|
||||
website: https://github.com/lightninglabs/chantools
|
||||
dependencies: []
|
||||
repo: https://github.com/lightninglabs/chantools
|
||||
support: https://github.com/lightninglabs/chantools/issues
|
||||
port: 7682
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: ""
|
||||
submitter: guggero
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/3849
|
||||
@ -1,16 +0,0 @@
|
||||
version: "3.7"
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: chromium_chromium_1
|
||||
APP_PORT: 3000
|
||||
|
||||
chromium:
|
||||
image: ghcr.io/linuxserver/chromium:version-8d3cb5f1@sha256:d7c5f7faf5fe524117fd73c4d446e1bf81bccd0d64d073a30b8c9819fdf105d6
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/config
|
||||
shm_size: "1gb"
|
||||
restart: on-failure
|
||||
@ -1,33 +0,0 @@
|
||||
manifestVersion: 1.2
|
||||
id: chromium
|
||||
name: Chromium
|
||||
tagline: The open-source browser project
|
||||
category: networking
|
||||
version: "8d3cb5f1"
|
||||
port: 30099
|
||||
description: >-
|
||||
⚠️ Removal Notice: The Chromium app has been disabled as there are no more updates that work without HTTPS.
|
||||
|
||||
|
||||
Chromium is an open-source web browser project initiated and primarily maintained by Google. Serving as the foundation for many browsers, including Google Chrome, Microsoft Edge, and Opera, Chromium aims to build a safer, faster, and more stable way for all users to experience the web.
|
||||
developer: The Chromium Project
|
||||
website: https://www.chromium.org/Home/
|
||||
submitter: maddog11010
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/1888
|
||||
repo: https://github.com/linuxserver/docker-chromium
|
||||
support: https://discourse.linuxserver.io/
|
||||
dependencies: []
|
||||
path: ""
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
releaseNotes: >-
|
||||
This release includes various new features, security and performance improvements.
|
||||
|
||||
|
||||
It is recommended to update to this version for an enhanced browsing experience and increased security.
|
||||
|
||||
|
||||
Full release notes can be found at https://developer.chrome.com/release-notes
|
||||
disabled: true
|
||||
@ -7,7 +7,7 @@ services:
|
||||
APP_PORT: 3000
|
||||
|
||||
web:
|
||||
image: ghcr.io/radiokot/umbrel-cloudflared:1.0.2@sha256:9660fb4e90317036d2b418f1c9437cc2cdb7f7bdd8d820084237a0c37bb94f5b
|
||||
image: ghcr.io/radiokot/umbrel-cloudflared:1.0.1-cf.2023.10.0@sha256:77a0fe80bd9c8c1fa83290bbffbb1d478a047c4103ecd2aa5826bd9f19f84f18
|
||||
hostname: cloudflared-web
|
||||
restart: on-failure
|
||||
stop_grace_period: 1s
|
||||
@ -21,10 +21,10 @@ services:
|
||||
CLOUDFLARED_TOKEN_FILE: "/app/data/token"
|
||||
|
||||
connector:
|
||||
image: ghcr.io/radiokot/umbrel-cloudflared-connector:1.0.1-cf.2026.3.0@sha256:8f883ef254bbf44ba94a2647233b36723fe51cf84690ba9b5311145f3b2a8892
|
||||
image: ghcr.io/radiokot/umbrel-cloudflared-connector:1.0.0-cf.2023.10.0@sha256:4e8daf3826c1717cce0b37dda927f0a255ca87d6bb75e4d97e5412643a531abe
|
||||
hostname: cloudflared-connector
|
||||
restart: on-failure
|
||||
stop_grace_period: 3s
|
||||
stop_grace_period: 5s
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/data
|
||||
environment:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user