Compare commits

..

3 Commits

59 changed files with 985 additions and 1538 deletions

View File

@ -2,7 +2,9 @@ name: Check app updates
on:
push:
branches: [ v3-dev, c-lightning-v3 ]
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
schedule:
@ -13,17 +15,19 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
- name: Check for updates
run: |
./update.py
export GITHUB_TOKEN="${{ secrets.GITHUB_TOKEN }}"
git clone https://github.com/runcitadel/dev-tools
cd dev-tools
yarn && yarn tsc
yarn citadel-dev --consumerkey ${{ secrets.TWITTER_CONSUMER_API_KEY }} --consumersecret ${{ secrets.TWITTER_CONSUMER_API_SECRET }} --accesstoken ${{ secrets.TWITTER_ACCESS_TOKEN }} --accesstokensecret ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} appcheck -d ../apps
yarn citadel-dev appcheck -d ../apps
cd ..
rm -rf dev-tools
./update.py
git config --global user.name "GitHub Actions"
git config --global user.email "actions@github.com"
git commit -a -m "Update apps" || true

View File

@ -1,323 +0,0 @@
# Porting a docker-compose.yml app to Citadel's app.yml
This guide should help you port your Umbrel app to Citadel's app.yml system.
We'll do that based on the BlueWallet app as an example.
Here's the current docker-compose.yml, this is what we're starting off with.
```yaml
version: "3.7"
services:
redis:
image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396"
user: "1000:1000"
command: "redis-server --requirepass moneyprintergobrrr"
restart: "on-failure"
stop_grace_period: "1m"
init: true
volumes:
- "${APP_DATA_DIR}/data/redis:/data"
networks:
default:
ipv4_address: "${APP_BLUEWALLET_REDIS_IP}"
lndhub:
image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a"
user: "1000:1000"
depends_on:
- "redis"
restart: "on-failure"
stop_grace_period: "1m"
init: true
ports:
- "${APP_BLUEWALLET_LNDHUB_PORT}:${APP_BLUEWALLET_LNDHUB_PORT}"
volumes:
- "${LND_DATA_DIR}:/lnd:ro"
environment:
PORT: "${APP_BLUEWALLET_LNDHUB_PORT}"
TOR_URL: "${APP_HIDDEN_SERVICE}"
LND_CERT_FILE: "/lnd/tls.cert"
LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}'
networks:
default:
ipv4_address: "${APP_BLUEWALLET_LNDHUB_IP}"
```
Porting to Citadel basically means cleaning up that file.
As a first step, we can remove the `networks` section from every container. This is added automatically in Citadel.
```yaml
version: "3.7"
services:
redis:
image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396"
user: "1000:1000"
command: "redis-server --requirepass moneyprintergobrrr"
restart: "on-failure"
stop_grace_period: "1m"
init: true
volumes:
- "${APP_DATA_DIR}/data/redis:/data"
lndhub:
image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a"
user: "1000:1000"
depends_on:
- "redis"
restart: "on-failure"
stop_grace_period: "1m"
init: true
ports:
- "${APP_BLUEWALLET_LNDHUB_PORT}:${APP_BLUEWALLET_LNDHUB_PORT}"
volumes:
- "${LND_DATA_DIR}:/lnd:ro"
environment:
PORT: "${APP_BLUEWALLET_LNDHUB_PORT}"
TOR_URL: "${APP_HIDDEN_SERVICE}"
LND_CERT_FILE: "/lnd/tls.cert"
LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}'
```
Now, we need to set the version to 2 and also turn services into an array. Instead of an object with containername: definition, we have an array of containers with a name property.
```yaml
version: "2"
services:
- name: redis
image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396"
user: "1000:1000"
command: "redis-server --requirepass moneyprintergobrrr"
restart: "on-failure"
stop_grace_period: "1m"
init: true
volumes:
- "${APP_DATA_DIR}/data/redis:/data"
- name: lndhub
image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a"
user: "1000:1000"
depends_on:
- "redis"
restart: "on-failure"
stop_grace_period: "1m"
init: true
ports:
- "${APP_BLUEWALLET_LNDHUB_PORT}:${APP_BLUEWALLET_LNDHUB_PORT}"
volumes:
- "${LND_DATA_DIR}:/lnd:ro"
environment:
PORT: "${APP_BLUEWALLET_LNDHUB_PORT}"
TOR_URL: "${APP_HIDDEN_SERVICE}"
LND_CERT_FILE: "/lnd/tls.cert"
LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}'
```
Now, we need to set permissions for every container. For every service (`bitcoind`, `electrum`, `lnd`) a container accesses, you need to add a permission:
```yaml
version: "2"
services:
- name: redis
image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396"
user: "1000:1000"
command: "redis-server --requirepass moneyprintergobrrr"
restart: "on-failure"
stop_grace_period: "1m"
init: true
volumes:
- "${APP_DATA_DIR}/data/redis:/data"
- name: lndhub
image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a"
user: "1000:1000"
depends_on:
- "redis"
restart: "on-failure"
stop_grace_period: "1m"
init: true
ports:
- "${APP_BLUEWALLET_LNDHUB_PORT}:${APP_BLUEWALLET_LNDHUB_PORT}"
volumes:
- "${LND_DATA_DIR}:/lnd:ro"
environment:
PORT: "${APP_BLUEWALLET_LNDHUB_PORT}"
TOR_URL: "${APP_HIDDEN_SERVICE}"
LND_CERT_FILE: "/lnd/tls.cert"
LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}'
permissions:
- lnd
```
If you are mounting the LND data dir on `/lnd`, you can remove the mount. This is automatically added on Citadel.
Mounts with `${APP_DATA_DIR}` can be removed too and added to `data:` without the `${APP_DATA_DIR}`
```yaml
version: "2"
services:
- name: redis
image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396"
user: "1000:1000"
command: "redis-server --requirepass moneyprintergobrrr"
restart: "on-failure"
stop_grace_period: "1m"
init: true
data:
- data/redis:/data
- name: lndhub
image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a"
user: "1000:1000"
depends_on:
- "redis"
restart: "on-failure"
stop_grace_period: "1m"
init: true
ports:
- "${APP_BLUEWALLET_LNDHUB_PORT}:${APP_BLUEWALLET_LNDHUB_PORT}"
environment:
PORT: "${APP_BLUEWALLET_LNDHUB_PORT}"
TOR_URL: "${APP_HIDDEN_SERVICE}"
LND_CERT_FILE: "/lnd/tls.cert"
LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}'
permissions:
- lnd
```
If your app has the port passed as the env var, you can remove the ports directive and make sure the port passed in is `${APP_|APP_NAME|_|CONTAINER|_PORT}` (like `${APP_BLUEWALLET_LNDHUB_PORT}`).
```yaml
version: "2"
services:
- name: redis
image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396"
user: "1000:1000"
command: "redis-server --requirepass moneyprintergobrrr"
restart: "on-failure"
stop_grace_period: "1m"
init: true
data:
- data/redis:/data
- name: lndhub
image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a"
user: "1000:1000"
depends_on:
- "redis"
restart: "on-failure"
stop_grace_period: "1m"
init: true
environment:
PORT: "${APP_BLUEWALLET_LNDHUB_PORT}"
TOR_URL: "${APP_HIDDEN_SERVICE}"
LND_CERT_FILE: "/lnd/tls.cert"
LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}'
permissions:
- lnd
```
If you app doesn't, you can simple specify `port: theportnumber`
```yaml
version: "2"
services:
- name: redis
image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396"
user: "1000:1000"
command: "redis-server --requirepass moneyprintergobrrr"
restart: "on-failure"
stop_grace_period: "1m"
init: true
data:
- data/redis:/data
- name: lndhub
image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a"
user: "1000:1000"
depends_on:
- "redis"
restart: "on-failure"
stop_grace_period: "1m"
init: true
port: 3000
environment:
TOR_URL: "${APP_HIDDEN_SERVICE}"
LND_CERT_FILE: "/lnd/tls.cert"
LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}'
permissions:
- lnd
```
But let's get back to the previous version for the next step. The next step is simply to add some metadata for your app and also rename `services` to `containers`.
```yaml
version: "2"
metadata:
category: Wallet Servers
name: BlueWallet Lightning
version: 1.4.1
tagline: Connect BlueWallet to your Lightning node
description: >-
Run BlueWallet in the most private and secure way possible by removing
3rd parties and connecting it directly to your Citadel's Lightning node.
You can pair multiple BlueWallet accounts, so your friends and family can pair
their BlueWallet with your Citadel for a trust-minimized setup.
developer: BlueWallet
website: https://lndhub.io
dependencies:
- lnd
repo: https://github.com/BlueWallet/LndHub
support: https://t.me/bluewallet
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
containers:
- name: redis
image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396"
user: "1000:1000"
command: "redis-server --requirepass moneyprintergobrrr"
restart: "on-failure"
stop_grace_period: "1m"
init: true
data:
- data/redis:/data
- name: lndhub
image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a"
user: "1000:1000"
depends_on:
- "redis"
restart: "on-failure"
stop_grace_period: "1m"
init: true
port: 3000
environment:
TOR_URL: "${APP_HIDDEN_SERVICE}"
LND_CERT_FILE: "/lnd/tls.cert"
LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "$APP_BLUEWALLET_REDIS_IP", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$LND_IP:$LND_GRPC_PORT", "password": ""}}'
permissions:
- lnd
```
Now, you got an app.yml ready. To get it addded to Citadel, submit a PR to this repo: https://github.com/runcitadel/apps

226
app-standard-v1.json Normal file
View File

@ -0,0 +1,226 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Citadel app.yml v1",
"description": "The first draft of Citadel's app.yml format",
"type": "object",
"properties": {
"version": {
"type": [
"string",
"number"
],
"description": "The version of the app.yml format you're using."
},
"metadata": {
"type": "object",
"properties": {
"name": {
"description": "Displayed name of the app",
"type": "string"
},
"version": {
"description": "Displayed version for the app",
"type": "string"
},
"category": {
"description": "The category you'd put the app in",
"type": "string"
},
"tagline": {
"description": "A clever tagline",
"type": "string"
},
"description": {
"description": "A longer description of the app",
"type": "string"
},
"developer": {
"description": "The awesome people behind the app",
"type": "string"
},
"website": {
"description": "Displayed version for the app",
"type": "string"
},
"dependencies": {
"description": "The services the app depends on",
"type": "array",
"items": {
"type": "string"
}
},
"repo": {
"description": "The development repository for your app",
"type": "string"
},
"support": {
"description": "A link to the app support wiki/chat/...",
"type": "string"
},
"gallery": {
"type": "array",
"description": "URLs or paths in the runcitadel/app-images/[app-name] folder with app images",
"items": {
"type": "string"
}
},
"path": {
"description": "The path of the app's visible site the open button should open",
"type": "string"
},
"defaultPassword": {
"description": "The app's default password",
"type": "string"
},
"torOnly": {
"description": "Whether the app is only available over tor",
"type": "boolean"
},
"mainContainer": {
"type": "string",
"description": "The name of the main container for the app. If set, IP, port, and hidden service will be assigned to it automatically."
},
"updateContainer": {
"type": "string",
"description": "The container the developer system should automatically update."
}
},
"required": [
"name",
"version",
"category",
"tagline",
"description",
"developer",
"website",
"repo",
"support",
"gallery"
],
"additionalProperties": false
},
"containers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"image": {
"type": "string"
},
"permissions": {
"type": "array",
"items": {
"type": "string",
"enum": [
"lnd",
"bitcoind",
"electrum",
"root",
"hw"
]
}
},
"ports": {
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
},
"port": {
"type": "number",
"description": "If this is the main container, the port inside the container which will be exposed to the outside as the port specified in metadata."
},
"environment": {
"type": "object"
},
"data": {
"type": "array",
"description": "An array of at directories in the container the app stores its data in. Can be empty. Please only list top-level directories.",
"items": {
"type": "string"
}
},
"user": {
"type": "string",
"description": "The user the container should run as"
},
"stop_grace_period": {
"type": "string",
"description": "The grace period for stopping the container. Defaults to 1 minute."
},
"depends_on": {
"type": "array",
"description": "The services the container depends on"
},
"entrypoint": {
"type": [
"string",
"array"
],
"description": "The entrypoint for the container"
},
"bitcoin_mount_dir": {
"type": "string",
"description": "Where to mount the bitcoin dir"
},
"command": {
"type": [
"string",
"array"
],
"description": "The command for the container"
},
"init": {
"type": "boolean",
"description": "Whether the container should be run with init"
},
"stop_signal": {
"type": "string",
"description": "The signal to send to the container when stopping"
},
"noNetwork": {
"type": "boolean",
"description": "Set this to true if the container shouldn't get an IP & port exposed."
},
"needsHiddenService": {
"type": "boolean",
"description": "Set this to true if the container should be assigned a hidden service even if it's not the main container."
},
"hiddenServicePort": {
"type": "number",
"description": "Set this to a port if your container exposes multiple ports, but only one should be a hidden service."
},
"hiddenServicePorts": {
"type": "object",
"description": "Set this to a map of service names to hidden service ports if your container exposes multiple ports, and all of them should be hidden services.",
"patternProperties": {
"^[a-zA-Z0-9_]+$": {
"type": [
"number",
"array"
]
}
}
},
"restart": {
"type": "string",
"description": "When the container should restart. Can be 'always' or 'on-failure'."
}
},
"additionalProperties": false
},
"additionalProperties": false
}
},
"required": [
"metadata",
"containers"
],
"additionalProperties": false
}

