forked from michael.heier/citadel-apps
Compare commits
3 Commits
v3-dev
...
c-lightnin
Author | SHA1 | Date | |
---|---|---|---|
|
f4fa15bff1 | ||
|
9e9251ece4 | ||
|
2b6b92a72e |
10
.github/workflows/main.yml
vendored
10
.github/workflows/main.yml
vendored
|
@ -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
|
||||
|
|
323
PORTING_APPS.md
323
PORTING_APPS.md
|
@ -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
226
app-standard-v1.json
Normal 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
|
||||
}
|
3
app-standard-v1.json.license
Normal file
3
app-standard-v1.json.license
Normal file
|
@ -0,0 +1,3 @@
|
|||
SPDX-FileCopyrightText: 2021 Aaron Dewes <aaron.dewes@protonmail.com>
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-only
|
|
@ -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
146
apps.json
Normal 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
3
apps.json.license
Normal 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
146
apps/apps.json
Normal 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"
|
||||
}
|
||||
]
|
|
@ -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
|
|
@ -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>
|
5
apps/bitcartcc/nginx/html/pico.min.css
vendored
5
apps/bitcartcc/nginx/html/pico.min.css
vendored
File diff suppressed because one or more lines are too long
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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}
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
45
apps/ride-the-c-lightning/app.yml
Normal file
45
apps/ride-the-c-lightning/app.yml
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -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"
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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:
|
||||
|
|
|
@ -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
3
lib/__init__.py
Normal 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
22
lib/manage.py
Normal 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
25
lib/metadata.py
Normal 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
71
lib/validate.py
Normal 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
|
Loading…
Reference in New Issue
Block a user