diff --git a/.gitignore b/.gitignore index 21db3dbf..9a74ed4c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules/ package-lock.json github.secrets .DS_Store -.nova \ No newline at end of file +.nova +.vscode/ diff --git a/apps/atuin/config.json b/apps/atuin/config.json new file mode 100755 index 00000000..a64fcf4d --- /dev/null +++ b/apps/atuin/config.json @@ -0,0 +1,40 @@ +{ + "$schema": "../schema.json", + "name": "Atuin Server", + "available": true, + "exposable": true, + "port": 8888, + "id": "atuin", + "tipi_version": 1, + "version": "latest", + "categories": [ + "utilities", + "development" + ], + "description": "Making your shell magical", + "short_desc": "Magical Shell History", + "author": "https://github.com/atuinsh", + "source": "https://github.com/atuinsh/atuin", + "website": "https://atuin.sh", + "no_gui": true, + "form_fields": [ + { + "type": "random", + "label": "Atuin DB Password", + "min": 50, + "env_variable": "ATUIN_DB_PASSWORD" + }, + { + "type": "boolean", + "label": "Allow User Registrastion", + "hint": "Set it to true intially to create the first user.", + "placeholder": "true", + "default": true, + "env_variable": "ATUIN_ALLOW_REGISTRATION" + } + ], + "supported_architectures": [ + "amd64", + "arm64" + ] +} diff --git a/apps/atuin/docker-compose.yml b/apps/atuin/docker-compose.yml new file mode 100755 index 00000000..773aa11e --- /dev/null +++ b/apps/atuin/docker-compose.yml @@ -0,0 +1,57 @@ +version: "3.5" +services: + atuin: + container_name: atuin + restart: always + image: ghcr.io/atuinsh/atuin:latest + command: server start + volumes: + - "${APP_DATA_DIR}/data/config:/config" + links: + - postgresql:db + ports: + - ${APP_PORT}:8888 + environment: + ATUIN_HOST: "0.0.0.0" + ATUIN_OPEN_REGISTRATION: ${ATUIN_ALLOW_REGISTRATION} + ATUIN_DB_URI: "postgres://atuin:${ATUIN_DB_PASSWORD}@db/atuin" + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.atuin-web-redirect.redirectscheme.scheme: https + traefik.http.services.atuin.loadbalancer.server.port: 8888 + # Web + traefik.http.routers.atuin-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.atuin-insecure.entrypoints: web + traefik.http.routers.atuin-insecure.service: atuin + traefik.http.routers.atuin-insecure.middlewares: atuin-web-redirect + # Websecure + traefik.http.routers.atuin.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.atuin.entrypoints: websecure + traefik.http.routers.atuin.service: atuin + traefik.http.routers.atuin.tls.certresolver: myresolver + # Local domain + traefik.http.routers.atuin-local-insecure.rule: Host(`atuin.${LOCAL_DOMAIN}`) + traefik.http.routers.atuin-local-insecure.entrypoints: web + traefik.http.routers.atuin-local-insecure.service: atuin + traefik.http.routers.atuin-local-insecure.middlewares: atuin-web-redirect + # Local domain secure + traefik.http.routers.atuin-local.rule: Host(`atuin.${LOCAL_DOMAIN}`) + traefik.http.routers.atuin-local.entrypoints: websecure + traefik.http.routers.atuin-local.service: atuin + traefik.http.routers.atuin-local.tls: true + + postgresql: + image: postgres:14 + restart: unless-stopped + volumes: # Don't remove permanent storage for index database files! + - "${APP_DATA_DIR}/data:/var/lib/postgresql/data/" + environment: + POSTGRES_USER: atuin + POSTGRES_PASSWORD: "${ATUIN_DB_PASSWORD}" + POSTGRES_DB: atuin + networks: + - tipi_main_network + diff --git a/apps/atuin/metadata/description.md b/apps/atuin/metadata/description.md new file mode 100755 index 00000000..c846df6b --- /dev/null +++ b/apps/atuin/metadata/description.md @@ -0,0 +1,33 @@ +# Atuin Server + +Once installed, [configure your client](https://docs.atuin.sh/self-hosting/usage/) to use `:8888` as sync address. + +## Making your shell magical + +Sync, search and backup shell history with Atuin + +[Atuin](https://atuin.sh) is an open-source Terminal User Interface (TUI) for your shell history. + +![Atuin TUI screenshot](https://atuin.sh/_astro/cargo-prefix.322ce063_Z3NFdB.avif) + +## Features + +1. Shell History Sync + - Sync your shell history to all of your machines, wherever they are +2. End-to-end Encryption + - All data is encrypted, and can only be read by you +3. Efficient Search + - Search decades of shell history, and recall it in an instant. Atuin offers configurable full text or fuzzy search, filterable by host, directory, etc. +4. Data Import + - Bring your existing history with you - Atuin supports importing from a wide variety of formats +5. Store Extra Context + - Atuin stores extra context with your commands - working directory, exit code, and more! + +## Self-hosted sync server + +Atuin.sh offers a free, fully-encrypted option for storing your synced shell history as well as an option to self-host a sync server of your own. This is an easy-to-use package for the Atuin sync server component; the user interface is the TUI, which can be installed using many typical package-management tools, e.g. + +- `brew install atuin` +- `apt install atuin` + +or via `bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)`. diff --git a/apps/atuin/metadata/logo.jpg b/apps/atuin/metadata/logo.jpg new file mode 100644 index 00000000..36fc4437 Binary files /dev/null and b/apps/atuin/metadata/logo.jpg differ diff --git a/apps/authentik/config.json b/apps/authentik/config.json index 4361549b..e9cbdbec 100644 --- a/apps/authentik/config.json +++ b/apps/authentik/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "authentik", - "tipi_version": 6, - "version": "2023.10.6", + "tipi_version": 7, + "version": "2023.10.7", "https": true, "categories": [ "development" diff --git a/apps/authentik/docker-compose.yml b/apps/authentik/docker-compose.yml index ce30fd04..33af2803 100644 --- a/apps/authentik/docker-compose.yml +++ b/apps/authentik/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: authentik: - image: ghcr.io/goauthentik/server:2023.10.6 + image: ghcr.io/goauthentik/server:2023.10.7 restart: unless-stopped command: server container_name: authentik @@ -49,7 +49,7 @@ services: traefik.http.routers.authentik-local.service: authentik traefik.http.routers.authentik-local.tls: true authentik-worker: - image: ghcr.io/goauthentik/server:2023.10.6 + image: ghcr.io/goauthentik/server:2023.10.7 restart: unless-stopped command: worker container_name: authentik-worker diff --git a/apps/autobrr/config.json b/apps/autobrr/config.json index c10c6a1d..47dcb178 100644 --- a/apps/autobrr/config.json +++ b/apps/autobrr/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "autobrr", - "tipi_version": 17, - "version": "1.35.1", + "tipi_version": 18, + "version": "1.36.0", "categories": [ "media" ], diff --git a/apps/autobrr/docker-compose.yml b/apps/autobrr/docker-compose.yml index ea9541a4..bfa1000f 100644 --- a/apps/autobrr/docker-compose.yml +++ b/apps/autobrr/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: autobrr: container_name: autobrr - image: ghcr.io/autobrr/autobrr:v1.35.1 + image: ghcr.io/autobrr/autobrr:v1.36.0 restart: unless-stopped ports: - ${APP_PORT}:7474 diff --git a/apps/bitmagnet/config.json b/apps/bitmagnet/config.json index 2cf4d140..7de10eaf 100644 --- a/apps/bitmagnet/config.json +++ b/apps/bitmagnet/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "bitmagnet", - "tipi_version": 5, - "version": "0.5.0", + "tipi_version": 6, + "version": "0.5.1", "categories": [ "media" ], diff --git a/apps/bitmagnet/docker-compose.yml b/apps/bitmagnet/docker-compose.yml index 1228dce5..243c4986 100644 --- a/apps/bitmagnet/docker-compose.yml +++ b/apps/bitmagnet/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: bitmagnet: - image: ghcr.io/bitmagnet-io/bitmagnet:0.5.0 + image: ghcr.io/bitmagnet-io/bitmagnet:0.5.1 restart: unless-stopped command: - worker diff --git a/apps/changedetection/docker-compose.yml b/apps/changedetection/docker-compose.yml index e751ea5f..45944106 100644 --- a/apps/changedetection/docker-compose.yml +++ b/apps/changedetection/docker-compose.yml @@ -1,47 +1,61 @@ version: "3.7" services: - changedetection: - image: ghcr.io/dgtlmoon/changedetection.io:0.45.13 - container_name: changedetection - hostname: changedetection - volumes: - - ${APP_DATA_DIR}/data:/datastore - ports: - - ${APP_PORT}:5000 - restart: unless-stopped - networks: - - tipi_main_network - labels: - # Main - traefik.enable: true - traefik.http.middlewares.changedetection-web-web-redirect.redirectscheme.scheme: https - traefik.http.services.changedetection-web.loadbalancer.server.port: 5000 - # Web - traefik.http.routers.changedetection-web-insecure.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.changedetection-web-insecure.entrypoints: web - traefik.http.routers.changedetection-web-insecure.service: changedetection-web - traefik.http.routers.changedetection-web-insecure.middlewares: changedetection-web-web-redirect - # Websecure - traefik.http.routers.changedetection-web.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.changedetection-web.entrypoints: websecure - traefik.http.routers.changedetection-web.service: changedetection-web - traefik.http.routers.changedetection-web.tls.certresolver: myresolver - # Local domain - traefik.http.routers.changedetection-web-local-insecure.rule: Host(`changedetection-web.${LOCAL_DOMAIN}`) - traefik.http.routers.changedetection-web-local-insecure.entrypoints: web - traefik.http.routers.changedetection-web-local-insecure.service: changedetection-web - traefik.http.routers.changedetection-web-local-insecure.middlewares: changedetection-web-web-redirect - # Local domain secure - traefik.http.routers.changedetection-web-local.rule: Host(`changedetection-web.${LOCAL_DOMAIN}`) - traefik.http.routers.changedetection-web-local.entrypoints: websecure - traefik.http.routers.changedetection-web-local.service: changedetection-web - traefik.http.routers.changedetection-web-local.tls: true + changedetection: + image: ghcr.io/dgtlmoon/changedetection.io:0.45.13 + container_name: changedetection + hostname: changedetection + volumes: + - ${APP_DATA_DIR}/data:/datastore + ports: + - ${APP_PORT}:5000 + restart: unless-stopped + networks: + - tipi_main_network + # environment: + # - PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000/ + labels: + # Main + traefik.enable: true + traefik.http.middlewares.changedetection-web-web-redirect.redirectscheme.scheme: https + traefik.http.services.changedetection-web.loadbalancer.server.port: 5000 + # Web + traefik.http.routers.changedetection-web-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.changedetection-web-insecure.entrypoints: web + traefik.http.routers.changedetection-web-insecure.service: changedetection-web + traefik.http.routers.changedetection-web-insecure.middlewares: changedetection-web-web-redirect + # Websecure + traefik.http.routers.changedetection-web.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.changedetection-web.entrypoints: websecure + traefik.http.routers.changedetection-web.service: changedetection-web + traefik.http.routers.changedetection-web.tls.certresolver: myresolver + # Local domain + traefik.http.routers.changedetection-web-local-insecure.rule: Host(`changedetection-web.${LOCAL_DOMAIN}`) + traefik.http.routers.changedetection-web-local-insecure.entrypoints: web + traefik.http.routers.changedetection-web-local-insecure.service: changedetection-web + traefik.http.routers.changedetection-web-local-insecure.middlewares: changedetection-web-web-redirect + # Local domain secure + traefik.http.routers.changedetection-web-local.rule: Host(`changedetection-web.${LOCAL_DOMAIN}`) + traefik.http.routers.changedetection-web-local.entrypoints: websecure + traefik.http.routers.changedetection-web-local.service: changedetection-web + traefik.http.routers.changedetection-web-local.tls: true - - # chnagedetection-chrome: - # hostname: chnagedetection-chrome - # image: browserless/chrome:latest - # restart: unless-stopped - # container_name: chnagedetection-chrome - # networks: - # - tipi_main_network + # playwright-chrome: + # hostname: playwright-chrome + # container_name: playwright-chrome + # image: browserless/chrome + # restart: unless-stopped + # networks: + # - tipi_main_network + # ports: + # - 1337:3000 + # environment: + # - SCREEN_WIDTH=1920 + # - SCREEN_HEIGHT=1024 + # - SCREEN_DEPTH=16 + # - ENABLE_DEBUGGER=false + # - PREBOOT_CHROME=true + # - CONNECTION_TIMEOUT=300000 + # - MAX_CONCURRENT_SESSIONS=10 + # - CHROME_REFRESH_TIME=600000 + # - DEFAULT_BLOCK_ADS=true + # - DEFAULT_STEALTH=true diff --git a/apps/cloudflared/config.json b/apps/cloudflared/config.json index 777f2f9f..92b84bbb 100644 --- a/apps/cloudflared/config.json +++ b/apps/cloudflared/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": false, "id": "cloudflared", - "tipi_version": 4, - "version": "2024.1.4", + "tipi_version": 5, + "version": "2024.1.5", "categories": [ "utilities" ], diff --git a/apps/cloudflared/docker-compose.yml b/apps/cloudflared/docker-compose.yml index 2efe2375..a2b0c352 100644 --- a/apps/cloudflared/docker-compose.yml +++ b/apps/cloudflared/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: cloudflared: - image: wisdomsky/cloudflared-web:2024.1.4 + image: wisdomsky/cloudflared-web:2024.1.5 container_name: cloudflared restart: unless-stopped network_mode: host diff --git a/apps/emulatorjs/config.json b/apps/emulatorjs/config.json index 67651518..85729e55 100644 --- a/apps/emulatorjs/config.json +++ b/apps/emulatorjs/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "emulatorjs", - "tipi_version": 8, - "version": "1.8.4", + "tipi_version": 9, + "version": "1.8.5", "categories": [ "gaming" ], diff --git a/apps/emulatorjs/docker-compose.yml b/apps/emulatorjs/docker-compose.yml index 1e99532e..dcf78ecd 100644 --- a/apps/emulatorjs/docker-compose.yml +++ b/apps/emulatorjs/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.7" services: emulatorjs: container_name: emulatorjs - image: lscr.io/linuxserver/emulatorjs:1.8.4 + image: lscr.io/linuxserver/emulatorjs:1.8.5 ports: - ${APP_PORT}:80 - 8165:3000 diff --git a/apps/ghostfolio/config.json b/apps/ghostfolio/config.json index 9853d8a5..b3b69664 100644 --- a/apps/ghostfolio/config.json +++ b/apps/ghostfolio/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "ghostfolio", - "tipi_version": 44, - "version": "2.45.0", + "tipi_version": 45, + "version": "2.46.0", "categories": [ "finance" ], diff --git a/apps/ghostfolio/docker-compose.yml b/apps/ghostfolio/docker-compose.yml index 1f12737b..81b0b76e 100644 --- a/apps/ghostfolio/docker-compose.yml +++ b/apps/ghostfolio/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: ghostfolio: container_name: ghostfolio - image: ghostfolio/ghostfolio:2.45.0 + image: ghostfolio/ghostfolio:2.46.0 restart: unless-stopped ports: - ${APP_PORT}:3333 diff --git a/apps/invoice-ninja/docker-compose.yml b/apps/invoice-ninja/docker-compose.yml index 9ce6fc2a..756267d7 100644 --- a/apps/invoice-ninja/docker-compose.yml +++ b/apps/invoice-ninja/docker-compose.yml @@ -42,7 +42,7 @@ services: traefik.http.routers.invoice-ninja-local.tls: true invoice-ninja-server: - image: invoiceninja/invoiceninja:5.8.16 + image: invoiceninja/invoiceninja:5.8.18 container_name: invoice-ninja-server restart: unless-stopped user: 1500:1500 diff --git a/apps/lobe-chat/config.json b/apps/lobe-chat/config.json index ebffa874..d46af312 100644 --- a/apps/lobe-chat/config.json +++ b/apps/lobe-chat/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "lobe-chat", "description": "LobeChat is an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible (Function Call) plugin system.", - "tipi_version": 18, - "version": "0.121.3", + "tipi_version": 20, + "version": "0.122.1", "categories": [ "ai" ], diff --git a/apps/lobe-chat/docker-compose.yml b/apps/lobe-chat/docker-compose.yml index 30716847..0f5be572 100644 --- a/apps/lobe-chat/docker-compose.yml +++ b/apps/lobe-chat/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.9' services: lobe-chat: container_name: lobe-chat - image: lobehub/lobe-chat:v0.121.3 + image: lobehub/lobe-chat:v0.122.1 environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - OPENAI_PROXY_URL=${OPEANAI_PROXY_URL} diff --git a/apps/maintainerr/config.json b/apps/maintainerr/config.json new file mode 100644 index 00000000..b61d2b71 --- /dev/null +++ b/apps/maintainerr/config.json @@ -0,0 +1,19 @@ +{ + "name": "Maintainerr", + "available": true, + "exposable": true, + "port": 8030, + "id": "maintainerr", + "tipi_version": 1, + "version": "1.7.1", + "categories": [ + "media", + "utilities" + ], + "description": "Maintainerr will manage the storage space on your plex server, launching automated actions to delete your files.", + "short_desc": "Maintainerr will manage the storage space on your plex server, launching automated actions to delete your files.", + "author": "jorenn92", + "source": "https://github.com/jorenn92/Maintainerr", + "form_fields": [], + "supported_architectures": ["arm64", "amd64"] +} diff --git a/apps/maintainerr/docker-compose.yml b/apps/maintainerr/docker-compose.yml new file mode 100644 index 00000000..e3f24a4c --- /dev/null +++ b/apps/maintainerr/docker-compose.yml @@ -0,0 +1,42 @@ +version: '3' + +services: + maintainerr: + image: ghcr.io/jorenn92/maintainerr:1.7.1 # or jorenn92/maintainerr:1.7.1 + container_name: maintainerr +# user: 1000:1000 # only use this with release 2.0 and up + volumes: + - ${APP_DATA_DIR}/data/config:/opt/data + environment: + - TZ=${TZ} +# - DEBUG=true # uncomment to enable verbose logs + ports: + - ${APP_PORT}:80 + restart: unless-stopped + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.maintainerr-web-redirect.redirectscheme.scheme: https + traefik.http.services.maintainerr.loadbalancer.server.port: 8030 + # Web + traefik.http.routers.maintainerr-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.maintainerr-insecure.entrypoints: web + traefik.http.routers.maintainerr-insecure.service: maintainerr + traefik.http.routers.maintainerr-insecure.middlewares: maintainerr-web-redirect + # Websecure + traefik.http.routers.maintainerr.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.maintainerr.entrypoints: websecure + traefik.http.routers.maintainerr.service: maintainerr + traefik.http.routers.maintainerr.tls.certresolver: myresolver + # Local domain + traefik.http.routers.maintainerr-local-insecure.rule: Host(`maintainerr.${LOCAL_DOMAIN}`) + traefik.http.routers.maintainerr-local-insecure.entrypoints: web + traefik.http.routers.maintainerr-local-insecure.service: maintainerr + traefik.http.routers.maintainerr-local-insecure.middlewares: maintainerr-web-redirect + # Local domain secure + traefik.http.routers.maintainerr-local.rule: Host(`maintainerr.${LOCAL_DOMAIN}`) + traefik.http.routers.maintainerr-local.entrypoints: websecure + traefik.http.routers.maintainerr-local.service: maintainerr + traefik.http.routers.maintainerr-local.tls: true diff --git a/apps/maintainerr/metadata/description.md b/apps/maintainerr/metadata/description.md new file mode 100644 index 00000000..a7122556 --- /dev/null +++ b/apps/maintainerr/metadata/description.md @@ -0,0 +1,36 @@ +Maintainerr makes managing your media easy. + +- Do you hate being the janitor of your server? +- Do you have a lot of media that never gets watched? +- Do your users constantly request media, and let it sit there afterward never to be touched again? + +If you answered yes to any of those questions.. You NEED Maintainerr. +It's a one-stop-shop for handling those outlying shows and movies that take up precious space on your server. + +# Features + +- Configure rules specific to your needs, based off of several available options from Plex, Overseerr, Radarr, and Sonarr. +- Manually add media to a collection, in case it's not included after rule execution. (one-off items that don't match a rule set) +- Selectively exclude media from being added to a collection, even if it matches a rule. +- Show a collection, containing rule matched media, on the Plex home screen for a specific duration before deletion. Think "Leaving soon". +- Optionally, use a manual Plex collection, in case you don't want Maintainerr to add & remove Plex collections at will. +- Manage media straight from the collection within Plex. Maintainerr will sync and add or exclude media to/from the internal collection. + +- Remove or unmonitor media from \*arr +- Clear requests from Overseerr +- Delete files from disk + +
+Currently, Maintainerr supports rule parameters from these apps : + +- Plex +- Overseerr +- Radarr +- Sonarr + +# Preview + +![image](https://raw.githubusercontent.com/jorenn92/Maintainerr/main/ui/public/screenshots/overview_screenshot.png) +![image](https://raw.githubusercontent.com/jorenn92/Maintainerr/main/ui/public/screenshots/rules_screenshot.png) +![image](https://raw.githubusercontent.com/jorenn92/Maintainerr/main/ui/public/screenshots/collections_screenshot.png) +![image](https://raw.githubusercontent.com/jorenn92/Maintainerr/main/ui/public/screenshots/rule_example_screenshot.png) \ No newline at end of file diff --git a/apps/maintainerr/metadata/logo.jpg b/apps/maintainerr/metadata/logo.jpg new file mode 100644 index 00000000..1359c8d5 Binary files /dev/null and b/apps/maintainerr/metadata/logo.jpg differ diff --git a/apps/paperless-ngx/config.json b/apps/paperless-ngx/config.json index 0cc34e98..59f55cc2 100644 --- a/apps/paperless-ngx/config.json +++ b/apps/paperless-ngx/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8012, "id": "paperless-ngx", - "tipi_version": 17, - "version": "2.4.2", + "tipi_version": 18, + "version": "2.4.3", "categories": [ "utilities" ], diff --git a/apps/paperless-ngx/docker-compose.yml b/apps/paperless-ngx/docker-compose.yml index 400f38e5..6fd9bf1b 100644 --- a/apps/paperless-ngx/docker-compose.yml +++ b/apps/paperless-ngx/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: paperless-ngx: container_name: paperless-ngx - image: ghcr.io/paperless-ngx/paperless-ngx:2.4.2 + image: ghcr.io/paperless-ngx/paperless-ngx:2.4.3 restart: unless-stopped depends_on: - db diff --git a/apps/readarr/config.json b/apps/readarr/config.json index 062db851..b2bc6650 100644 --- a/apps/readarr/config.json +++ b/apps/readarr/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8112, "id": "readarr", - "tipi_version": 8, - "version": "0.3.17-nightly", + "tipi_version": 9, + "version": "0.3.18-nightly", "categories": [ "books", "media" diff --git a/apps/readarr/docker-compose.yml b/apps/readarr/docker-compose.yml index d119e16d..c16aac76 100644 --- a/apps/readarr/docker-compose.yml +++ b/apps/readarr/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: readarr: - image: lscr.io/linuxserver/readarr:0.3.17-nightly + image: lscr.io/linuxserver/readarr:0.3.18-nightly container_name: readarr environment: - PUID=1000 diff --git a/apps/silverbullet/config.json b/apps/silverbullet/config.json new file mode 100644 index 00000000..37346f32 --- /dev/null +++ b/apps/silverbullet/config.json @@ -0,0 +1,40 @@ +{ + "$schema": "../schema.json", + "name": "Silverbullet", + "port": 8214, + "available": true, + "exposable": true, + "id": "silverbullet", + "tipi_version": 2, + "version": "0.6.1", + "categories": [ + "utilities" + ], + "description": "SilverBullet aims to be your workshop for the mind", + "short_desc": "SilverBullet is a creative space where you collect, create and expand your personal knowledge, while also letting you constantly evolve the tools you use to do so.", + "author": "zefhemel", + "source": "https://github.com/silverbulletmd/silverbullet", + "website": "https://silverbullet.md", + "form_fields": [ + { + "type": "text", + "label": "Username", + "max": 50, + "min": 3, + "required": true, + "env_variable": "SB_USER" + }, + { + "type": "password", + "label": "Password", + "max": 50, + "min": 8, + "required": true, + "env_variable": "SB_PASSWORD" + } + ], + "supported_architectures": [ + "arm64", + "amd64" + ] +} diff --git a/apps/silverbullet/docker-compose.yml b/apps/silverbullet/docker-compose.yml new file mode 100644 index 00000000..afd66cfb --- /dev/null +++ b/apps/silverbullet/docker-compose.yml @@ -0,0 +1,41 @@ +version: '3.9' + +services: + silverbullet: + image: zefhemel/silverbullet:0.6.1 + container_name: 'silverbullet' + restart: unless-stopped + volumes: + - /etc/localtime:/etc/localtime:ro + - ${APP_DATA_DIR}/space:/space + environment: + - SB_USER=${SB_USER}:${SB_PASSWORD} + ports: + - ${APP_PORT}:3000 + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.silverbullet-web-redirect.redirectscheme.scheme: https + traefik.http.services.silverbullet.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.silverbullet-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.silverbullet-insecure.entrypoints: web + traefik.http.routers.silverbullet-insecure.service: silverbullet + traefik.http.routers.silverbullet-insecure.middlewares: silverbullet-web-redirect + # Websecure + traefik.http.routers.silverbullet.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.silverbullet.entrypoints: websecure + traefik.http.routers.silverbullet.service: silverbullet + traefik.http.routers.silverbullet.tls.certresolver: myresolver + # Local domain + traefik.http.routers.silverbullet-local-insecure.rule: Host(`silverbullet.${LOCAL_DOMAIN}`) + traefik.http.routers.silverbullet-local-insecure.entrypoints: web + traefik.http.routers.silverbullet-local-insecure.service: silverbullet + traefik.http.routers.silverbullet-local-insecure.middlewares: silverbullet-web-redirect + # Local domain secure + traefik.http.routers.silverbullet-local.rule: Host(`silverbullet.${LOCAL_DOMAIN}`) + traefik.http.routers.silverbullet-local.entrypoints: websecure + traefik.http.routers.silverbullet-local.service: silverbullet + traefik.http.routers.silverbullet-local.tls: true diff --git a/apps/silverbullet/metadata/description.md b/apps/silverbullet/metadata/description.md new file mode 100644 index 00000000..5318832b --- /dev/null +++ b/apps/silverbullet/metadata/description.md @@ -0,0 +1,22 @@ +# SilverBullet +SilverBullet aims to be your **workshop for the mind**: a creative space where you collect, create and expand your personal knowledge, while also letting you constantly evolve the tools you use to do so. + +While you _can_ use SilverBullet as a simple note taking application that stores notes in plain markdown files on disk, it becomes truly powerful in the hands of more technical power users. By leveraging metadata annotations, its Objects infrastructure, Live Queries and Live Templates, SilverBullet becomes a powerful _end-user programming tool_, enabling you to quickly develop various types of ad-hoc knowledge applications. SilverBullet is implemented as an open-source, self-hosted, offline-capable web application. + +You’ve been told there is _no such thing_ as a [silver bullet](https://en.wikipedia.org/wiki/Silver_bullet). You were told wrong. + +[![Introduction to SilverBullet](http://img.youtube.com/vi/BbNbZgOwB-Y/0.jpg)](https://www.youtube.com/watch?v=BbNbZgOwB-Y) + +## Features +SilverBullet... +* Runs in any modern browser (including on mobile) as a PWA in two Client Modes (_online_ and _synced_ mode), where the _synced mode_ enables **100% offline operation**, keeping a copy of content in the browser, syncing back to the server when a network connection is available. +* Provides an enjoyable markdown writing experience with a clean UI, rendering text using Live Preview, further **reducing visual noise** while still providing direct access to the underlying markdown syntax. +* Supports wiki-style **page linking** using the `[[page link]]` syntax. Incoming links are indexed and appear as “Linked Mentions” at the bottom of the pages linked to thereby providing _bi-directional linking_. +* Optimized for **keyboard-based operation**: + * Quickly navigate between pages using the **page switcher** (triggered with `Cmd-k` on Mac or `Ctrl-k` on Linux and Windows). + * Run commands via their keyboard shortcuts or the **command palette** (triggered with `Cmd-/` or `Ctrl-/` on Linux and Windows). + * Use Slash Commands to perform common text editing operations. +* Provides a platform for [end-user programming](https://www.inkandswitch.com/end-user-programming/) through its support for Objects, Live Queries and Live Templates. +* Robust extension mechanism using plugs. +* **Self-hosted**: you own your data. All content is stored as plain files in a folder on disk. Back up, sync, edit, publish, script with any additional tools you like. +* SilverBullet is [open source, MIT licensed](https://github.com/silverbulletmd/silverbullet) software. diff --git a/apps/silverbullet/metadata/logo.jpg b/apps/silverbullet/metadata/logo.jpg new file mode 100644 index 00000000..35f3131d Binary files /dev/null and b/apps/silverbullet/metadata/logo.jpg differ diff --git a/apps/stirling-pdf/config.json b/apps/stirling-pdf/config.json index 8356d00f..26a70be3 100644 --- a/apps/stirling-pdf/config.json +++ b/apps/stirling-pdf/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "stirling-pdf", - "tipi_version": 18, - "version": "0.20.0", + "tipi_version": 19, + "version": "0.20.1", "categories": [ "data", "utilities" diff --git a/apps/stirling-pdf/docker-compose.yml b/apps/stirling-pdf/docker-compose.yml index d5546b53..4b2351fa 100644 --- a/apps/stirling-pdf/docker-compose.yml +++ b/apps/stirling-pdf/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.9" services: stirling-pdf: - image: frooodle/s-pdf:0.20.0 + image: frooodle/s-pdf:0.20.1 restart: unless-stopped container_name: stirling-pdf privileged: true diff --git a/apps/wekan/config.json b/apps/wekan/config.json index dbc05dd8..40a067cf 100644 --- a/apps/wekan/config.json +++ b/apps/wekan/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "wekan", - "tipi_version": 3, - "version": "7.28", + "tipi_version": 5, + "version": "7.30", "categories": [ "development" ], diff --git a/apps/wekan/docker-compose.yml b/apps/wekan/docker-compose.yml index bf407fd0..f57585c7 100644 --- a/apps/wekan/docker-compose.yml +++ b/apps/wekan/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: wekan: - image: ghcr.io/wekan/wekan:v7.28 + image: ghcr.io/wekan/wekan:v7.30 container_name: wekan environment: # https://github.com/wekan/wekan/blob/main/docker-compose.yml