Merge branch 'master' into anse

This commit is contained in:
nrvo 2024-01-29 20:16:41 +01:00 committed by GitHub
commit 52e8a2dd1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
37 changed files with 425 additions and 80 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@ node_modules/
package-lock.json
github.secrets
.DS_Store
.nova
.nova
.vscode/

40
apps/atuin/config.json Executable file
View File

@ -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"
]
}

57
apps/atuin/docker-compose.yml Executable file
View File

@ -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

View File

@ -0,0 +1,33 @@
# Atuin Server
Once installed, [configure your client](https://docs.atuin.sh/self-hosting/usage/) to use `<your-tipi-ip>: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)`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -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"

View File

@ -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

View File

@ -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"
],

View File

@ -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

View File

@ -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"
],

View File

@ -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

View File

@ -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

View File

@ -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"
],

View File

@ -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

View File

@ -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"
],

View File

@ -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

View File

@ -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"
],

View File

@ -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

View File

@ -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

View File

@ -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"
],

View File

@ -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}

View File

@ -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"]
}

View File

@ -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

View File

@ -0,0 +1,36 @@
<b>Maintainerr</b> 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 <b>Maintainerr</b>.
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 <b>Maintainerr</b> to add & remove Plex collections at will.
- Manage media straight from the collection within Plex. <b>Maintainerr</b> 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
<br />
Currently, <b>Maintainerr</b> 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)

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -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"
],

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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"
]
}

View File

@ -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

View File

@ -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.
Youve 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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -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"

View File

@ -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

View File

@ -5,8 +5,8 @@
"available": true,
"exposable": true,
"id": "wekan",
"tipi_version": 3,
"version": "7.28",
"tipi_version": 5,
"version": "7.30",
"categories": [
"development"
],

View File

@ -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