Compare commits
3 Commits
master
...
knorrium/m
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
509edb1c01 | ||
|
|
dd6f3eb503 | ||
|
|
e5649538b2 |
2
.github/workflows/lint-apps.yml
vendored
2
.github/workflows/lint-apps.yml
vendored
@ -10,4 +10,4 @@ jobs:
|
||||
name: Lint apps
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: sharknoon/umbrel-app-linter-action@d0b39f9ec5867fd001b05d5ddd6037dcc35f41bd
|
||||
- uses: sharknoon/umbrel-app-linter-action@d392151f207ab882efc7ddd4a299b6290b6356eb
|
||||
23
README.md
23
README.md
@ -1,12 +1,14 @@
|
||||
# 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.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:
|
||||
|
||||
@ -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.
|
||||
@ -370,7 +365,7 @@ 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)
|
||||
4. [Purchase an Umbrel Home device](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.
|
||||
|
||||
@ -422,7 +417,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 +456,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 +477,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.59@sha256:5d5e3aef39a8c8906a324f0c2da0a6123929e459b57c1e3f05e401dca5c7bf02
|
||||
# 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"]
|
||||
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: adguard-home
|
||||
category: networking
|
||||
name: AdGuard Home
|
||||
version: "0.107.73"
|
||||
version: "0.107.59"
|
||||
tagline: Network-wide software for blocking ads and tracking
|
||||
description: >-
|
||||
⚠️ See below for important set-up instructions.
|
||||
@ -19,11 +19,10 @@ 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.
|
||||
This release includes bug fixes:
|
||||
|
||||
|
||||
Security Fix:
|
||||
- Authentication is now enforced for requests upgraded from HTTP/2 Cleartext (H2C) to public resources
|
||||
- Fixed an issue with rules using the client modifier
|
||||
- Resolved a problem with the search form in the query log
|
||||
|
||||
|
||||
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,30 +6,13 @@ 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-b427a89@sha256:5a9c147ff6faa562a4aaaec0af16f43d39c58d2404c1c69b3eae3b3a112f509f
|
||||
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
|
||||
@ -68,4 +51,4 @@ services:
|
||||
test: ['CMD-SHELL', 'pg_isready -U affine']
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
retries: 5
|
||||
@ -3,7 +3,7 @@ id: affine
|
||||
name: Affine
|
||||
tagline: Open source alternative to Notion, Miro, and Airtable
|
||||
category: files
|
||||
version: "0.26.3"
|
||||
version: "0.20.5"
|
||||
port: 3013
|
||||
description: >-
|
||||
A privacy-focused, local-first, open-source, and ready-to-use alternative for Notion & Miro.
|
||||
@ -36,16 +36,14 @@ gallery:
|
||||
- 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
|
||||
This update includes several improvements and bug fixes:
|
||||
- Fixed message sending issue and table collaboration
|
||||
- Improved document merging and server error handling
|
||||
- Enhanced AI chat panel and table block support
|
||||
- Added workspace avatar support and turbo renderer improvements
|
||||
- Optimized editor performance and fixed compatibility issues
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/toeverything/AFFiNE/releases
|
||||
For full release notes, visit https://github.com/toeverything/AFFiNE/releases
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
defaultUsername: ""
|
||||
@ -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
|
||||
|
||||
@ -4,17 +4,18 @@ services:
|
||||
environment:
|
||||
APP_HOST: albyhub_server_1
|
||||
APP_PORT: 8080
|
||||
PROXY_AUTH_ADD: "false"
|
||||
server:
|
||||
image: ghcr.io/getalby/hub:v1.21.6@sha256:dc05806a3384f57ded8aca2ba58d47ec93a0aeb213539b5faf32e7a3c71b5c32
|
||||
image: ghcr.io/getalby/hub:v1.16.0@sha256:dc0e9319a89c94a673324fdd587c18e766220ebd571643149a08c7a9769726ec
|
||||
user: 1000:1000
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/data
|
||||
- ${UMBREL_ROOT}/app-data/lightning/data/lnd:/lnd:ro
|
||||
- ${APP_LIGHTNING_NODE_DATA_DIR}:/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}
|
||||
LN_BACKEND_TYPE: "LND"
|
||||
LND_ADDRESS: $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT
|
||||
LND_CERT_FILE: "/lnd/tls.cert"
|
||||
LND_MACAROON_FILE: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon"
|
||||
WORK_DIR: "/data/albyhub"
|
||||
COOKIE_SECRET: ${APP_SEED}
|
||||
LOG_EVENTS: "true"
|
||||
|
||||
@ -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
|
||||
@ -3,7 +3,7 @@ id: albyhub
|
||||
name: Alby Hub ✨
|
||||
tagline: Self-custodial Lightning wallet with integrated node and app connections
|
||||
category: bitcoin
|
||||
version: "1.21.6"
|
||||
version: "1.16.0"
|
||||
port: 59000
|
||||
description: >-
|
||||
Alby Hub is an open-source, self-custodial Bitcoin Lightning wallet, with the easiest-to-use Lightning Network node for everyone.
|
||||
@ -13,20 +13,11 @@ description: >-
|
||||
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
|
||||
@ -39,19 +30,22 @@ gallery:
|
||||
- 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
|
||||
This release introduces Alby Pro, offering premium features for self-hosted Alby Hub users.
|
||||
|
||||
|
||||
Key highlights include:
|
||||
|
||||
- Buy gift cards directly in the App Store using Bitrefill
|
||||
- New apps added to the App Store
|
||||
- Improved channel opening flow with more helpful information
|
||||
- UI refresh for sidebar and settings page
|
||||
- Added healthcheck alert
|
||||
- Various minor improvements and bug fixes
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/getAlby/hub/releases
|
||||
dependencies: []
|
||||
dependencies:
|
||||
- lightning
|
||||
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.20.0@sha256:106531342a5f150e0e3dcbb348f126a5c452ecc4274f162d31545194dbe4352a
|
||||
user: 1000:1000
|
||||
init: true
|
||||
restart: on-failure
|
||||
|
||||
@ -3,7 +3,7 @@ id: audiobookshelf
|
||||
name: Audiobookshelf
|
||||
tagline: Audiobook and podcast server
|
||||
category: media
|
||||
version: "2.33.1"
|
||||
version: "2.20.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,23 @@ 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
|
||||
New features and improvements:
|
||||
- Added podcast episode table sorting option for filename
|
||||
- Improved book and podcast library page performance
|
||||
- Enhanced podcast page play button functionality
|
||||
- Updated OPF file parser to support OPF v3 refines meta elements
|
||||
|
||||
|
||||
Fixed issues:
|
||||
- Resolved issue with queuing multiple of the same episode for download
|
||||
- Fixed scanning epub not using first image for cover in some cases
|
||||
- Corrected publish year not saving when matching with OpenLibrary
|
||||
|
||||
|
||||
UI/UX enhancements:
|
||||
- Improved RTL support on podcast episodes table rows
|
||||
- Updated various settings and UI elements for clarity
|
||||
- Enhanced podcast page accessibility for screen readers
|
||||
|
||||
|
||||
Full release notes can be found at https://github.com/advplyr/audiobookshelf/releases
|
||||
|
||||
@ -8,7 +8,7 @@ services:
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
web:
|
||||
image: ghcr.io/autobrr/autobrr:v1.76.0@sha256:f0f4d73fcd77700b1c98233562cd94a78b9bf685a7594a0aac4f8a9436b5044d
|
||||
image: ghcr.io/autobrr/autobrr:v1.60.0@sha256:5f95def0aa664e653c5de820f27661357a5c77a8eef0dd7fa204efedfb7d0e45
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
user: "1000:1000"
|
||||
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: autobrr
|
||||
category: media
|
||||
name: autobrr
|
||||
version: "1.76.0"
|
||||
version: "1.60.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,11 @@ 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
|
||||
|
||||
|
||||
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
|
||||
New features and improvements:
|
||||
- Added DarkPeers indexer
|
||||
- Added PhoenixProject indexer
|
||||
- Added RocketHD indexer
|
||||
- Show current download count in filter list
|
||||
|
||||
|
||||
Full release notes are available at https://autobrr.com/release-notes
|
||||
|
||||
@ -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.5.1@sha256:ac9fe56bee9133bcb9e27fe48faaf83c57b83d75bacc277d9b2619136632b1fe
|
||||
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.5.1"
|
||||
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,22 +18,13 @@ 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
|
||||
Key improvements include:
|
||||
|
||||
- Improved language profile health checks
|
||||
- Enhanced Sonarr and Radarr syncing reliability
|
||||
- Better handling of subtitle classifications
|
||||
- Improved server connectivity and stability
|
||||
- Various performance improvements and bug fixes
|
||||
|
||||
Full release notes are found at https://github.com/morpheus65535/bazarr/releases
|
||||
developer: morpheus65535
|
||||
@ -51,4 +42,4 @@ defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
torOnly: false
|
||||
submitter: Umbrel
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/610
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/610
|
||||
@ -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,57 @@ 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: ghcr.io/retropex/umbrel-bitcoin-knots:v0.5.7@sha256:fc5ef209bd5443087416dae6efaf57e79b6b13af154ab9bd1b5bf6f0922e128b
|
||||
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}"
|
||||
# used to connect to internal bitcoind port
|
||||
RPC_PORT: "${APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT}"
|
||||
# displayed to user in connection details for external connections
|
||||
BITCOIN_RPC_PORT: "${APP_BITCOIN_KNOTS_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}"
|
||||
# displayed to user in connection details for external connections
|
||||
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: ghcr.io/retropex/bitcoin:v28.1@sha256:9dab3c9e0e21bf17ae7e624e1a3fabc51dff812ee8382fb10f8ebdf6e0af5801
|
||||
user: "1000:1000"
|
||||
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,118 @@ 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"
|
||||
|
||||
# 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" )
|
||||
BIN_ARGS+=( "-blocknotify='curl -s -m 5 http://datum_datum_1:21000/NOTIFY'" )
|
||||
# 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_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,23 +131,31 @@ if [[ "${APP_BITCOIN_KNOTS_NETWORK_ELECTRS}" = "mainnet" ]]; then
|
||||
APP_BITCOIN_KNOTS_NETWORK_ELECTRS="bitcoin"
|
||||
fi
|
||||
|
||||
# Add special handling for knots internal/external port mismatch.
|
||||
# This must appear above the below loop.
|
||||
export APP_BITCOIN_RPC_PORT="${APP_BITCOIN_RPC_PORT:-$APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT}"
|
||||
export APP_BITCOIN_P2P_PORT="${APP_BITCOIN_P2P_PORT:-$APP_BITCOIN_KNOTS_INTERNAL_P2P_PORT}"
|
||||
|
||||
for var in \
|
||||
IP \
|
||||
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_AUTH \
|
||||
INTERNAL_RPC_PORT \
|
||||
INTERNAL_P2P_PORT \
|
||||
COMMAND \
|
||||
RPC_HIDDEN_SERVICE \
|
||||
P2P_HIDDEN_SERVICE \
|
||||
NETWORK_ELECTRS
|
||||
|
||||
@ -1,41 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../data)"
|
||||
DESIRED_OWNER="1000:1000"
|
||||
# Recursively chown the bitcoind data directory if this is an install impacted by the bitcoind container running as root.
|
||||
|
||||
set_correct_permissions() {
|
||||
local -r path="${1}"
|
||||
APP_DIR="$(dirname "${BASH_SOURCE[0]}")/.."
|
||||
BITCOIND_DATA_DIR="${APP_DIR}/data/bitcoin"
|
||||
IS_BITCOIND_PERMISSIONS_SET="${APP_DIR}/data/IS_BITCOIND_PERMISSIONS_SET"
|
||||
|
||||
# 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"
|
||||
# If no blocks directory exists, we write out the file to indicate that this is a fresh install with correct permissions.
|
||||
if [[ ! -d "${BITCOIND_DATA_DIR}/blocks" ]] && [[ ! -d "${BITCOIND_DATA_DIR}/testnet3/blocks" ]] && [[ ! -d "${BITCOIND_DATA_DIR}/signet/blocks" ]] && [[ ! -d "${BITCOIND_DATA_DIR}/regtest/blocks" ]]
|
||||
then
|
||||
touch "${IS_BITCOIND_PERMISSIONS_SET}"
|
||||
fi
|
||||
|
||||
# Delay booting the full app until the RPC and P2P Tor Hidden Services are ready
|
||||
# If the file exists, we know that the permissions have already been set.
|
||||
if [[ ! -f "${IS_BITCOIND_PERMISSIONS_SET}" ]]
|
||||
then
|
||||
chown -R 1000:1000 "${BITCOIND_DATA_DIR}"
|
||||
touch "${IS_BITCOIND_PERMISSIONS_SET}"
|
||||
fi
|
||||
|
||||
# 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 +27,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..."
|
||||
|
||||
@ -10,4 +10,4 @@ HiddenServicePort $APP_BITCOIN_KNOTS_P2P_PORT $APP_BITCOIN_KNOTS_NODE_IP:$APP_BI
|
||||
|
||||
# Bitcoin Knots 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_KNOTS_RPC_PORT $APP_BITCOIN_KNOTS_NODE_IP:$APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT
|
||||
@ -4,22 +4,11 @@ implements:
|
||||
- bitcoin
|
||||
category: bitcoin
|
||||
name: Bitcoin Knots
|
||||
version: "1.2.10"
|
||||
version: "28.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.
|
||||
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
|
||||
Powered by Bitcoin Knots: https://bitcoinknots.org/
|
||||
@ -36,12 +25,15 @@ gallery:
|
||||
path: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: >-
|
||||
Internal changes
|
||||
This release updates Bitcoin Knots to version v28.1.knots20250305
|
||||
|
||||
|
||||
Full release notes can be found at https://github.com/bitcoinknots/bitcoin/releases/tag/v28.1.knots20250305
|
||||
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 +54,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 +63,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: Léo Haf
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/953
|
||||
|
||||
@ -3,59 +3,53 @@ 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.8.0@sha256:38465d8e3744223201993950954f0644841587d741e66d200d92b68ca719e6c1
|
||||
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: getumbrel/bitcoind:v28.1@sha256:c565266ea302c9ab2fc490f04ff14e584210cde3d0d991b8309157e5dfae9e8d
|
||||
user: "1000:1000"
|
||||
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 +68,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,168 @@
|
||||
# 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";;
|
||||
BITCOIN_NETWORK="testnet3";;
|
||||
"testnet4")
|
||||
APP_BITCOIN_NETWORK="testnet4";;
|
||||
BITCOIN_NETWORK="testnet4";;
|
||||
"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}" == "testnet3" ]]; 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}" == "testnet4" ]]; then
|
||||
BITCOIN_CHAIN="testnet4"
|
||||
# export APP_BITCOIN_RPC_PORT="48332"
|
||||
# export APP_BITCOIN_P2P_PORT="48333"
|
||||
# export APP_BITCOIN_TOR_PORT="48334"
|
||||
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}" )
|
||||
# We hardcode the ports p2p and rpc ports to always be the same for all networks
|
||||
# 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)
|
||||
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" )
|
||||
|
||||
# Required for LND compatibility. We can remove deprecatedrpc=warnings in a future update once LND releases a version with this fix: https://github.com/btcsuite/btcd/pull/2245
|
||||
# No longer required as of LND v0.18.4
|
||||
# BIN_ARGS+=( "-deprecatedrpc=warnings" )
|
||||
|
||||
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: "28.1"
|
||||
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,15 @@ gallery:
|
||||
path: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: >-
|
||||
This update fixes an issue that could cause the Bitcoin Node app to crash and restart unexpectedly.
|
||||
⚠️ If you are running the Lightning Node app (LND) connected to your Bitcoin Node app, please update Lightning Node to the latest version available in the app store to ensure compatibility.
|
||||
|
||||
|
||||
Bitcoin Core has been updated to v28.1. See the full Bitcoin Core release notes at https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-28.1.md
|
||||
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 +71,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 +80,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
|
||||
@ -24,7 +24,7 @@ services:
|
||||
restart: on-failure
|
||||
|
||||
app:
|
||||
image: blinkospace/blinko:1.8.7@sha256:f7c1167f8c86db586599d849539a732929d89adb10977046e7b427813b2a84b4
|
||||
image: blinkospace/blinko:0.50.0@sha256:bc74af1f724d11edab60137e4d4fedb273f88e236bcc04876b8d840ad7d87e72
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:1111"]
|
||||
interval: 30s
|
||||
|
||||
@ -3,7 +3,7 @@ id: blinko
|
||||
name: Blinko
|
||||
tagline: An AI-powered hub for your ideas and notes
|
||||
category: files
|
||||
version: "1.8.7"
|
||||
version: "0.50.0"
|
||||
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.
|
||||
@ -31,14 +31,10 @@ gallery:
|
||||
- 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
|
||||
This update of Blinko contains new features and improvements:
|
||||
- Cards now show internal sharing icons
|
||||
- Fixed behavior of the Enter key when using Chinese input method
|
||||
- Improved daily review configuration
|
||||
|
||||
|
||||
Full release notes are available at https://github.com/blinko-space/blinko/releases
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: btc-rpc-explorer
|
||||
category: bitcoin
|
||||
name: BTC RPC Explorer
|
||||
version: "3.5.1"
|
||||
version: "3.4.0-rpc"
|
||||
tagline: Simple, database-free blockchain explorer
|
||||
description: >-
|
||||
BTC RPC Explorer is a full-featured, self-hosted explorer for the
|
||||
@ -16,10 +16,10 @@ 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 RPC Browser and RPC Terminal features to BTC RPC Explorer on umbrelOS.
|
||||
|
||||
This release includes some small fixes, as well as a new addition to the Bitcoin Fun page.
|
||||
|
||||
⚠️ A username and password is now required to access the explorer due to the new RPC Browser and RPC Terminal features. You can find your unique credentials by right-clicking on the BTC RPC Explorer app icon on the umbrelOS homescreen and selecting "Show default credentials".
|
||||
|
||||
|
||||
Full release notes for BTC RPC Explorer versions are available at https://github.com/janoside/btc-rpc-explorer/releases
|
||||
|
||||
@ -8,7 +8,7 @@ services:
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
nbxplorer:
|
||||
image: nicolasdorier/nbxplorer:2.6.0@sha256:bd2f0f513cfed2e9ab4c72e891bb8b5b508bb7ce0026bdc39babaa9362800c1e
|
||||
image: nicolasdorier/nbxplorer:2.5.23@sha256:9eee0f974ed5e56756f5d75fbc7ac4008e07a768cc5f51a33e01e55a8f9a8936
|
||||
user: "1000:1000"
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
@ -22,14 +22,14 @@ 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_BTCHASTXINDEX: 1
|
||||
|
||||
web:
|
||||
image: btcpayserver/btcpayserver:2.3.6@sha256:0ff445daffc6d3d6bb8a59cf37f0f6c0d958eafb9b62147f65de7d66d5132392
|
||||
image: btcpayserver/btcpayserver:2.0.8@sha256:00f9612ec99843ba926a4aa27261272c6ec366f7099f6209e7296013d1cd3e7d
|
||||
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: "2.0.8"
|
||||
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,18 @@ path: ""
|
||||
defaultUsername: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: >-
|
||||
This release comes with new features, bug fixes, improvements, and reverts a regression.
|
||||
Highlights:
|
||||
- Added previews for fiat amounts in transactions
|
||||
- Allowed setting a custom email server through the API
|
||||
- Improved form handling and invoice display
|
||||
- Made archived invoices private for better security
|
||||
- Fixed an issue with duplicate payouts for certain payments
|
||||
- Added options to customize page titles and language settings
|
||||
- Fixed issues when upgrading from very old versions
|
||||
- Improved display of small Lightning balances
|
||||
- Notified users about the old Shopify integration being replaced
|
||||
- Fixed a crash when upgrading from older versions
|
||||
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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: ""
|
||||
@ -8,7 +8,7 @@ services:
|
||||
PROXY_AUTH_ADD: "false"
|
||||
|
||||
budibase:
|
||||
image: budibase/budibase:3.34.11@sha256:5f13b4c0939c5905cfeb8770bf982f71c7914f36b414c85a90a5986d251bd902
|
||||
image: budibase/budibase:3.8.5@sha256:e18195a03d9d4aa5cbcb5f09ac4845ee5ebcd4c22fd1730a0798fe48dce97662
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
volumes:
|
||||
|
||||
@ -3,7 +3,7 @@ id: budibase
|
||||
name: Budibase
|
||||
tagline: The low code platform you'll enjoy using
|
||||
category: developer
|
||||
version: "3.34.11"
|
||||
version: "3.8.5"
|
||||
port: 6733
|
||||
description: >-
|
||||
Budibase is an open-source low-code platform that saves engineers 100s of hours building forms, portals, and approval apps, securely.
|
||||
@ -11,7 +11,7 @@ description: >-
|
||||
|
||||
🔨 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.
|
||||
Unlike other platforms, with Budibase you build and ship single page applications. Budibase applications have performance baked in and can be designed responsively, providing users with a great experience.
|
||||
|
||||
|
||||
🗄️ Load data or start from scratch
|
||||
@ -38,9 +38,9 @@ gallery:
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
releaseNotes: >-
|
||||
Key improvements in this release include:
|
||||
- Fixed context passing to formatter
|
||||
- Implemented EventBrokerProcessor HTTP request to Account Portal
|
||||
Key highlights in this release include:
|
||||
- Improved performance for public configurations
|
||||
- Enhanced Automations External Data Connector picker
|
||||
|
||||
|
||||
Full release notes are found at https://github.com/Budibase/budibase/releases
|
||||
|
||||
@ -7,7 +7,7 @@ services:
|
||||
APP_PORT: 8083
|
||||
|
||||
server:
|
||||
image: linuxserver/calibre-web:0.6.26@sha256:95fa0d0d07bf1be2404236222a882a467431f34ee35ad29b6e7b3b4bca3b0376
|
||||
image: linuxserver/calibre-web:0.6.24@sha256:71cf33758891aa4fcd9dace41bbbc1aaf8faeedf78fff9f1a12f46cfc9156b97
|
||||
stop_grace_period: 1m
|
||||
environment:
|
||||
- PUID=1000
|
||||
@ -15,4 +15,4 @@ services:
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
- ${APP_DATA_DIR}/data/books:/books
|
||||
restart: on-failure
|
||||
restart: on-failure
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: calibre-web
|
||||
category: files
|
||||
name: Calibre Web
|
||||
version: "0.6.26"
|
||||
version: "0.6.24"
|
||||
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.
|
||||
@ -31,18 +31,17 @@ torOnly: false
|
||||
releaseNotes: >-
|
||||
This update includes several new features and improvements:
|
||||
|
||||
|
||||
- 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
|
||||
|
||||
- Added metadata extraction for audio files during upload
|
||||
- Updated PDF viewer with improved functionality
|
||||
- New upload interface with progress tracking and drag & drop support
|
||||
- Improved shelf sorting capabilities
|
||||
- Better contrast for epub reader in dark modes
|
||||
- Enhanced support for multiple e-reader email addresses
|
||||
- Improved whitespace handling and string formatting
|
||||
- Various improvements to the Kobo sync and browser experience
|
||||
- Multiple bug fixes for database handling and metadata operations
|
||||
- Enhanced support for Windows installations
|
||||
|
||||
Full release notes can be found here: https://github.com/janeczku/calibre-web/releases
|
||||
submitter: Xosten
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/74
|
||||
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
|
||||
@ -6,7 +6,7 @@ services:
|
||||
APP_PORT: 3000
|
||||
|
||||
chromium:
|
||||
image: ghcr.io/linuxserver/chromium:version-8d3cb5f1@sha256:d7c5f7faf5fe524117fd73c4d446e1bf81bccd0d64d073a30b8c9819fdf105d6
|
||||
image: ghcr.io/linuxserver/chromium:version-c0d313e5@sha256:231b1e75148be3a8bda8143a2cdffb18e0207d3dc3ba8fc4e07fb954830d51db
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
|
||||
@ -1,14 +1,11 @@
|
||||
manifestVersion: 1.2
|
||||
manifestVersion: 1
|
||||
id: chromium
|
||||
name: Chromium
|
||||
tagline: The open-source browser project
|
||||
category: networking
|
||||
version: "8d3cb5f1"
|
||||
version: "c0d313e5"
|
||||
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/
|
||||
@ -22,12 +19,3 @@ 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
|
||||
|
||||
@ -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.2025.2.0@sha256:9a126ccfd01e93e447a98f246cc948b55b4822455beb7dda995dfb216c1b3eab
|
||||
hostname: cloudflared-connector
|
||||
restart: on-failure
|
||||
stop_grace_period: 3s
|
||||
stop_grace_period: 5s
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/data
|
||||
environment:
|
||||
|
||||
@ -3,7 +3,7 @@ id: cloudflared
|
||||
name: Cloudflare Tunnel
|
||||
tagline: Access your Umbrel apps from the Internet using Cloudflare network
|
||||
category: networking
|
||||
version: "2026.3.0"
|
||||
version: "2025.2.0"
|
||||
port: 4499
|
||||
description: >-
|
||||
Start a secure tunnel to access your Umbrel apps from the Internet using the Cloudflare network.
|
||||
@ -34,7 +34,7 @@ gallery:
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
releaseNotes: >-
|
||||
The tunneling daemon (cloudflared) has been updated to 2026.3.0
|
||||
The tunneling daemon (cloudflared) has been updated to 2025.2.0
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
|
||||
@ -7,7 +7,7 @@ services:
|
||||
APP_PORT: 9001
|
||||
PROXY_AUTH_ADD: "false"
|
||||
web:
|
||||
image: dennysubke/cobalt:11.5@sha256:e3b1626d6026f1f714643ad9b0b14257b0ce9ab4cedb3a5e041eb540f2e12798
|
||||
image: dennysubke/cobalt:10.6@sha256:870110e7002b7080adc81f9cee5357ab784adba81385a7b51663a7c1e92030cd
|
||||
read_only: true
|
||||
restart: on-failure
|
||||
user: "1000:1000"
|
||||
@ -18,4 +18,3 @@ services:
|
||||
API_AUTH_REQUIRED: 0
|
||||
DURATION_LIMIT: 86400
|
||||
|
||||
|
||||
|
||||
@ -3,18 +3,18 @@ id: cobalt
|
||||
name: cobalt
|
||||
tagline: Best way to save what you love
|
||||
category: media
|
||||
version: "11.5"
|
||||
version: "10.6"
|
||||
port: 9009
|
||||
description: >-
|
||||
⚙️ In order use your own cobalt instance, go to settings > instances > and toggle "use a custom processing server". Add http://umbrel.local:9013 as your server.
|
||||
|
||||
|
||||
|
||||
|
||||
cobalt is a powerful and intuitive media downloader built to simplify the process of saving your favorite content from the web. Designed for users who want to enjoy their media without the interruptions of ads, trackers, or paywalls, cobalt offers a streamlined experience. Whether you're downloading videos, music, images, or other types of media, cobalt acts as a proxy that fetches content directly from its source, ensuring a fast and seamless process.
|
||||
|
||||
|
||||
|
||||
|
||||
What sets cobalt apart is its commitment to user privacy and freedom. The tool doesn't cache content, so you're always downloading directly from the original source. It also avoids unnecessary distractions, like ads or third-party interference, letting you enjoy a cleaner, faster, and more reliable media retrieval process.
|
||||
|
||||
|
||||
|
||||
|
||||
cobalt is ideal for anyone who values simplicity and control over their media downloads. With its easy-to-use interface and efficient functionality, you can quickly retrieve and store content without the usual hassle. Whether you're an enthusiast collecting media or someone simply trying to access content without restrictions, cobalt makes it easy to download what you love, whenever you want.
|
||||
developer: imputnet
|
||||
website: https://cobalt.tools/
|
||||
@ -28,15 +28,7 @@ gallery:
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
- 5.jpg
|
||||
releaseNotes: >-
|
||||
This release brings new features and improvements.
|
||||
|
||||
|
||||
Key Highlights:
|
||||
- Added support for explicitly specifying access tokens in the Vimeo API
|
||||
- Ensured backward compatibility with existing access tokens
|
||||
- Updated youtubei.js to version 15.1.1 for improved stability and compatibility
|
||||
- General improvements to web and API functionality
|
||||
releaseNotes: ""
|
||||
dependencies: []
|
||||
path: ""
|
||||
defaultUsername: ""
|
||||
|
||||
@ -7,7 +7,7 @@ services:
|
||||
APP_PORT: 8080
|
||||
|
||||
server:
|
||||
image: codercom/code-server:4.112.0@sha256:ddd9b0b854fec5a3c65ec0095b5c59fb8505ad44d8a18d00d6fcf6a3179692dd
|
||||
image: codercom/code-server:4.98.2@sha256:9ed588a05d4e81aa464e753a409bc3b2b93267323d1c3975fbddf6f9aef84c26
|
||||
restart: on-failure
|
||||
user: "1000:1000"
|
||||
volumes:
|
||||
|
||||
@ -2,7 +2,7 @@ manifestVersion: 1
|
||||
id: code-server
|
||||
category: developer
|
||||
name: code-server
|
||||
version: "4.112.0"
|
||||
version: "4.98.2"
|
||||
tagline: Run VS Code on your Umbrel
|
||||
description: >-
|
||||
Run VS Code on your Umbrel and access it in the browser so you can
|
||||
@ -13,10 +13,10 @@ description: >-
|
||||
|
||||
By running all intensive tasks run on your Umbrel, preserve battery life of your devices when you're on the go.
|
||||
releaseNotes: >-
|
||||
This release updates the underlying VS Code editor to 1.112.0.
|
||||
This release updates the underlying VS Code editor to 1.98.2.
|
||||
|
||||
|
||||
Full release notes are available at https://github.com/coder/code-server/releases
|
||||
Full release notes are available at https://github.com/coder/code-server/releases.
|
||||
developer: Coder
|
||||
website: https://coder.com
|
||||
dependencies: []
|
||||
|
||||
@ -1 +0,0 @@
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: convertx_server_1
|
||||
APP_PORT: 3000
|
||||
|
||||
server:
|
||||
image: c4illin/convertx:v0.17.0@sha256:e1f85be04bbaf8a55ead9261194c3ae0fa0957d303ea537127154860b2552afd
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
user: "1000:1000"
|
||||
environment:
|
||||
- HTTP_ALLOWED=true
|
||||
- ACCOUNT_REGISTRATION=true
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/app:/app/data
|
||||
@ -1,42 +0,0 @@
|
||||
manifestVersion: 1
|
||||
id: convertx
|
||||
category: files
|
||||
name: ConvertX
|
||||
version: "0.17.0"
|
||||
tagline: Self-hosted online file converter
|
||||
description: >
|
||||
ConvertX is a self-hosted file converter. Supports over a thousand different formats.
|
||||
|
||||
|
||||
Features:
|
||||
- Convert files to different formats.
|
||||
- Process multiple files at once
|
||||
- Password protection
|
||||
- Multiple accounts
|
||||
developer: Emrik Östling
|
||||
website: https://github.com/C4illin/ConvertX
|
||||
dependencies: []
|
||||
repo: https://github.com/C4illin/ConvertX
|
||||
support: https://github.com/C4illin/ConvertX/issues
|
||||
port: 8386
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
path: ""
|
||||
defaultPassword: ""
|
||||
releaseNotes: >-
|
||||
This release brings two new converters and a new bulk deletion UI.
|
||||
|
||||
|
||||
Key highlights include:
|
||||
- Added VCF to CSV converter
|
||||
- Added bulk job deletion with multi-select UI
|
||||
- Added markitdown implementation for document conversion
|
||||
- Fixed timezone display in history page
|
||||
- Added support for .wma files in FFMPEG
|
||||
|
||||
|
||||
Full changelog can be found at https://github.com/C4illin/ConvertX/releases
|
||||
submitter: Kanishk Pachauri
|
||||
submission: https://github.com/getumbrel/umbrel-apps/pull/3832
|
||||
@ -1,15 +0,0 @@
|
||||
[global]
|
||||
p: 3923 # Listen on port 3923
|
||||
e2dsa # Scans all mounted volumes (including readonly ones)
|
||||
e2ts # Scans for tags in all files that don't have tags yet
|
||||
z # Enable Zeroconf discovery
|
||||
shr: /shr # Base URL where shares will be accessible from
|
||||
hist: /cfg/hists/ # Database (fs+media index) and thumbnail cache
|
||||
|
||||
[accounts]
|
||||
admin: umbrel # Create a user named admin with password
|
||||
|
||||
[/]
|
||||
/media # Expose /media as the root volume
|
||||
accs:
|
||||
rwmda: admin # The user "admin" gets read-write-move-delete-admin
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user