View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
SPDX-License-Identifier: AGPL-3.0-only

View File

@ -1,208 +0,0 @@
# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema
$schema: https://json-schema.org/draft/2020-12/schema
title: Citadel app.yml v3
description: The third revision of Citadel's app.yml format
type: object
properties:
version:
type:
- string
- number
description: The version of the app.yml format you're using.
metadata:
type: object
properties:
name:
description: Displayed name of the app
type: string
version:
description: Displayed version for the app
type: string
category:
description: The category you'd put the app in
type: string
tagline:
description: A clever tagline
type: string
description:
description: A longer description of the app
type: string
developers:
description: The awesome people behind the app
type: object
patternProperties:
"^.*$":
type: string
dependencies:
description: >-
The services the app depends on.
This can also contain an array like [c-lightning, lnd] if your app requires one of two dependencies to function.
type: array
items:
type: [string, array]
items:
type: string
repo:
description: "The development repository (or repositories) for your app, if you have multiple, in the format human readable name: repo url"
type: [string, object]
patternProperties:
"^.*$":
type: string
support:
description: A link to the app support wiki/chat/...
type: string
gallery:
type: array
description: >-
URLs or paths in the runcitadel/app-images/[app-name] folder with app
images
items:
type: string
path:
description: The path of the app's visible site the open button should open
type: string
defaultPassword:
description: >-
The app's default password.
Set this to $APP_SEED if the password is the environment variable $APP_SEED.
type: string
torOnly:
description: Whether the app is only available over tor
type: boolean
updateContainer:
type:
- string
- array
description: The container(s) the automatic update system should automatically update.
required:
- name
- version
- category
- tagline
- description
- developers
- repo
- support
- gallery
additionalProperties: false
containers:
type: array
items:
type: object
properties:
name:
type: string
image:
type: string
requiredPorts:
type: array
items:
type: number
description: Ports this container requires to be exposed to work properly
port:
type: number
description: >-
If this is the main container, the port inside the container which
will be exposed to the outside as the port specified in metadata.
If this is not set, the port is passed as an env variable in the format APP_${APP_NAME}_${CONTAINER_NAME}_PORT
preferredOutsidePort:
type: number
description: The port this container would like to have "port" exposed as.
requiresPort:
type: boolean
description: Set this to true if the app requires the preferredOutsidePort to be the real outside port.
environment:
type: object
data:
type: array
description: >-
An array of at directories in the container the app stores its data
in. Can be empty. Please only list top-level directories.
items:
type: string
user:
type: string
description: The user the container should run as
stop_grace_period:
type: string
description: The grace period for stopping the container. Defaults to 1 minute.
depends_on:
type: array
description: The services the container depends on
entrypoint:
type:
- string
- array
description: The entrypoint for the container
mounts:
type: object
description: Where to mount some services' data directories
properties:
bitcoin:
type: string
description: Where to mount the bitcoin dir
lnd:
type: string
description: Where to mount the lnd dir
c_lightning:
type: string
description: Where to mount the c-lightning dir
additionalProperties: false
command:
type:
- string
- array
description: The command for the container
init:
type: boolean
description: Whether the container should be run with init
stop_signal:
type: string
description: The signal to send to the container when stopping
noNetwork:
type: boolean
description: >-
Set this to true if the container shouldn't get an IP & port
exposed. This isn't necessary, but helps the docker-compose.yml generator to generate a cleaner output.
hiddenServicePorts:
type:
- object
- number
- array
items:
type:
- string
- number
- array
description: >-
This can either be a map of hidden service names (human readable names, not the .onion URL, and strings, not numbers)
to a port if your app needs multiple hidden services on different ports,
a map of port inside to port on the hidden service (if your app has multiple ports on one hidden service),
or simply one port number if your apps hidden service should only expose one port to the outside which isn't 80.
restart:
type: string
description: When the container should restart. Can be 'always' or 'on-failure'.
requires:
description: Dependencies this container requires, it is ignored without it.
type: array
items:
type: string
network_mode:
type: string
additionalProperties: false
required:
- name
- image
additionalProperties: false
required:
- metadata
- containers
additionalProperties: false

146
apps.json Normal file
View File

@ -0,0 +1,146 @@
[
{
"id": "sphinx-relay",
"name": "Sphinx Relay",
"repo": "https://github.com/stakwork/sphinx-relay",
"version": "2.2.5"
},
{
"id": "lnme",
"name": "LnMe",
"repo": "https://github.com/bumi/lnme",
"version": "1.4.0"
},
{
"id": "mempool",
"name": "Mempool",
"repo": "https://github.com/mempool/mempool",
"version": "2.3.1"
},
{
"id": "btc-rpc-explorer",
"name": "BTC RPC Explorer",
"repo": "https://github.com/janoside/btc-rpc-explorer",
"version": "3.3.0"
},
{
"id": "nextcloud",
"name": "Nextcloud",
"repo": "https://github.com/nextcloud/server",
"version": "23.0.1"
},
{
"id": "squeaknode",
"name": "Squeaknode",
"repo": "https://github.com/squeaknode/squeaknode",
"version": "0.1.194"
},
{
"id": "bluewallet",
"name": "BlueWallet Lightning",
"repo": "https://github.com/BlueWallet/LndHub",
"version": "1.4.1"
},
{
"id": "lightning-terminal",
"name": "Lightning Terminal",
"repo": "https://github.com/lightninglabs/lightning-terminal",
"version": "0.6.2-alpha"
},
{
"id": "node-red",
"name": "Node-RED",
"repo": "https://github.com/node-red/node-red",
"version": "2.2.0"
},
{
"id": "synapse-admin",
"name": "Synapse Admin",
"repo": "https://github.com/Awesome-Technologies/synapse-admin",
"version": "0.8.4"
},
{
"id": "bitfeed",
"name": "Bitfeed",
"repo": "https://github.com/bitfeed-project/bitfeed",
"version": "2.1.2"
},
{
"id": "vaultwarden",
"name": "Vaultwarden",
"repo": "https://github.com/dani-garcia/vaultwarden",
"version": "1.24.0"
},
{
"id": "specter-desktop",
"name": "Specter Desktop",
"repo": "https://github.com/cryptoadvance/specter-desktop",
"version": "1.8.1"
},
{
"id": "krystal-bull",
"name": "Krystal Bull",
"repo": "https://github.com/bitcoin-s/krystal-bull",
"version": "1.7.0-212-d9126650"
},
{
"id": "btc-rpc-explorer-public",
"name": "BTC RPC Explorer (Public)",
"repo": "https://github.com/janoside/btc-rpc-explorer",
"version": "3.3.0"
},
{
"id": "lightning-shell",
"name": "Lightning Shell",
"repo": "https://ibz.github.io/lightning-shell/",
"version": "0.1.4"
},
{
"id": "synapse",
"name": "Synapse",
"repo": "https://github.com/matrix-org/synapse",
"version": "1.51.0"
},
{
"id": "thunderhub",
"name": "ThunderHub",
"repo": "https://github.com/apotdevin/thunderhub",
"version": "0.13.6"
},
{
"id": "lnmarkets",
"name": "LN Markets",
"repo": "https://github.com/ln-markets/umbrel",
"version": "1.1.5"
},
{
"id": "btcpay-server",
"name": "BTCPay Server",
"repo": "https://github.com/btcpayserver/btcpayserver",
"version": "1.4.3"
},
{
"id": "btc-rpc-explorer-public-fast",
"name": "BTC RPC Explorer (Public; Fast version)",
"repo": "https://github.com/janoside/btc-rpc-explorer",
"version": "3.3.0"
},
{
"id": "code-server",
"name": "code-server",
"repo": "https://github.com/cdr/code-server",
"version": "4.0.2"
},
{
"id": "ride-the-lightning",
"name": "Ride The Lightning",
"repo": "https://github.com/Ride-The-Lightning/RTL",
"version": "0.12.1"
},
{
"id": "uptime-kuma",
"name": "Uptime Kuma",
"repo": "https://github.com/louislam/uptime-kuma",
"version": "1.11.3"
}
]

3
apps.json.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
SPDX-License-Identifier: AGPL-3.0-only

146
apps/apps.json Normal file
View File

@ -0,0 +1,146 @@
[
{
"id": "sphinx-relay",
"name": "Sphinx Relay",
"repo": "https://github.com/stakwork/sphinx-relay",
"version": "2.2.5"
},
{
"id": "lnme",
"name": "LnMe",
"repo": "https://github.com/bumi/lnme",
"version": "1.4.0"
},
{
"id": "mempool",
"name": "Mempool",
"repo": "https://github.com/mempool/mempool",
"version": "2.3.1"
},
{
"id": "btc-rpc-explorer",
"name": "BTC RPC Explorer",
"repo": "https://github.com/janoside/btc-rpc-explorer",
"version": "3.3.0"
},
{
"id": "nextcloud",
"name": "Nextcloud",
"repo": "https://github.com/nextcloud/server",
"version": "23.0.1"
},
{
"id": "squeaknode",
"name": "Squeaknode",
"repo": "https://github.com/squeaknode/squeaknode",
"version": "0.1.194"
},
{
"id": "bluewallet",
"name": "BlueWallet Lightning",
"repo": "https://github.com/BlueWallet/LndHub",
"version": "1.4.1"
},
{
"id": "lightning-terminal",
"name": "Lightning Terminal",
"repo": "https://github.com/lightninglabs/lightning-terminal",
"version": "0.6.2-alpha"
},
{
"id": "node-red",
"name": "Node-RED",
"repo": "https://github.com/node-red/node-red",
"version": "2.2.0"
},
{
"id": "synapse-admin",
"name": "Synapse Admin",
"repo": "https://github.com/Awesome-Technologies/synapse-admin",
"version": "0.8.4"
},
{
"id": "bitfeed",
"name": "Bitfeed",
"repo": "https://github.com/bitfeed-project/bitfeed",
"version": "2.1.2"
},
{
"id": "vaultwarden",
"name": "Vaultwarden",
"repo": "https://github.com/dani-garcia/vaultwarden",
"version": "1.24.0"
},
{
"id": "specter-desktop",
"name": "Specter Desktop",
"repo": "https://github.com/cryptoadvance/specter-desktop",
"version": "1.8.1"
},
{
"id": "krystal-bull",
"name": "Krystal Bull",
"repo": "https://github.com/bitcoin-s/krystal-bull",
"version": "1.7.0-212-d9126650"
},
{
"id": "btc-rpc-explorer-public",
"name": "BTC RPC Explorer (Public)",
"repo": "https://github.com/janoside/btc-rpc-explorer",
"version": "3.3.0"
},
{
"id": "lightning-shell",
"name": "Lightning Shell",
"repo": "https://ibz.github.io/lightning-shell/",
"version": "0.1.4"
},
{
"id": "synapse",
"name": "Synapse",
"repo": "https://github.com/matrix-org/synapse",
"version": "1.51.0"
},
{
"id": "thunderhub",
"name": "ThunderHub",
"repo": "https://github.com/apotdevin/thunderhub",
"version": "0.13.6"
},
{
"id": "lnmarkets",
"name": "LN Markets",
"repo": "https://github.com/ln-markets/umbrel",
"version": "1.1.5"
},
{
"id": "btcpay-server",
"name": "BTCPay Server",
"repo": "https://github.com/btcpayserver/btcpayserver",
"version": "1.4.3"
},
{
"id": "btc-rpc-explorer-public-fast",
"name": "BTC RPC Explorer (Public; Fast version)",
"repo": "https://github.com/janoside/btc-rpc-explorer",
"version": "3.3.0"
},
{
"id": "code-server",
"name": "code-server",
"repo": "https://github.com/cdr/code-server",
"version": "4.0.2"
},
{
"id": "ride-the-lightning",
"name": "Ride The Lightning",
"repo": "https://github.com/Ride-The-Lightning/RTL",
"version": "0.12.1"
},
{
"id": "uptime-kuma",
"name": "Uptime Kuma",
"repo": "https://github.com/louislam/uptime-kuma",
"version": "1.11.3"
}
]

View File

@ -1,116 +0,0 @@
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Payments
name: BitcartCC
version: 0.6.9.1
tagline: BitcartCC is a self-hosted payment processor and developer solutions
platform for cryptocurrencies
description: BitcartCC provides light-weight, but secure and easy-to-use
solutions for merchants and developers
developers:
BitcartCC: https://bitcartcc.com
repo: https://github.com/bitcartcc/bitcart
support: https://bitcartcc.com/#community
gallery:
- 1.png
- 2.png
- 3.png
dependencies:
- electrum
path: /help/
containers:
- name: admin
restart: unless-stopped
image: bitcartcc/bitcart-admin:stable
command: yarn start
environment:
BITCART_ADMIN_LOG_FILE: bitcart.log
BITCART_ADMIN_API_URL: http://$APP_DOMAIN:$APP_BITCARTCC_MAIN_PORT/api
BITCART_ADMIN_ROOTPATH: /admin
BITCART_ADMIN_SOCKS_PROXY: socks5h://$TOR_PROXY_IP:$TOR_PROXY_PORT
BITCART_ADMIN_ONION_API_URL: http://$APP_HIDDEN_SERVICE/api
BITCART_ADMIN_ONION_HOST: http://$APP_HIDDEN_SERVICE
- name: backend
depends_on:
- bitcoin
- database
- redis
restart: unless-stopped
image: bitcartcc/bitcart:stable
command: bash -c "alembic upgrade head && gunicorn -c gunicorn.conf.py main:app"
environment:
IN_DOCKER: false
LOG_FILE: bitcart.log
BITCART_DATADIR: /datadir
BITCART_BACKUPS_DIR: /backups
BITCART_VOLUMES: /datadir /backups
BTC_NETWORK: $BITCOIN_NETWORK
BTC_LIGHTNING: true
REDIS_HOST: redis://$APP_BITCARTCC_REDIS_IP
DB_HOST: $APP_BITCARTCC_DATABASE_IP
BTC_HOST: $APP_BITCARTCC_BITCOIN_IP
BITCART_BACKEND_ROOTPATH: /api
data:
- data/bitcart:/datadir
- data/backups:/backups
- name: bitcoin
restart: unless-stopped
image: bitcartcc/bitcart-btc:stable
environment:
BTC_HOST: $APP_BITCARTCC_BITCOIN_IP
BTC_NETWORK: $BITCOIN_NETWORK
BTC_LIGHTNING: true
BTC_SERVER: $ELECTRUM_IP:$ELECTRUM_PORT:t
data:
- data/bitcoin:/data
- name: database
restart: unless-stopped
image: ghcr.io/runcitadel/postgres:main@sha256:8f25afe966a63fd3f11a1052e73f30b9de5ddc0876bebaaf944d485374c73c01
environment:
POSTGRES_DB: bitcart
POSTGRES_HOST_AUTH_METHOD: trust
data:
- data/postgres:/var/lib/postgresql/data
user: 1000:1000
- name: redis
restart: unless-stopped
image: redis:alpine
- name: store
restart: unless-stopped
image: bitcartcc/bitcart-store:stable
command: yarn start
environment:
BITCART_STORE_API_URL: http://$APP_DOMAIN:$APP_BITCARTCC_MAIN_PORT/api
BITCART_STORE_SOCKS_PROXY: socks5h://$TOR_PROXY_IP:$TOR_PROXY_PORT
BITCART_STORE_ONION_API_URL: http://$APP_HIDDEN_SERVICE/api
BITCART_STORE_ONION_HOST: http://$APP_HIDDEN_SERVICE
user: 1000:1000
- name: worker
depends_on:
- backend
restart: unless-stopped
image: bitcartcc/bitcart:stable
command: python3 worker.py
environment:
IN_DOCKER: false
LOG_FILE: bitcart.log
BITCART_DATADIR: /datadir
BITCART_BACKUPS_DIR: /backups
BITCART_VOLUMES: /datadir /backups
BTC_NETWORK: $BITCOIN_NETWORK
BTC_LIGHTNING: true
REDIS_HOST: redis://$APP_BITCARTCC_REDIS_IP
DB_HOST: $APP_BITCARTCC_DATABASE_IP
BTC_HOST: $APP_BITCARTCC_BITCOIN_IP
data:
- data/bitcart:/datadir
- data/backups:/backups
- image: nginx:1.21.3-alpine@sha256:1ff1364a1c4332341fc0a854820f1d50e90e11bb0b93eb53b47dc5e10c680116
init: true
port: 80
name: main
data:
- nginx/nginx.conf:/etc/nginx/nginx.conf
- nginx/html:/usr/share/nginx/html/help

View File

@ -1,25 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>BitcartCC</title>
<link rel="stylesheet" type="text/css" href="pico.min.css" />
</head>
<body>
<main class="container container-fluid">
<h1>Welcome to BitcartCC!</h1>
<ul>
<li><a href="/">Access your store</a></li>
<li><a href="/admin">Access your admin panel</a></li>
<li><a href="/api/">Merchants API</a></li>
<li>
<a target="_blank" rel="noopener noreferrer"
href="https://docs.bitcartcc.com/bitcartcc-basics/walkthrough">BitcartCC Walkthrough</a>
</li>
</ul>
</main>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,61 +0,0 @@
# SPDX-FileCopyrightText: 2020 Umbrel. https://getumbrel.com
# SPDX-FileCopyrightText: 2021-2022 Citadel and contributors
#
# SPDX-License-Identifier: GPL-3.0-or-later
user nginx;
worker_processes 1;
error_log /dev/stdout info;
events {
worker_connections 1024;
}
http {
access_log /dev/stdout;
proxy_read_timeout 600;
default_type application/octet-stream;
# If we receive Upgrade, set Connection to "upgrade"; otherwise, delete any
# Connection header that may have been passed to this server
map $http_upgrade $proxy_connection {
default upgrade;
'' close;
}
# Apply fix for very long server names
server_names_hash_bucket_size 128;
# Prevent Nginx Information Disclosure
server_tokens off;
gzip on;
gzip_min_length 1000;
gzip_types image/svg+xml text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
server {
listen 80;
location /api/ {
proxy_pass http://backend:8000/;
}
location /admin {
proxy_pass http://admin:4000;
}
location /help {
include /etc/nginx/mime.types;
root /usr/share/nginx/html;
index index.html;
}
location / {
proxy_pass http://store:3000;
}
}
}

View File

@ -2,21 +2,18 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 1
version: 3
metadata:
category: Explorers
name: Bitfeed
version: 2.2.1
version: 2.1.2
tagline: A live visualization of your node's mempool
description: A self-hosted version of Bitfeed - the open source mempool & block
visualizer available at https://bits.monospace.live. Watch as new
transactions drop into your node's mempool, before being packaged into newly
mined blocks. Monitor Bitcoin network activity, explore the composition of
the latest block, or simply enjoy a soothing Bitcoin screensaver.
developers:
Mononaut: https://monospace.live
description: A self-hosted version of Bitfeed - the open source mempool & block visualizer available at https://bits.monospace.live. Watch as new transactions drop into your node's mempool, before being packaged into newly mined blocks. Monitor Bitcoin network activity, explore the composition of the latest block, or simply enjoy a soothing Bitcoin screensaver.
developer: Mononaut
website: https://monospace.live
dependencies:
- bitcoind
repo: https://github.com/bitfeed-project/bitfeed
@ -25,13 +22,10 @@ metadata:
- 1.jpg
- 2.jpg
- 3.jpg
updateContainer:
- main
- api
containers:
- name: main
image: ghcr.io/bitfeed-project/bitfeed-client:v2.2.1@sha256:70c89d49d20ba3da21c648c259f45a4b89e06bfe1d97374a092dce6f891d03c6
image: ghcr.io/runcitadel/bitfeed-client:master@sha256:6c456e408748ee3c240a57080b7d9b9dd0fd3fabfca8323d6e050f50f2a58178
restart: on-failure
stop_grace_period: 1m
port: 80
@ -39,24 +33,23 @@ containers:
- api
environment:
TARGET: citadel
BACKEND_HOST: $APP_BITFEED_API_IP
BACKEND_HOST: "$APP_BITFEED_API_IP"
BACKEND_PORT: "3000"
- name: api
image: ghcr.io/bitfeed-project/bitfeed-server:v2.2.1@sha256:60eae8109d3d6a377aec8a954f93b6be9ee48de717c9ab5810c2a5afcf688554
user: 1000:1000
image: ghcr.io/runcitadel/bitfeed-server:master@sha256:a1fed2fcb2a7ba61f6aed2281cd16812f6cd31670464a46d2a97d9f0b99e8a34
user: "1000:1000"
restart: on-failure
stop_grace_period: 1m
environment:
PORT: "3000"
BITCOIN_HOST: $BITCOIN_IP
BITCOIN_ZMQ_RAWTX_PORT: $BITCOIN_ZMQ_RAWTX_PORT
BITCOIN_ZMQ_RAWBLOCK_PORT: $BITCOIN_ZMQ_RAWBLOCK_PORT
BITCOIN_ZMQ_SEQUENCE_PORT: $BITCOIN_ZMQ_SEQUENCE_PORT
BITCOIN_RPC_PORT: $BITCOIN_RPC_PORT
BITCOIN_RPC_USER: $BITCOIN_RPC_USER
BITCOIN_RPC_PASS: $BITCOIN_RPC_PASS
RPC_POOLS: 3
RPC_POOL_SIZE: 4
BITCOIN_HOST: "$BITCOIN_IP"
BITCOIN_ZMQ_RAWTX_PORT: "$BITCOIN_ZMQ_RAWTX_PORT"
BITCOIN_ZMQ_RAWBLOCK_PORT: "$BITCOIN_ZMQ_RAWBLOCK_PORT"
BITCOIN_RPC_PORT: "$BITCOIN_RPC_PORT"
BITCOIN_RPC_USER: "$BITCOIN_RPC_USER"
BITCOIN_RPC_PASS: "$BITCOIN_RPC_PASS"
data:
- data:/app/data
permissions:
- bitcoind

View File

@ -2,9 +2,9 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Wallet Servers
@ -18,8 +18,8 @@ metadata:
You can pair multiple BlueWallet accounts, so your friends and family can pair
their BlueWallet with your Citadel for a trust-minimized setup.
developers:
BlueWallet: https://lndhub.io
developer: BlueWallet
website: https://lndhub.io
dependencies:
- lnd
repo: https://github.com/BlueWallet/LndHub
@ -30,8 +30,18 @@ metadata:
- 3.jpg
containers:
- name: redis
image: redis:6.2.6-bullseye@sha256:0c0484b1d1ff36faace984fe9d8e0fe58892ecc34a4859b97171045b9cd343e1
command: redis-server --requirepass moneyprintergobrrr
data:
- data/redis:/data
user: 1000:1000
init: true
- name: main
image: bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a
permissions:
- lnd
depends_on:
- redis
port: 3000
@ -60,11 +70,3 @@ containers:
user: 1000:1000
init: true
restart: "on-failure"
- name: redis
image: redis:6.2.6-bullseye@sha256:0c0484b1d1ff36faace984fe9d8e0fe58892ecc34a4859b97171045b9cd343e1
command: redis-server --requirepass moneyprintergobrrr
data:
- data/redis:/data
user: 1000:1000
init: true

View File

@ -2,9 +2,9 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Explorers
@ -12,15 +12,14 @@ metadata:
version: 3.3.0
tagline: More RAM-intensive, but faster Bitcoin explorer
description: >-
Unlike the "normal" version, this version doesn't have a password protection
and can be shared with anyone. This version also uses more RAM, but you'll
get a faster explorer with more features.
Unlike the "normal" version, this version doesn't have a password protection and can be shared with anyone.
This version also uses more RAM, but you'll get a faster explorer with more features.
This is a self-hosted explorer for the Bitcoin blockchain, driven by RPC calls to your own Bitcoin node. It is easy to run and can be connected to other tools (like Electrum servers) to achieve a full-featured explorer.
Whatever reasons you may have for running a full node (trustlessness, technical curiosity, supporting the network, etc) it's valuable to appreciate the fullness of your node. With this explorer, you can explore not just the blockchain database, but also explore all of the functional capabilities of your own node.
developers:
Dan Janosik: https://explorer.btc21.org
developer: Dan Janosik
website: https://explorer.btc21.org
dependencies:
- electrum
- bitcoind
@ -30,9 +29,13 @@ metadata:
- 1.jpg
- 2.jpg
- 3.jpg
containers:
- name: main
image: ghcr.io/runcitadel/btc-rpc-explorer:v3.3.0@sha256:01ecdf20d75cfe758c2c0908492ed938f89da55dd6ee98e61cacc4c73ef8cef1
image: ghcr.io/runcitadel/btc-rpc-explorer:main@sha256:743a2f67035e41901b3d1f65f9f654525d00312d1d7d15f5be19a2768d33b416
permissions:
- electrum
- bitcoind
port: 3002
environment:
BTCEXP_HOST: 0.0.0.0

View File

@ -2,9 +2,9 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Explorers
@ -12,14 +12,13 @@ metadata:
version: 3.3.0
tagline: Database-free, self-hosted Bitcoin explorer to share
description: >-
Unlike the "normal" version, this version doesn't have a password protection
and can be shared with anyone.
Unlike the "normal" version, this version doesn't have a password protection and can be shared with anyone.
This is a self-hosted explorer for the Bitcoin blockchain, driven by RPC calls to your own Bitcoin node. It is easy to run and can be connected to other tools (like Electrum servers) to achieve a full-featured explorer.
Whatever reasons you may have for running a full node (trustlessness, technical curiosity, supporting the network, etc) it's valuable to appreciate the fullness of your node. With this explorer, you can explore not just the blockchain database, but also explore all of the functional capabilities of your own node.
developers:
Dan Janosik: https://explorer.btc21.org
developer: Dan Janosik
website: https://explorer.btc21.org
dependencies:
- electrum
- bitcoind
@ -29,9 +28,13 @@ metadata:
- 1.jpg
- 2.jpg
- 3.jpg
containers:
- name: main
image: ghcr.io/runcitadel/btc-rpc-explorer:v3.3.0@sha256:01ecdf20d75cfe758c2c0908492ed938f89da55dd6ee98e61cacc4c73ef8cef1
image: ghcr.io/runcitadel/btc-rpc-explorer:main@sha256:743a2f67035e41901b3d1f65f9f654525d00312d1d7d15f5be19a2768d33b416
permissions:
- electrum
- bitcoind
port: 3002
environment:
BTCEXP_HOST: 0.0.0.0

View File

@ -2,9 +2,9 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Explorers
@ -12,13 +12,11 @@ metadata:
version: 3.3.0
tagline: Database-free, self-hosted Bitcoin explorer
description: >-
This is a self-hosted explorer for the Bitcoin blockchain, driven by RPC
calls to your own Bitcoin node. It is easy to run and can be connected to
other tools (like Electrum servers) to achieve a full-featured explorer.
This is a self-hosted explorer for the Bitcoin blockchain, driven by RPC calls to your own Bitcoin node. It is easy to run and can be connected to other tools (like Electrum servers) to achieve a full-featured explorer.
Whatever reasons you may have for running a full node (trustlessness, technical curiosity, supporting the network, etc) it's valuable to appreciate the fullness of your node. With this explorer, you can explore not just the blockchain database, but also explore all of the functional capabilities of your own node.
developers:
Dan Janosik: https://explorer.btc21.org
developer: Dan Janosik
website: https://explorer.btc21.org
dependencies:
- electrum
- bitcoind
@ -32,7 +30,10 @@ metadata:
containers:
- name: main
image: ghcr.io/runcitadel/btc-rpc-explorer:v3.3.0@sha256:01ecdf20d75cfe758c2c0908492ed938f89da55dd6ee98e61cacc4c73ef8cef1
image: ghcr.io/runcitadel/btc-rpc-explorer:main@sha256:743a2f67035e41901b3d1f65f9f654525d00312d1d7d15f5be19a2768d33b416
permissions:
- electrum
- bitcoind
port: 3002
environment:
BTCEXP_HOST: 0.0.0.0

View File

@ -2,19 +2,19 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Payments
name: BTCPay Server
version: 1.6.9
version: 1.4.3
tagline: Accept Bitcoin payments. Free, open-source & self-hosted, Bitcoin
payment processor.
description: "BTCPay Server is a free and open-source Bitcoin payment processor
which allows you to accept bitcoin without fees or intermediaries. "
developers:
BTCPay Server Foundation: https://btcpayserver.org
developer: BTCPay Server Foundation
website: https://btcpayserver.org
dependencies:
- lnd
- bitcoind
@ -24,9 +24,10 @@ metadata:
- 1.jpg
- 2.jpg
- 3.jpg
mainContainer: web
containers:
- name: nbxplorer
image: nicolasdorier/nbxplorer:2.3.28@sha256:62333c578aa85487f8f8e292b4a434272fd919ce8f2e58b2d23af6342dd92778
image: nicolasdorier/nbxplorer:2.2.18@sha256:2418ecdc331d070c51343abb98ec32252d410bb130361fd0e4d946b41b4a4949
user: 1000:1000
environment:
NBXPLORER_DATADIR: /data
@ -39,15 +40,13 @@ containers:
NBXPLORER_BTCNODEENDPOINT: $BITCOIN_IP:$BITCOIN_P2P_PORT
NBXPLORER_BTCRPCUSER: $BITCOIN_RPC_USER
NBXPLORER_BTCRPCPASSWORD: $BITCOIN_RPC_PASS
NBXPLORER_POSTGRES: User
ID=postgres;Host=$APP_BTCPAY_SERVER_POSTGRES_IP;Port=5432;Application
Name=nbxplorer;MaxPoolSize=20;Database=nbxplorer${BITCOIN_NETWORK}
NBXPLORER_AUTOMIGRATE: 1
NBXPLORER_NOMIGRATEEVTS: 1
data:
- data/nbxplorer:/data
- name: main
image: btcpayserver/btcpayserver:1.6.9@sha256:1162bb6231cbdf0a8297107951afe8a44c60a86814d07454f24b4ccf05ba1f71
permissions:
- bitcoind
- name: web
image: btcpayserver/btcpayserver:1.4.3@sha256:925b79808e5d60530da6994d6572c23cc62faed81ed3acafe423dcc50a0ba164
port: 1234
depends_on:
- nbxplorer
- postgres
@ -60,10 +59,9 @@ containers:
BTCPAY_PLUGINDIR: /data/plugins
BTCPAY_DOCKERDEPLOYMENT: "false"
BTCPAY_POSTGRES: User
ID=postgres;Host=$APP_BTCPAY_SERVER_POSTGRES_IP;Port=5432;Application
Name=btcpayserver;Database=btcpayserver$BITCOIN_NETWORK
ID=postgres;Host=$APP_BTCPAY_SERVER_POSTGRES_IP;Port=5432;Database=btcpayserver$BITCOIN_NETWORK
BTCPAY_NETWORK: $BITCOIN_NETWORK
BTCPAY_BIND: 0.0.0.0:$APP_BTCPAY_SERVER_MAIN_PORT
BTCPAY_BIND: 0.0.0.0:1234
BTCPAY_CHAINS: btc
BTCPAY_BTCEXPLORERURL: http://$APP_BTCPAY_SERVER_NBXPLORER_IP:32838
BTCPAY_BTCLIGHTNING: type=lnd-rest;server=https://$LND_IP:$LND_REST_PORT/;macaroonfilepath=/lnd/data/chain/bitcoin/$BITCOIN_NETWORK/admin.macaroon;allowinsecure=true
@ -71,9 +69,11 @@ containers:
data:
- data/nbxplorer:/data/.nbxplorer
- data/btcpay:/data
permissions:
- lnd
user: 1000:1000
- name: postgres
image: ghcr.io/runcitadel/postgres:main@sha256:8f25afe966a63fd3f11a1052e73f30b9de5ddc0876bebaaf944d485374c73c01
image: postgres:14.1-bullseye@sha256:1fe27b334443793af98d7eb320ad6f9f30fcc9bc068f545cb46ec01cefe9c8ee
user: 1000:1000
environment:
POSTGRES_HOST_AUTH_METHOD: trust

View File

@ -2,17 +2,17 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Development
name: code-server
version: 4.6.0
version: 4.0.2
tagline: Run VS Code on your Citadel
description: This app doesn't have a description yet.
developers:
Coder: https://coder.com
developer: Coder
website: https://coder.com
dependencies: []
repo: https://github.com/cdr/code-server
support: https://github.com/cdr/code-server/discussions
@ -23,9 +23,8 @@ metadata:
defaultPassword: $APP_SEED
containers:
- name: server
image: codercom/code-server:4.6.0@sha256:b87de935cbd1ec8dcc8b42af53ac37d68236137a02b743563383cb0da31d59d1
image: codercom/code-server:4.0.2@sha256:4de6369f5865c7db250fa25e3e2306ed5a3f0bad922c9392d52c0dd1dd7e4fd6
user: 1000:1000
port: 8080
environment:
PASSWORD: $APP_SEED
data:

View File

@ -1,53 +0,0 @@
# SPDX-FileCopyrightText: 2021 Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Wallets
name: JAM
version: 0.0.10
tagline: JoinMarket's awesome, man
description: JAM (JoinMarket's awesome, man) is a web-interface for JoinMarket
with focus on user-friendliness. It's time for top-notch privacy for your
bitcoin. Widespread use of JoinMarket improves bitcoin's fungibility and
privacy for all. The app provides sensible defaults and is easy to use for
beginners while still providing the features advanced users expect.
developers:
JAM developers: https://github.com/joinmarket-webui/jam
dependencies:
- bitcoind
repo: https://github.com/joinmarket-webui/jam
support: https://t.me/JoinMarketWebUI
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
- 4.jpg
- 5.jpg
defaultPassword: $APP_SEED
containers:
- name: joinmarket-webui
image: ghcr.io/joinmarket-webui/joinmarket-webui-standalone:v0.0.10-clientserver-v0.9.6
restart: on-failure
stop_grace_period: 1m
init: true
port: 80
data:
- data/joinmarket:/root/.joinmarket
environment:
RESTORE_DEFAULT_CONFIG: "true"
REMOVE_LOCK_FILES: "true"
ENSURE_WALLET: "true"
APP_USER: citadel
APP_PASSWORD: ${APP_SEED}
jm_network: $BITCOIN_NETWORK
jm_rpc_host: $BITCOIN_IP
jm_rpc_port: $BITCOIN_RPC_PORT
jm_rpc_user: $BITCOIN_RPC_USER
jm_rpc_password: ${BITCOIN_RPC_PASS}
jm_rpc_wallet_file: jm_webui_default
jm_max_cj_fee_abs: 300000
jm_max_cj_fee_rel: 0.0003

View File

@ -2,9 +2,9 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Social
@ -26,8 +26,8 @@ metadata:
WARNING: This version of Krystal Bull is an early alpha release for testing.
It's not secure, please don't use it for anything serious.
developers:
SuredBits: https://suredbits.com/
developer: SuredBits
website: https://suredbits.com/
dependencies: []
repo: https://github.com/bitcoin-s/krystal-bull
support: https://join.slack.com/t/suredbits/shared_invite/zt-eavycu0x-WQL7XOakzQo8tAy7jHHZUw

View File

@ -2,39 +2,43 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Lightning Node Management
name: Lightning Shell
version: 0.1.10
version: 0.1.4
tagline: Web shell with a selection of LN node management utilities
description: |-
description: >-
This app allows you to access a lot of terminal apps directly on the web.
The default username for this app is "citadel".
developers:
Ioan Bizău: https://lightningshell.app
developer: Ioan Bizău
website: https://ibz.me
dependencies:
- lnd
repo: https://github.com/ibz/lightning-shell
repo: https://ibz.github.io/lightning-shell/
support: https://github.com/ibz/lightning-shell/issues
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
defaultPassword: $APP_SEED
containers:
- name: web
image: ghcr.io/ibz/lightning-shell:v0.1.10@sha256:32a51c16839250829ebbae73b52478ad980f635fc0da2742524ea31300298c14
image: ghcr.io/ibz/lightning-shell:v0.1.4@sha256:e0431e087382016d558554474b92ccdd826d0f2e6d2718a099e85b6c4fffad74
restart: on-failure
stop_grace_period: 1m
port: 7681
data:
- data:/data
- data:/data
permissions:
- lnd
environment:
APP_PASSWORD: ${APP_SEED}
APP_PASSWORD: "${APP_SEED}"
USERNAME: citadel
LND_IP: ${LND_IP}
LND_IP: "${LND_IP}"
LND_GRPC_PORT: ${LND_GRPC_PORT}

View File

@ -2,13 +2,13 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Lightning Node Management
name: Lightning Terminal
version: 0.7.0-alpha
version: 0.6.2-alpha
tagline: A browser-based interface for managing channel liquidity
description: >-
With Lightning Terminal, you can
@ -23,8 +23,8 @@ metadata:
- Access a preview release of the Pool UI
- Use Pool to earn sats by opening channels to those needing inbound liquidity
developers:
Lightning Labs: https://lightning.engineering
developer: Lightning Labs
website: https://lightning.engineering
dependencies:
- lnd
repo: https://github.com/lightninglabs/lightning-terminal
@ -37,7 +37,7 @@ metadata:
defaultPassword: $APP_SEED
containers:
- name: web
image: lightninglabs/lightning-terminal:v0.7.0-alpha@sha256:7b8ac4774d6a604c1f325975885e47d8f476c2b9235db97fb6927314ab723851
image: lightninglabs/lightning-terminal:v0.6.2-alpha@sha256:04ad5849e117c45d431bf32afdfd8c806578e94b1f38c17682a309cea6ca2ee2
user: 1000:1000
environment:
HOME: /data
@ -51,3 +51,5 @@ containers:
- --uipassword="${APP_SEED}"
data:
- data:/data
permissions:
- lnd

View File

@ -1,70 +0,0 @@
# SPDX-FileCopyrightText: 2021 Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Lightning Node Management
name: LNbits
version: baf55af
tagline: Multi-user wallet management system
description: Description coming soon.
developers:
LNbits: https://github.com/lnbits/lnbits
dependencies:
- - lnd
- c-lightning
repo: https://github.com/lnbits/lnbits
support: https://t.me/lnbits
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
defaultPassword: $APP_SEED
containers:
- image: ghcr.io/runcitadel/lnbits-legends:feat-admin-password@sha256:ceb068a58eb0877235b43e0047a294634964b4057abda0ca8b9255310d914a27
command: sh -c 'uvicorn lnbits.__main__:app --port 5000 --proxy-headers --host
0.0.0.0 --forwarded-allow-ips "*"'
user: 1000:1000
init: true
port: 5000
environment:
LNBITS_DATA_FOLDER: /data
LNBITS_BACKEND_WALLET_CLASS: LndRestWallet
LND_REST_ENDPOINT: https://$LND_IP:$LND_REST_PORT/
LND_REST_CERT: /lnd/tls.cert
LND_REST_MACAROON: /lnd/data/chain/bitcoin/$BITCOIN_NETWORK/admin.macaroon
LNBITS_SITE_TITLE: LNbits on Citadel
LNBITS_DEFAULT_WALLET_NAME: LNbits wallet
LNBITS_DISABLED_EXTENSIONS: amilk
LNBITS_ADMIN_LOGIN_KEY: $APP_SEED
LNBITS_ADMIN_EXTENSIONS: ngrok,admin
name: main-lnd
data:
- data:/data
restart: on-failure
requires:
- lnd
- image: ghcr.io/runcitadel/lnbits-legends:feat-admin-password@sha256:ceb068a58eb0877235b43e0047a294634964b4057abda0ca8b9255310d914a27
command: sh -c 'uvicorn lnbits.__main__:app --port 5000 --proxy-headers --host
0.0.0.0 --forwarded-allow-ips "*"'
user: 1000:1000
init: true
port: 5000
environment:
LNBITS_DATA_FOLDER: /data
LNBITS_BACKEND_WALLET_CLASS: CLightningWallet
CLIGHTNING_RPC: /c-lightning/bitcoin/lightning-rpc
LNBITS_SITE_TITLE: LNbits (c-lightning)
LNBITS_DEFAULT_WALLET_NAME: LNbits wallet
LNBITS_DISABLED_EXTENSIONS: amilk
LNBITS_ADMIN_LOGIN_KEY: $APP_SEED
LNBITS_ADMIN_EXTENSIONS: ngrok,admin
name: main-c-lightning
data:
- data:/data
requires:
- c-lightning
restart: on-failure

View File

@ -1,43 +0,0 @@
# SPDX-FileCopyrightText: 2021 Kilian Botrel
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Lightning Node Management
name: LNDg
version: 1.2.1
tagline: Lite GUI web interface to analyze LND data and manage your node with
automation.
description: LNDg is your command center for running a profitable and efficient
routing node. From quickly viewing your node's health, automated
rebalancing, selecting new potential peers and much more.
developers:
cryptosharks131: https://github.com/cryptosharks131
dependencies:
- lnd
repo: https://github.com/cryptosharks131/lndg
support: https://t.me/+-RxoZdi7snk2ZGYx
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
path: ""
defaultPassword: $APP_SEED
containers:
- name: web
image: ghcr.io/cryptosharks131/lndg:v1.2.1@sha256:4c06dcf97b0b80324d775acdb6272a12559fbb318fe7b0fb4549e29dd0b2a7a5
restart: on-failure
stop_grace_period: 1m
mounts:
lnd: /root/.lnd
data:
- data:/lndg/data
command:
- sh
- -c
- python initialize.py -net '${BITCOIN_NETWORK}' -server
'${LND_IP}:${LND_GRPC_PORT}' -pw '${APP_SEED}' -d && supervisord &&
python manage.py runserver 0.0.0.0:${APP_LNDG_WEB_PORT}

View File

@ -2,49 +2,46 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 1
version: 3
metadata:
category: Finance
name: LN Markets
version: 1.2.3
version: 1.1.5
tagline: Trade Bitcoin derivatives on Lightning
description: >-
LN Markets is the first Lightning-native Bitcoin derivatives trading
platform.
LN Markets is the first Lightning-native Bitcoin derivatives trading platform.
LN Markets enables traders to take minimal counterparty risk:
you can trade directly from your Lightning wallet for instant and almost costless transactions.
Since March 2020, we have processed over $200 million of trading volume,
with a median fee of 1 sat for instant P&L delivery to your wallet.
This app gives you another way to interact with LN Markets:
you can directly deposit, withdraw, get trading stats and get instantly connected to your account to take positions as usual.
More features may come in the future!
Thank you for your support and let's keep building the future of finance together!
developers:
LN Markets: https://lnmarkets.com
developer: LN Markets
website: https://lnmarkets.com
dependencies:
- lnd
- lnd
repo: https://github.com/ln-markets/umbrel
support: https://www.t.me/lnmarkets
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
defaultPassword: $APP_SEED
containers:
- name: lnmarkets
image: ghcr.io/ln-markets/umbrel:v1.2.3@sha256:c11ec6d28d1b1d11d82ae8b33916732686a296beb21c9c3eaee80c823bd2d00f
image: ghcr.io/ln-markets/umbrel:v1.1.5@sha256:94b2259e4c2445d518cabc4bd6c0519c5fae87a3fb3c0bb564522e805d63bd89
user: 1000:1000
init: true
stop_grace_period: 1m
@ -52,10 +49,12 @@ containers:
environment:
APP_URL: 0.0.0.0
API_PORT: 1234
APP_DOMAIN: $APP_DOMAIN
APP_HIDDEN_SERVICE: $APP_HIDDEN_SERVICE
APP_PASSWORD: $APP_SEED
LND_IP: $LND_IP
LND_GRPC_PORT: $LND_GRPC_PORT
LND_REST_PORT: $LND_REST_PORT
BITCOIN_NETWORK: $BITCOIN_NETWORK
permissions:
- "lnd"

View File

@ -2,9 +2,10 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 1
version: 3
metadata:
category: Wallets
name: LnMe
@ -19,21 +20,26 @@ metadata:
Your lightning address is <your-name-or-anything-you-like-it-doesn't-matter>@<the-onion-url-of-this-app>.onion.
If you contact the Citadel team, you can also get a shorter and easier to use @ln.runcitadel.space address. To receive one, contact us on forum.runcitadel.space with your prefered address and also, share the onion URL of the LnMe app (not of your node, the app will have a differen one) or DM us on Twitter (https://twitter.com/runcitadel)
developers:
Michael Bumann: https://ln.michaelbumann.com/
If you contact the Citadel team, you can also get a shorter and easier to use @ln.runcitadel.space address. To receive one, contact
us on forum.runcitadel.space with your prefered address and also, share the onion URL of the LnMe app (not of your node, the app will have a differen one)
or DM us on Twitter (https://twitter.com/runcitadel)
developer: Michael Bumann
website: https://ln.michaelbumann.com/
dependencies:
- lnd
- lnd
repo: https://github.com/bumi/lnme
support: https://github.com/bumi/lnme/issues
gallery:
- https://raw.githubusercontent.com/bumi/lnme/master/lnme-demo.gif
containers:
- name: web
image: ghcr.io/bumi/lnme:master@sha256:e131a8584d2b6d1dd01723164cebad0fa2a47b4e30fe0c6fdac83ffb386de518
port: 1323
user: 1000:1000
environment:
LNME_LND_ADDRESS: $LND_IP:$LND_GRPC_PORT
LNME_LND_CERT_PATH: /lnd/tls.cert
LNME_LND_MACAROON_PATH: /lnd/data/chain/bitcoin/$BITCOIN_NETWORK/invoice.macaroon
- name: web
image: ghcr.io/bumi/lnme:master@sha256:e131a8584d2b6d1dd01723164cebad0fa2a47b4e30fe0c6fdac83ffb386de518
port: 1323
user: 1000:1000
permissions:
- lnd
environment:
LNME_LND_ADDRESS: $LND_IP:$LND_GRPC_PORT
LNME_LND_CERT_PATH: /lnd/tls.cert
LNME_LND_MACAROON_PATH: /lnd/data/chain/bitcoin/$BITCOIN_NETWORK/invoice.macaroon

View File

@ -2,13 +2,13 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Explorers
name: Mempool
version: 2.4.0
version: 2.3.1
tagline: A mempool visualizer, explorer and fee estimator
description: >-
Mempool is the official self-hosted version of the fully featured explorer,
@ -40,8 +40,8 @@ metadata:
- Multiple languages support
- JSON APIs
developers:
mempool.space: https://mempool.space/about
developer: mempool.space
website: https://mempool.space/about
dependencies:
- electrum
- bitcoind
@ -53,7 +53,7 @@ metadata:
- 3.jpg
containers:
- name: main
image: mempool/frontend:v2.4.0@sha256:f71722f1e3abfb3d8a3df6f2a32e384d39434e311bb83d810629077b4fa6ffaf
image: mempool/frontend:v2.3.1@sha256:38c955caeb58014b266904b059bfabbdab8321d20b11e7cccb139be6dfc8e36e
user: 1000:1000
init: true
command: ./wait-for mariadb:3306 --timeout=720 -- nginx -g 'daemon off;'
@ -61,7 +61,7 @@ containers:
FRONTEND_HTTP_PORT: $APP_MEMPOOL_MAIN_PORT
BACKEND_MAINNET_HTTP_HOST: $APP_MEMPOOL_API_IP
- name: api
image: mempool/backend:v2.4.0@sha256:6036cc6866b782efadc765e8189958940202b3fa1770eb35c35210c86efd2f47
image: mempool/backend:v2.3.1@sha256:f7b16a6b00ea8aabf3b71a34ec05bb373fa0b6f1d31c7981b767edb2d1b7cf89
user: 1000:1000
init: true
command: ./wait-for-it.sh mariadb:3306 --timeout=720 --strict -- ./start.sh
@ -83,6 +83,9 @@ containers:
MEMPOOL_CLEAR_PROTECTION_MINUTES: "20"
data:
- data:/backend/cache
permissions:
- electrum
- bitcoind
- name: mariadb
image: mariadb:10.7.1@sha256:a469ba5edc9267eb3f32f5a6773376677274b09d36bbe742b448fc4c787e6b37
user: 1000:1000

View File

@ -2,17 +2,15 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
version: 1
metadata:
category: Files
name: Nextcloud
version: 24.0.4
version: 23.0.1
tagline: Your personal cloud
description: No description yet.
developers:
Nextcloud GmbH: https://nextcloud.com
developer: Nextcloud GmbH
website: https://nextcloud.com
dependencies: []
repo: https://github.com/nextcloud/server
support: https://help.nextcloud.com/categories
@ -22,9 +20,7 @@ metadata:
- 3.jpg
path: /login?user=citadel
defaultPassword: $APP_SEED
updateContainer:
- web
- cron
mainContainer: web
containers:
- name: db
image: mariadb:10.7.1@sha256:832c6e488f49720f484f87ee9f2cd4487321b373db07ac77037860bcd97d92bb
@ -44,7 +40,7 @@ containers:
data:
- data/redis:/data
- name: web
image: nextcloud:24.0.4@sha256:69a52f571dc72f9ebbe222fc810f09d016173ec94f4423ea5e3d628496c1a5d5
image: nextcloud:23.0.1@sha256:867d3f34d5a7baa1fb48b18b86e36486e406832881219c5bcd7f9952bc947366
port: 80
environment:
MYSQL_HOST: ${APP_NEXTCLOUD_DB_IP}
@ -60,7 +56,7 @@ containers:
- redis
data:
- data/nextcloud:/var/www/html
- image: nextcloud:24.0.4@sha256:69a52f571dc72f9ebbe222fc810f09d016173ec94f4423ea5e3d628496c1a5d5
- image: nextcloud:23.0.0@sha256:79ee017a5dd00e063c8fd1f557b2c62eab2594b0bdc41c446402c0be13cbf005
entrypoint: /cron.sh
depends_on:
- db

View File

@ -2,13 +2,13 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Automation
name: Node-RED
version: 3.0.2
version: 2.2.0
tagline: Wire together the Internet of Things
description: >-
Node-RED is a visual programming tool for wiring together hardware devices,
@ -22,8 +22,8 @@ metadata:
Warning: Node-RED on Citadel is able to connect directly to Bitcoin Core, LND and Electrum, due to this you should be careful when installing third-party Node-RED nodes.
developers:
OpenJS Foundation: https://nodered.org
developer: OpenJS Foundation
website: https://nodered.org
dependencies:
- bitcoind
- electrum
@ -38,7 +38,7 @@ metadata:
torOnly: false
containers:
- name: web
image: nodered/node-red:3.0.2@sha256:524316b9b84cb5bbfe006c117f3dad31ee806804b12e4b866047a65e2080e92d
image: nodered/node-red:2.2.0@sha256:6af5c7d0860e6e738cd1ad6037e9e5bc07be7237be30be97771f260f3708aec0
stop_grace_period: 1m
data:
- data:/data
@ -54,3 +54,7 @@ containers:
LND_GRPC_PORT: $LND_GRPC_PORT
ELECTRUM_IP: $ELECTRUM_IP
ELECTRUM_PORT: $ELECTRUM_PORT
permissions:
- lnd
- bitcoind
- electrum

View File

@ -0,0 +1,45 @@
# SPDX-FileCopyrightText: Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v1.json
version: 1
metadata:
category: Lightning Node Management
name: Ride The C-Lightning
version: 0.12.1
tagline: RTL with c-lightning (WIP)
description: This app allows you to test the c-lightning integration on Citadel.
developer: Shahana and Suheb
website: ridethelightning.info
dependencies:
- lnd
- bitcoind
repo: https://github.com/Ride-The-Lightning/RTL
support: https://twitter.com/RTL_App
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
defaultPassword: $APP_SEED
mainContainer: web
containers:
- image: shahanafarooqui/rtl:0.12.1@sha256:8589a880f6357e5ea5cc3826e1704f4e91de324067f34388586faa0395204725
user: 1000:1000
port: 3000
environment:
PORT: 3000
RTL_CONFIG_PATH: /data
CHANNEL_BACKUP_PATH: /data/backup
LN_IMPLEMENTATION: CLT
LN_SERVER_URL: https://$C_LIGHTNING_IP:3001
MACAROON_PATH: /c-lightning/certs
CONFIG_PATH: /c-lightning/config
APP_PASSWORD: $APP_SEED
name: web
data:
- rtl:/data
permissions:
- c-lightning
- bitcoind

View File

@ -2,20 +2,19 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Lightning Node Management
name: Ride The Lightning
version: 0.13.0
version: 0.12.1
tagline: Manage lightning node operations better
description: Haven't written a desription yet for this, sorry.
developers:
Shahana and Suheb: ridethelightning.info
developer: Shahana and Suheb
website: ridethelightning.info
dependencies:
- - lnd
- c-lightning
- lnd
- bitcoind
repo: https://github.com/Ride-The-Lightning/RTL
support: https://twitter.com/RTL_App
@ -24,9 +23,9 @@ metadata:
- 2.jpg
- 3.jpg
defaultPassword: $APP_SEED
mainContainer: web
containers:
- name: main-lnd
image: shahanafarooqui/rtl:0.13.0@sha256:65f0ba6a978bcf26c0e43a86c256abac1d8bfda80016327880b1dec2d39c538b
- image: shahanafarooqui/rtl:0.12.1@sha256:8589a880f6357e5ea5cc3826e1704f4e91de324067f34388586faa0395204725
user: 1000:1000
port: 3000
environment:
@ -42,14 +41,16 @@ containers:
BOLTZ_SERVER_URL: https://$APP_RIDE_THE_LIGHTNING_BOLTZ_IP:9003
BOLTZ_MACAROON_PATH: /boltz/.boltz-lnd/macaroons
APP_PASSWORD: $APP_SEED
name: web
data:
- loop:/loop
- boltz:/boltz
- rtl:/data
requires:
permissions:
- lnd
- bitcoind
- name: loop
image: ghcr.io/runcitadel/loop:v0.17.0-beta@sha256:be434e96905e8bc158e13b46b2e425ff140b04218286c11bf8124e1a8f65e2a1
image: ghcr.io/runcitadel/loop:v0.16.0-beta@sha256:6895a12b548dbf7157629e398e1a573a3b42916149cf060d25e989ba98a72e8e
user: 1000:1000
environment:
HOME: /data
@ -61,7 +62,7 @@ containers:
- --restlisten=0.0.0.0:8081
data:
- loop:/data
requires:
permissions:
- lnd
- name: boltz
image: boltz/boltz-lnd:1.2.6@sha256:01a56dd357a2460bfd0ecdd726d6db3ab59d78ee691250831d09ba5de3fec7ce
@ -77,22 +78,5 @@ containers:
- --lnd.certificate="/lnd/tls.cert"
- --rpc.rest.host="$APP_RIDE_THE_LIGHTNING_BOLTZ_IP"
- --rpc.rest.port="9003"
requires:
permissions:
- lnd
- name: main-cln
image: shahanafarooqui/rtl:0.12.2@sha256:049df155cc7bb0ad5554b16eda6c3c9703001c76d83a4b6b55d68ba89fba0de2
user: 1000:1000
port: 3000
environment:
PORT: 3000
RTL_CONFIG_PATH: /data
CHANNEL_BACKUP_PATH: /data/backup
LN_IMPLEMENTATION: CLT
LN_SERVER_URL: https://$C_LIGHTNING_IP:3001
MACAROON_PATH: /c-lightning/certs
CONFIG_PATH: /c-lightning/config
APP_PASSWORD: $APP_SEED
data:
- rtl:/data
requires:
- c-lightning

View File

@ -1,33 +0,0 @@
# SPDX-FileCopyrightText: Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Lightning Node Management
name: Ringtools
version: 0.0.1
tagline: Build your Ring of Fire
description: Ringtools is a set of tools which help to set up and manage Rings of Fire, a concept of Bitcoin Lightning Networks.
developers:
Djuri Baars: https://rof.tools/
dependencies:
- lnd
repo: https://github.com/ringtools/ringtools-server-ts
support: https://t.me/ringtools_support
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
defaultPassword: $APP_SEED
containers:
- name: main
image: ghcr.io/runcitadel/ringtools:main@sha256:9dca53ae92b962299bd26fe7855d7cc3810975fc42d8c3039ea256404811813d
environment:
PORT: $APP_RINGTOOLS_MAIN_PORT
LND_REST_API_WS: wss://$LND_IP:$LND_REST_PORT
LND_REST_API: https://$LND_IP:$LND_REST_PORT
MACAROON_FILE: /lnd/data/chain/bitcoin/$BITCOIN_NETWORK/readonly.macaroon
TLS_CERT_FILE: /lnd/tls.cert

View File

@ -1,41 +0,0 @@
# SPDX-FileCopyrightText: 2020-2021 Umbrel. https://getumbrel.com
#
# SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Tor
name: Snowflake
version: 2.1.0
tagline: Help users in countries which censor online.
description: >-
Snowflake is a system to defeat internet censorship.
People who are censored can use Snowflake to access the internet.
By running the Snowflake app on Citadel, you can help people who
live in countries which censor Tor.
developers:
The Tor project: https://torproject.org/
repo: https://github.com/runcitadel/docker-snowflake
support: https://t.me/runcitadel
dependencies: []
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
containers:
- image: nginx:1.21.6@sha256:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767
init: true
port: 80
name: main
data:
- nginx/snowflake:/var/www/snowflake
- nginx/nginx.conf:/etc/nginx/nginx.conf
- name: proxy
image: ghcr.io/runcitadel/snowflake:v2.1.0@sha256:43ecbea41715fb2040c8e528152dabde27ffdaa16cd1c07f2895232619b1d18f
network_mode: host

View File

@ -1,47 +0,0 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log crit;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
server_tokens off;
sendfile on;
keepalive_timeout 95;
# Enable response compression
gzip on;
# Compression level: 1-9
gzip_comp_level 1;
# Minimum length of response before gzip kicks in
gzip_min_length 128;
# Compress these MIME types in addition to text/html
gzip_types application/json;
# Help with proxying by adding the Vary: Accept-Encoding response
gzip_vary on;
server {
listen 80;
server_name _;
root /var/www/snowflake;
index index.html;
# serve static files
location / {
try_files $uri $uri/ =404;
}
}
}

View File

@ -1,16 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Snowflake is running</title>
</head>
<body>
<h1>Snowflake is running</h1>
Haven't had time to build a pretty page yet.
You don't need to keep this window open, Snowflake will keep running on your node.
</body>
</html>

View File

@ -2,13 +2,13 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Wallets
name: Specter Desktop
version: 1.10.5
version: 1.8.1
tagline: Multisig with hardware wallets made easy
description: >-
Specter Desktop connects to the Bitcoin Core running on your Citadel and
@ -35,8 +35,8 @@ metadata:
Specter Desktop also supports using the Bitcoin Core on your Citadel as a hot wallet, by importing or generating a random BIP39 mnemonic, but this feature is experimental and we do not recommend using it at this stage. We plan to add support for other hardware wallets as they come up.
developers:
Crypto Advance: https://specter.solutions
developer: Crypto Advance
website: https://specter.solutions
dependencies:
- bitcoind
repo: https://github.com/cryptoadvance/specter-desktop
@ -46,7 +46,7 @@ metadata:
- 2.jpg
- 3.jpg
containers:
- image: lncm/specter-desktop:v1.10.5@sha256:36eaa06f99f44e77d8fbffcbcd9c8b9d6ce9be24d060589ed05ad487d5b2f34b
- image: lncm/specter-desktop:v1.8.1@sha256:0fab344245e0b3fb27b8d62a74e2503e53d1a51ab8b9c8a6170f975bf880a70a
stop_signal: SIGINT
command:
- --host=0.0.0.0
@ -59,8 +59,8 @@ containers:
BTC_RPC_PROTOCOL: http
name: web
port: 25441
preferredOutsidePort: 25441
data:
- data:/data
mounts:
bitcoin: /data/.bitcoin
bitcoin_mount_dir: /data/.bitcoin
permissions:
- bitcoind

View File

@ -2,13 +2,13 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Social
name: Sphinx Relay
version: 2.2.9
version: 2.2.5
tagline: Chat and pay over the Lightning Network
description: >-
Sphinx Relay turns your Lightning node into a personal communication server.
@ -21,8 +21,8 @@ metadata:
You can join tribes at https://tribes.sphinx.chat. If you join a podcast tribe, you can listen to the podcast in Sphinx and stream donations to the host.
developers:
Stakwork: https://sphinx.chat
developer: Stakwork
website: https://sphinx.chat
dependencies:
- lnd
repo: https://github.com/stakwork/sphinx-relay
@ -34,7 +34,7 @@ metadata:
path: /connect
containers:
- name: web
image: sphinxlightning/sphinx-relay:v2.2.9@sha256:44d512092961411f5e9d909e543634a770b91d3a7394c91496ab108c37148962
image: sphinxlightning/sphinx-relay:v2.2.5@sha256:9c7b112ead4585a92b6d65ebaa6206cf64069813b382b361c6c928c0def8a682
init: true
environment:
PUBLIC_URL: $APP_HIDDEN_SERVICE:80
@ -47,3 +47,5 @@ containers:
port: 3300
data:
- data:/relay/.lnd/
permissions:
- lnd

View File

@ -1,43 +0,0 @@
# SPDX-FileCopyrightText: 2022 Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Fun
name: Spigot
version: Latest
tagline: Host a Minecraft server on your Citadel
description: >-
Spigot is an easy-to-use Minecraft server you can host on your Citadel.
This app also features an easy-to-use admin panel for your server.
developers:
Spigot developers: https://www.spigotmc.org/
repo: https://github.com/SpigotMC
support: https://www.spigotmc.org/
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
path: ""
dependencies: []
containers:
- name: server
image: ghcr.io/runcitadel/crafty-web:main@sha256:43dc7108b95787b582cb18cca6b562cd3a3acefe5e96d2072e42963183a990d7
restart: on-failure
stop_grace_period: 1m
data:
- crafty_db:/crafty_db
- servers:/servers
environment:
TYPE: SPIGOT
EULA: "TRUE"
ALLOW_NETHER: "true"
port: 8000
requiredPorts:
- 25565

View File

@ -2,13 +2,13 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Social
name: Squeaknode
version: 0.3.5
version: 0.1.194
tagline: A peer-to-peer status feed with Lightning monetization
description: >-
The Squeaknode app allows you to create, view, buy, and sell squeaks. A
@ -16,8 +16,8 @@ metadata:
The Squeaknode timeline is ordered by the height of the block hash embedded in each squeak. Each squeak is signed with a digital signature of the private key of the author. Squeaks can be downloaded from any peer to any peer, but they remain locked until the downloader makes a Lightning payment to decrypt the content.
developers:
Jonathan Zernik: https://github.com/yzernik
developer: Jonathan Zernik
website: https://github.com/yzernik
dependencies:
- bitcoind
- lnd
@ -29,24 +29,25 @@ metadata:
- 3.jpg
path: /login?user=citadel
defaultPassword: $APP_SEED
mainContainer: web
containers:
- name: web
image: ghcr.io/squeaknode/squeaknode:v0.3.5@sha256:1c34495118d469a6a66ffdf6d9be8c33ef92b068cb4b909b98d8f7950d77795c
image: ghcr.io/squeaknode/squeaknode:v0.1.194@sha256:fd1150908604e058426e5dda6eb9360d2b5931bdab4d852e4222ba20c35d82b9
stop_grace_period: 1m
port: 12994
requiredPorts:
- 8994
ports:
- 8994:8994
user: 1000:1000
environment:
SQUEAKNODE_BITCOIN_RPC_HOST: $BITCOIN_IP
SQUEAKNODE_BITCOIN_RPC_PORT: $BITCOIN_RPC_PORT
SQUEAKNODE_BITCOIN_RPC_USER: $BITCOIN_RPC_USER
SQUEAKNODE_BITCOIN_RPC_PASS: $BITCOIN_RPC_PASS
SQUEAKNODE_LIGHTNING_BACKEND: lnd
SQUEAKNODE_LIGHTNING_LND_RPC_HOST: $LND_IP
SQUEAKNODE_LIGHTNING_LND_RPC_PORT: $LND_GRPC_PORT
SQUEAKNODE_LIGHTNING_LND_TLS_CERT_PATH: /lnd/tls.cert
SQUEAKNODE_LIGHTNING_LND_MACAROON_PATH: /lnd/data/chain/bitcoin/$BITCOIN_NETWORK/admin.macaroon
SQUEAKNODE_BITCOIN_ZEROMQ_HASHBLOCK_PORT: $BITCOIN_ZMQ_HASHBLOCK_PORT
SQUEAKNODE_LND_HOST: $LND_IP
SQUEAKNODE_LND_RPC_PORT: $LND_GRPC_PORT
SQUEAKNODE_LND_TLS_CERT_PATH: /lnd/tls.cert
SQUEAKNODE_LND_MACAROON_PATH: /lnd/data/chain/bitcoin/$BITCOIN_NETWORK/admin.macaroon
SQUEAKNODE_WEBADMIN_ENABLED: "true"
SQUEAKNODE_WEBADMIN_USERNAME: citadel
SQUEAKNODE_WEBADMIN_PASSWORD: ${APP_SEED}
@ -59,6 +60,9 @@ containers:
DEBUG: squeaknode:*
data:
- sqk:/sqk
permissions:
- bitcoind
- lnd
hiddenServicePorts:
p2p:
- 8555

View File

@ -1,21 +1,16 @@
# SPDX-FileCopyrightText: 2022 Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
version: 1
metadata:
category: Social
name: Synapse Admin
version: 0.8.5
version: 0.8.4
tagline: Manage your synapse server
description: "This app allows you to manage your synapse server. It currently
requires some manual work inside Synapse's Docker container, so it's not
usable for most users yet. "
developers:
Awesome Technologies: https://awesome-technologies.de/https://awesome-technologies.de/
description: >-
This app allows you to manage your synapse server.
It currently requires some manual work inside Synapse's Docker container,
so it's not usable for most users yet.
developer: Awesome Technologies
website: https://awesome-technologies.de/https://awesome-technologies.de/
dependencies: []
repo: https://github.com/Awesome-Technologies/synapse-admin
support: https://github.com/Awesome-Technologies/synapse-admin
@ -23,7 +18,8 @@ metadata:
- 1.jpg
- 2.jpg
- 3.jpg
containers:
- name: main
image: awesometechnologies/synapse-admin:0.8.5@sha256:e2598994cf3b6fca4ed7bac781519b099f8233b512f80d806eb704f53981e849
image: awesometechnologies/synapse-admin:0.8.4@sha256:2d67dc0a7c9d59f290cfddf7d51e5d9125f3cb88c48d97c605b3330c2bf6a69b
port: 80

View File

@ -2,17 +2,18 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Social
name: Synapse
version: 1.60.0
version: 1.51.0
tagline: Matrix homeserver
description: Description is coming soon.
developers:
Matrix: https://matrix.org
description: >-
Description is coming soon.
developer: Matrix
website: https://matrix.org
dependencies: []
repo: https://github.com/matrix-org/synapse
support: https://matrix.to/#/#synapse:matrix.org
@ -22,14 +23,13 @@ metadata:
- 3.jpg
torOnly: false
containers:
- image: ghcr.io/runcitadel/synapse:develop@sha256:80e15d6247e30d162758178aeb41bb9181e5d7ec9d73af35939bccbb3aecbab9
- image: matrixdotorg/synapse:v1.51.0@sha256:26381613731f0f720bdaa311d0966096ee3e94df994fd15d01bdadda5a042f7f
entrypoint: bash
command: -c './start.py generate && ./start.py migrate_config && exec ./start.py'
port: 8008
environment:
UID: "1000"
GID: "1000"
SYNAPSE_HTTP_PORT: 8008
SYNAPSE_HTTP_PORT: ${APP_SYNAPSE_SERVER_PORT}
SYNAPSE_SERVER_NAME: ${APP_HIDDEN_SERVICE}
SYNAPSE_REPORT_STATS: "yes"
SYNAPSE_ENABLE_REGISTRATION: "yes"
@ -37,6 +37,3 @@ containers:
name: server
data:
- data/synapse:/data
hiddenServicePorts:
- 80
- 8008

View File

@ -1,34 +0,0 @@
# SPDX-FileCopyrightText: 2021 Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Networking
name: Tailscale
version: 23.0.2
tagline: A VPN to access your Citadel from anywhere
description: No description yet.
developers:
Tailscale Inc.: https://tailscale.com
dependencies: []
repo: https://github.com/tailscale/tailscale
support: https://github.com/tailscale/tailscale/issues
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
path: /
containers:
- name: main
image: tailscale/tailscale:v1.20.4@sha256:ae08b5ab928118e85d01837e98449d69fc46dd66397ec9375f8ea5847e55d916
network_mode: "host"
restart: on-failure
stop_grace_period: 1m
command: "sh -c 'tailscale web --listen 0.0.0.0:${APP_TAILSCALE_MAIN_PORT} & exec tailscaled --tun=userspace-networking'"
data:
- data:/var/lib

View File

@ -1 +0,0 @@

View File

@ -1,39 +0,0 @@
# SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
name: Tallycoin Connect
version: 1.7.3
tagline: Connect Tallycoin with your node
description: Receive Tallycoin Lightning payouts directly to your own node.
category: Finance
developers:
djbooth007: https://github.com/djbooth007/tallycoin_connect
repo: https://github.com/djbooth007/tallycoin_connect
support: https://github.com/djbooth007/tallycoin_connect/issues
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
dependencies:
- lnd
containers:
- name: web
image: dennisreimann/tallycoin_connect:v1.7.3@sha256:802a53da7591473c1a8d97e145a717781c152657343498f62ef3f53e56c86c67
user: "1000:1000"
restart: on-failure
stop_grace_period: 1m
port: 8123
data:
- data:/data
environment:
LND_SOCKET: "$LND_IP:$LND_GRPC_PORT"
LND_MACAROON_PATH: "/lnd/data/chain/bitcoin/$BITCOIN_NETWORK/admin.macaroon"
LND_TLSCERT_PATH: "/lnd/tls.cert"
CONFIG_FILE: "/data/tallycoin_api.key"

View File

@ -2,13 +2,14 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
#user: 1000:1000
version: 3
version: 1
metadata:
category: Lightning Node Management
name: ThunderHub
version: 0.13.15
version: 0.13.6
tagline: Take full control of your Lightning node
description: >-
ThunderHub allows you to take full control of your Lightning node with a
@ -19,8 +20,8 @@ metadata:
Managing and monitoring your node has never been easier with transaction reports, graphs and a huge assortment of different features all bundled inside of this great tool.
developers:
Anthony Potdevin: https://apotdevin.com
developer: Anthony Potdevin
website: https://apotdevin.com
dependencies:
- lnd
repo: https://github.com/apotdevin/thunderhub
@ -31,7 +32,7 @@ metadata:
- 3.jpg
defaultPassword: $APP_SEED
containers:
- image: apotdevin/thunderhub:v0.13.15@sha256:38189f0ec3df0d56980b0595f7d8eaa446dac922f937d2cda04a88dfc1866a51
- image: apotdevin/thunderhub:v0.13.6@sha256:b439b00f23376f932acd9c13e5037dd5870740dd66e3ebb7065a9d62a4fc370d
environment:
NO_VERSION_CHECK: "true"
LOG_LEVEL: debug
@ -43,3 +44,5 @@ containers:
port: 3000
data:
- data:/data
permissions:
- lnd

View File

@ -1,14 +1,9 @@
# SPDX-FileCopyrightText: 2021 Anthony Potdevin
#
# SPDX-License-Identifier: AGPL-3.0-only
version: 1
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Networking
name: Uptime Kuma
version: 1.17.1
version: 1.11.3
tagline: Self-hosted uptime monitoring tool
description: >
Uptime Kuma is a self-hosted monitoring tool like Uptime Robot.
@ -17,11 +12,13 @@ metadata:
Features:
- Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record / Push / Steam Game Server.
- Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record /
Push / Steam Game Server.
- Fancy, Reactive, Fast UI/UX.
- Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and 70+ notification services.
- Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP),
and 70+ notification services.
- 20 second intervals.
@ -32,8 +29,8 @@ metadata:
- Ping Chart
- Certificate Info
developers:
Louis Lam: https://uptime.kuma.pet
developer: Louis Lam
website: https://uptime.kuma.pet
dependencies: []
repo: https://github.com/louislam/uptime-kuma
support: https://github.com/louislam/uptime-kuma/issues
@ -41,9 +38,10 @@ metadata:
- 1.jpg
- 2.jpg
- 3.jpg
containers:
- name: main
image: louislam/uptime-kuma:1.17.1@sha256:a4eab252e5a27ead9e92f04d755d6cc968be923b277aae42ac8cf633e2da3b15
image: louislam/uptime-kuma:1.11.3@sha256:8856a17f10d05f95bd0ce24a532c8a3f659bb69243c8edea721608de3e9f24b7
restart: on-failure
stop_grace_period: 1m
port: 3001

View File

@ -1,50 +0,0 @@
# SPDX-FileCopyrightText: 2022 Ioan Bizău
# SPDX-FileCopyrightText: 2022 Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
category: Social
name: Usocial
version: 0.1.6
tagline: Read. Listen. Pay back.
description: The minimalist self-hosted feed reader and podcast client for your
personal server. With Lightning Network support.
developers:
Ioan Bizău: http://usocial.me
dependencies:
- lnd
repo: https://github.com/ibz/usocial
support: https://github.com/ibz/usocial/issues
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
defaultPassword: $APP_SEED
containers:
- name: main
image: ghcr.io/ibz/usocial:v0.1.6-buster@sha256:c4ad3524a0eaccf505f3e477ab8ac2eb4e79ddca7f4266e4af0afd49caba389a
restart: on-failure
stop_grace_period: 1m
port: 5000
data:
- data:/instance
environment:
USOCIAL_JOB: WEB
APP_PASSWORD: ${APP_SEED}
LND_IP: ${LND_IP}
LND_GRPC_PORT: ${LND_GRPC_PORT}
LND_DIR: /lnd
- name: fetcher
depends_on:
- main
image: ghcr.io/ibz/usocial:v0.1.6-buster@sha256:c4ad3524a0eaccf505f3e477ab8ac2eb4e79ddca7f4266e4af0afd49caba389a
restart: on-failure
stop_grace_period: 1m
data:
- data:/instance
environment:
USOCIAL_JOB: FETCH_FEEDS

View File

@ -2,13 +2,13 @@
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
# yaml-language-server: $schema=../../app-standard-v1.json
version: 3
version: 1
metadata:
category: Password Managers
name: Vaultwarden
version: 1.25.2
version: 1.24.0
tagline: Unofficial Bitwarden® compatible server
description: >-
Vaultwarden (formerly known as Bitwarden_RS) is an alternative
@ -33,8 +33,8 @@ metadata:
Please note that Vaultwarden is not associated with the Bitwarden® project nor 8bit Solutions LLC. When using this app, please report any bugs or suggestions to us directly, regardless of whatever clients you are using (mobile, desktop, browser, etc), and do not use Bitwarden®'s official support channels.
developers:
Daniel García: https://github.com/dani-garcia
developer: Daniel García
website: https://github.com/dani-garcia
dependencies: []
repo: https://github.com/dani-garcia/vaultwarden
support: https://vaultwarden.discourse.group/
@ -44,7 +44,7 @@ metadata:
- 3.jpg
torOnly: true
containers:
- image: vaultwarden/server:1.25.2@sha256:39f34c5159a27dc9a16b2b7c07cec031622cdb174b4d99f09c8efefcd847d887
- image: vaultwarden/server:1.24.0@sha256:f485e59b6fff6316e382eb5d1096b46a932d26867b21c54354c1571ce3176789
user: 1000:1000
port: 3000
environment:

View File

@ -1,48 +0,0 @@
# SPDX-FileCopyrightText: 2022 Citadel and contributors
#
# SPDX-License-Identifier: AGPL-3.0-only
# yaml-language-server: $schema=../../app-standard-v3.yml
version: 3
metadata:
name: WordPress
version: 6.0.1
category: Blog
tagline: Host a blog on your Citadel
description: WordPress
developers:
WordPress Developers: https://wordpress.org
repo: https://github.com/WordPress/WordPress
support: https://wordpress.org
gallery:
- 1.png
- 2.png
- 3.png
containers:
- name: main
image: wordpress:6.0.1@sha256:999392cfea3cee05633a0a9026fc46df637d8291e631a1afa85099ad2553e3eb
depends_on:
- db
data:
- data/wp:/var/www/html
port: 80
restart: always
environment:
WORDPRESS_DB_HOST: $APP_WORDPRESS_DB_IP
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: somewordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_CONFIG_EXTRA: |
define('FS_METHOD','direct');
- name: db
image: mariadb:10.7.3-focal@sha256:07e06f2e7ae9dfc63707a83130a62e00167c827f08fcac7a9aa33f4b6dc34e0e
user: 1000:1000
data:
- data/db:/var/lib/mysql
restart: always
environment:
MARIADB_ROOT_PASSWORD: somewordpress
MARIADB_DATABASE: wordpress
MARIADB_USER: wordpress
MARIADB_PASSWORD: wordpress

3
lib/__init__.py Normal file
View File

@ -0,0 +1,3 @@
# SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
#
# SPDX-License-Identifier: AGPL-3.0-only

22
lib/manage.py Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
#
# SPDX-License-Identifier: AGPL-3.0-only
import os
import json
from lib.validate import findAndValidateApps
from lib.metadata import getSimpleAppRegistry
appsDir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..", "apps")
def update():
apps = findAndValidateApps(appsDir)
simpleRegistry = getSimpleAppRegistry(apps, appsDir)
with open(os.path.join(appsDir, "..", "apps.json"), "w") as f:
json.dump(simpleRegistry, f, indent=4, sort_keys=True)
with open(os.path.join(appsDir, "apps.json"), "w") as f:
json.dump(simpleRegistry, f, indent=4, sort_keys=True)
print("Wrote information to apps.json")

25
lib/metadata.py Normal file
View File

@ -0,0 +1,25 @@
# SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
#
# SPDX-License-Identifier: AGPL-3.0-only
import os
import yaml
# Creates a registry with just the things we need in the update checker so we can remove registry.json from this repo.
# We need these properties: id, name, repo, version, nothing else. We don't need to check for the existence of these properties.
# app_yml['metadata'] may contain other properties, but we don't need them and we remove them from the registry.
def getSimpleAppRegistry(apps, app_path):
app_metadata = []
for app in apps:
app_yml_path = os.path.join(app_path, app, 'app.yml')
if os.path.isfile(app_yml_path):
with open(app_yml_path, 'r') as f:
app_yml = yaml.safe_load(f.read())
metadata = {
'id': app,
'name': app_yml['metadata']['name'],
'repo': app_yml['metadata']['repo'],
'version': app_yml['metadata']['version']
}
app_metadata.append(metadata)
return app_metadata

71
lib/validate.py Normal file
View File

@ -0,0 +1,71 @@
# SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
#
# SPDX-License-Identifier: AGPL-3.0-only
import os
import yaml
from jsonschema import validate
import json
# Validates app data
# Returns true if valid, false otherwise
appDir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")
def validateApp(app: dict):
with open(os.path.join(appDir, 'app-standard-v1.json'), 'r') as f:
schema = json.loads(f.read())
try:
validate(app, schema)
return True
# Catch and log any errors, and return false
except Exception as e:
print(e)
return False
# Lists all folders in a directory and checks if they are valid
# A folder is valid if it contains an app.yml file
# A folder is invalid if it doesn't contain an app.yml file
def findAndValidateApps(dir: str):
apps = []
app_data = {}
for root, dirs, files in os.walk(dir, topdown=False):
for name in dirs:
app_dir = os.path.join(root, name)
if os.path.isfile(os.path.join(app_dir, "app.yml")):
apps.append(name)
# Read the app.yml and append it to app_data
with open(os.path.join(app_dir, "app.yml"), 'r') as f:
app_data[name] = yaml.safe_load(f)
# Now validate all the apps using the validateApp function by passing the app.yml as an argument to it, if an app is invalid, remove it from the list
for app in apps:
appyml = app_data[app]
if not validateApp(appyml):
apps.remove(app)
print("Warning: App {} is invalid".format(app))
# Skip to the next iteration of the loop
continue
# More security validation
should_continue=True
if appyml['metadata']['dependencies']:
for dependency in appyml['metadata']['dependencies']:
if dependency not in apps and dependency not in ["bitcoind", "lnd", "electrum"]:
print("WARNING: App '{}' has unknown dependency '{}'".format(app, dependency))
apps.remove(app)
should_continue=False
if dependency == app:
print("WARNING: App '{}' depends on itself".format(app))
apps.remove(app)
should_continue=False
if not should_continue:
continue
for container in appyml['containers']:
if 'permissions' in container:
for permission in container['permissions']:
if permission not in appyml['metadata']['dependencies'] and permission not in ["root", "hw"]:
print("WARNING: App {}'s container '{}' requires the '{}' permission, but the app doesn't list it in it's dependencies".format(app, container['name'], permission))
apps.remove(app)
# Skip to the next iteration of the loop
continue
return apps

10
update.py Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
#
# SPDX-License-Identifier: AGPL-3.0-only
from lib.manage import update
if __name__ == "__main__":
update()