Merge branch 'runtipi:master' into app/pinchflat
This commit is contained in:
commit
00f053e14e
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -11,7 +11,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.2
|
||||
uses: actions/checkout@v4.1.3
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
|
|
2
.github/workflows/readme-generator.yml
vendored
2
.github/workflows/readme-generator.yml
vendored
|
@ -10,7 +10,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4.1.2
|
||||
uses: actions/checkout@v4.1.3
|
||||
|
||||
- name: Install Bun
|
||||
uses: oven-sh/setup-bun@v1
|
||||
|
|
6
.github/workflows/renovate-ci.yml
vendored
6
.github/workflows/renovate-ci.yml
vendored
|
@ -8,7 +8,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.2
|
||||
uses: actions/checkout@v4.1.3
|
||||
|
||||
- name: Get last commit message
|
||||
id: get-last-commit-message
|
||||
|
@ -21,7 +21,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.2
|
||||
uses: actions/checkout@v4.1.3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.PERSONAL_TOKEN }}
|
||||
|
@ -58,7 +58,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.2
|
||||
uses: actions/checkout@v4.1.3
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
|
|
2
.github/workflows/renovate.yml
vendored
2
.github/workflows/renovate.yml
vendored
|
@ -23,7 +23,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.2
|
||||
uses: actions/checkout@v4.1.3
|
||||
- name: Self-hosted Renovate
|
||||
uses: renovatebot/github-action@v40.1.9
|
||||
with:
|
||||
|
|
|
@ -57,6 +57,7 @@ This is the official repository for the Tipi App Store. It contains all the apps
|
|||
- [Fireshare](https://github.com/ShaneIsrael/fireshare) - Self host your media and share with unique links
|
||||
- [Flaresolverr](https://github.com/FlareSolverr/FlareSolverr) - Bypass Cloudflare and DDoS-GuARD.
|
||||
- [flatnotes](https://github.com/Dullage/flatnotes) - A self-hosted, database-less note taking web app
|
||||
- [Flightlog](https://github.com/perdian/flightlog/) - Flightlog, a web application that keeps track of your personal flight history
|
||||
- [Flowise AI](https://github.com/FlowiseAI/Flowise) - Build LLM Apps Easily
|
||||
- [Forgejo](https://codeberg.org/forgejo/forgejo/) - Beyond coding. We forge. · Lightweight and performant · Guaranteed 100% Free Software
|
||||
- [FreshRSS](https://github.com/FreshRSS/FreshRSS) - A free, self-hostable aggregator…
|
||||
|
@ -188,8 +189,10 @@ This is the official repository for the Tipi App Store. It contains all the apps
|
|||
- [Shlink](https://github.com/shlinkio/shlink) - Shlink is a self-hosted URL shortener
|
||||
- [Silverbullet](https://github.com/silverbulletmd/silverbullet) - 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.
|
||||
- [SimpleX SMP](https://github.com/simplex-chat/simplexmq) - A reference implementation of the SimpleX Messaging Protocol for simplex queues over public networks.
|
||||
- [SLSKD](https://github.com/slskd/slskd) - P2P downloads
|
||||
- [Sonarr](https://github.com/Sonarr/Sonarr) - TV show manager for Usenet and BitTorrent
|
||||
- [Speedtest Tracker](https://github.com/alexjustesen/speedtest-tracker) - Internet performance tracking application.
|
||||
- [Spoolman](https://github.com/Donkie/Spoolman) - Keep track of your inventory of 3D-printer filament spools
|
||||
- [Sshwifty](https://github.com/nirui/sshwifty) - Web SSH & Telnet (WebSSH & WebTelnet client)
|
||||
- [Stirling-PDF](https://github.com/Frooodle/Stirling-PDF/) - Powerful locally hosted web based PDF manipulation tool.
|
||||
- [Syncthing](https://github.com/syncthing) - Peer-to-peer file synchronization between your devices
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"id": "activepieces",
|
||||
"description": "Your friendliest open source all-in-one automation tool.",
|
||||
"tipi_version": 22,
|
||||
"version": "0.24.1",
|
||||
"tipi_version": 24,
|
||||
"version": "0.25.1",
|
||||
"categories": [
|
||||
"automation"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
version: '3.7'
|
||||
services:
|
||||
activepieces:
|
||||
image: activepieces/activepieces:0.24.1
|
||||
image: activepieces/activepieces:0.25.1
|
||||
container_name: activepieces
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
|
|
53
apps/affine/config.json
Normal file
53
apps/affine/config.json
Normal file
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
"name": "AFFiNE",
|
||||
"id": "affine",
|
||||
"available": true,
|
||||
"short_desc": "AFFiNE is a workspace with fully merged docs, whiteboards and databases.",
|
||||
"author": "https://github.com/toeverything",
|
||||
"port": 3010,
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
"description": "AFFiNE is a workspace with fully merged docs, whiteboards and databases. A privacy-focused, local-first, open-source, and ready-to-use alternative for Notion & Miro. Docs, canvas and tables are hyper-merged with AFFiNE - just like the word affine",
|
||||
"tipi_version": 1,
|
||||
"version": "stable",
|
||||
"source": "https://github.com/toeverything/affine",
|
||||
"website": "https://affine.pro",
|
||||
"exposable": true,
|
||||
"form_fields": [
|
||||
{
|
||||
"env_variable": "AFFINE_ADMIN_EMAIL",
|
||||
"label": "Admin Email",
|
||||
"pattern_error": "Invalid email",
|
||||
"regex": "^[\\w\\-\\.]+@([\\w-]+\\.)+[\\w-]{2,}$",
|
||||
"required": true,
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"env_variable": "AFFINE_ADMIN_PASSWORD",
|
||||
"label": "Admin Password",
|
||||
"pattern_error": "Invalid password: Must have 1 lowercase, 1 uppercase, 1 special character, 1 digit and no $.",
|
||||
"regex": "^(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[^\\w\\d\\s:])([^\\s$]){8,128}$",
|
||||
"required": true,
|
||||
"type": "password",
|
||||
"min": 8,
|
||||
"max": 128
|
||||
},
|
||||
{
|
||||
"env_variable": "AFFINE_TELEMETRY_ENABLE",
|
||||
"label": "Enable affine telemetry?",
|
||||
"required": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"env_variable": "AFFINE_POSTGRES_PASSWORD",
|
||||
"label": "Affine postgres password",
|
||||
"type": "random",
|
||||
"min": 32
|
||||
}
|
||||
],
|
||||
"supported_architectures": [
|
||||
"arm64",
|
||||
"amd64"
|
||||
]
|
||||
}
|
91
apps/affine/docker-compose.yml
Normal file
91
apps/affine/docker-compose.yml
Normal file
|
@ -0,0 +1,91 @@
|
|||
version: "3.9"
|
||||
services:
|
||||
affine:
|
||||
image: ghcr.io/toeverything/affine-graphql:stable
|
||||
container_name: affine
|
||||
command: ["sh", "-c", "node ./scripts/self-host-predeploy && node ./dist/index.js"]
|
||||
ports:
|
||||
- ${APP_PORT}:3010
|
||||
depends_on:
|
||||
affine-redis:
|
||||
condition: service_healthy
|
||||
affine-postgres:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
# Custom configurations
|
||||
- ${APP_DATA_DIR}/data/config:/root/.affine/config
|
||||
# Blob storage
|
||||
- ${APP_DATA_DIR}/data/storage:/root/.affine/storage
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "1000m"
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- NODE_OPTIONS="--import=./scripts/register.js"
|
||||
- AFFINE_CONFIG_PATH=/root/.affine/config
|
||||
- REDIS_SERVER_HOST=affine-redis
|
||||
- DATABASE_URL=postgres://tipi:${AFFINE_POSTGRES_PASSWORD}@affine-postgres:5432/affine
|
||||
- NODE_ENV=production
|
||||
- AFFINE_ADMIN_EMAIL=${AFFINE_ADMIN_EMAIL}
|
||||
- AFFINE_ADMIN_PASSWORD=${AFFINE_ADMIN_PASSWORD}
|
||||
- TELEMETRY_ENABLE=${AFFINE_TELEMETRY_ENABLE}
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.affine-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.affine.loadbalancer.server.port: 3010
|
||||
# Web
|
||||
traefik.http.routers.affine-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.affine-insecure.entrypoints: web
|
||||
traefik.http.routers.affine-insecure.service: affine
|
||||
traefik.http.routers.affine-insecure.middlewares: affine-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.affine.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.affine.entrypoints: websecure
|
||||
traefik.http.routers.affine.service: affine
|
||||
traefik.http.routers.affine.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.affine-local-insecure.rule: Host(`affine.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.affine-local-insecure.entrypoints: web
|
||||
traefik.http.routers.affine-local-insecure.service: affine
|
||||
traefik.http.routers.affine-local-insecure.middlewares: affine-web-redirect
|
||||
# Local domain secure
|
||||
traefik.http.routers.affine-local.rule: Host(`affine.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.affine-local.entrypoints: websecure
|
||||
traefik.http.routers.affine-local.service: affine
|
||||
traefik.http.routers.affine-local.tls: true
|
||||
|
||||
affine-redis:
|
||||
image: redis
|
||||
container_name: affine-redis
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/redis:/data
|
||||
healthcheck:
|
||||
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
affine-postgres:
|
||||
image: postgres
|
||||
container_name: affinepostgres
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "pg_isready -U affine" ]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
environment:
|
||||
POSTGRES_USER: tipi
|
||||
POSTGRES_PASSWORD: ${AFFINE_POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: affine
|
||||
networks:
|
||||
- tipi_main_network
|
23
apps/affine/metadata/description.md
Executable file
23
apps/affine/metadata/description.md
Executable file
|
@ -0,0 +1,23 @@
|
|||
## AFFiNE
|
||||
|
||||
[AFFiNE](https://affine.pro) is an open-source, all-in-one workspace and an operating system for all the building blocks that assemble your knowledge base and much more -- wiki, knowledge management, presentation and digital assets. It's a better alternative to Notion and Miro.
|
||||
|
||||

|
||||
|
||||
### Features
|
||||
|
||||
**A true canvas for blocks in any form. Docs and whiteboard are now fully merged.**
|
||||
|
||||
- Many editor apps claim to be a canvas for productivity, but AFFiNE is one of the very few which allows you to put any building block on an edgeless canvas -- rich text, sticky notes, any embedded web pages, multi-view databases, linked pages, shapes and even slides. We have it all.
|
||||
|
||||
**Multimodal AI partner ready to kick in any work**
|
||||
|
||||
- Write up professional work report? Turn an outline into expressive and presentable slides? Summary an article into a well-structured mindmap? Sorting your job plan and backlog for tasks? Or... draw and code prototype apps and web pages directly all with one prompt? With you, AFFiNE AI pushes your creativity to the edge of your imagination.
|
||||
|
||||
**Local-first & Real-time collaborative**
|
||||
|
||||
- We love the idea of local-first that you always own your data on your disk, in spite of the cloud. Furthermore, AFFiNE supports real-time sync and collaborations on web and cross-platform clients.
|
||||
|
||||
**Self-host & Shape your own AFFiNE**
|
||||
|
||||
- You have the freedom to manage, self-host, fork and build your own AFFiNE. Plugin community and third-party blocks are coming soon. More tractions on [Blocksuite](https://blocksuite.io). Check there to learn how to [self-host AFFiNE](https://docs.affine.pro/docs/self-host-affine).
|
BIN
apps/affine/metadata/logo.jpg
Normal file
BIN
apps/affine/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
|
@ -5,11 +5,9 @@
|
|||
"exposable": true,
|
||||
"port": 8015,
|
||||
"id": "archivebox",
|
||||
"tipi_version": 2,
|
||||
"version": "0.7.4",
|
||||
"categories": [
|
||||
"media"
|
||||
],
|
||||
"tipi_version": 3,
|
||||
"version": "0.7.2",
|
||||
"categories": ["media"],
|
||||
"description": "ArchiveBox is a powerful, self-hosted internet archiving solution to collect, save, and view websites offline.",
|
||||
"short_desc": "Open source self-hosted web archiving.",
|
||||
"author": "archivebox",
|
||||
|
@ -33,8 +31,5 @@
|
|||
"env_variable": "ARCHIVEBOX_PASSWORD"
|
||||
}
|
||||
],
|
||||
"supported_architectures": [
|
||||
"arm64",
|
||||
"amd64"
|
||||
]
|
||||
"supported_architectures": ["arm64", "amd64"]
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
services:
|
||||
archivebox:
|
||||
image: archivebox/archivebox:0.7.4
|
||||
image: archivebox/archivebox:0.7.2
|
||||
restart: unless-stopped
|
||||
container_name: archivebox
|
||||
command: server --quick-init 0.0.0.0:8015
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 13378,
|
||||
"id": "audiobookshelf",
|
||||
"tipi_version": 13,
|
||||
"version": "2.8.1",
|
||||
"tipi_version": 14,
|
||||
"version": "2.9.0",
|
||||
"categories": [
|
||||
"books",
|
||||
"media"
|
||||
|
|
|
@ -2,7 +2,7 @@ version: '3.7'
|
|||
services:
|
||||
audiobookshelf:
|
||||
container_name: audiobookshelf
|
||||
image: ghcr.io/advplyr/audiobookshelf:2.8.1
|
||||
image: ghcr.io/advplyr/audiobookshelf:2.9.0
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- ${APP_PORT}:80
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "authentik",
|
||||
"tipi_version": 11,
|
||||
"version": "2024.2.3",
|
||||
"tipi_version": 12,
|
||||
"version": "2024.4.0",
|
||||
"https": true,
|
||||
"categories": [
|
||||
"development"
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
|
||||
services:
|
||||
authentik:
|
||||
image: ghcr.io/goauthentik/server:2024.2.3
|
||||
image: ghcr.io/goauthentik/server:2024.4.0
|
||||
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:2024.2.3
|
||||
image: ghcr.io/goauthentik/server:2024.4.0
|
||||
restart: unless-stopped
|
||||
command: worker
|
||||
container_name: authentik-worker
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "budibase",
|
||||
"tipi_version": 126,
|
||||
"version": "2.23.10",
|
||||
"tipi_version": 128,
|
||||
"version": "2.23.12",
|
||||
"categories": [
|
||||
"development"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
version: '3.7'
|
||||
services:
|
||||
budibase:
|
||||
image: budibase/budibase:2.23.10
|
||||
image: budibase/budibase:2.23.12
|
||||
restart: unless-stopped
|
||||
container_name: budibase
|
||||
ports:
|
||||
|
|
23
apps/cheshire-cat-ai/config.json
Normal file
23
apps/cheshire-cat-ai/config.json
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"name": "Cheshire Cat AI",
|
||||
"available": true,
|
||||
"port": 1865,
|
||||
"exposable": true,
|
||||
"id": "cheshire-cat-ai",
|
||||
"description": "The Cheshire Cat is an open-source, hackable and production-ready framework that allows developing intelligent personal AI assistant agents on top of Large Language Models (LLM).",
|
||||
"tipi_version": 1,
|
||||
"version": "1.5.3",
|
||||
"categories": [
|
||||
"ai"
|
||||
],
|
||||
"short_desc": "A production-ready AI framework to develop AI agents.",
|
||||
"author": "pieroit",
|
||||
"source": "https://github.com/cheshire-cat-ai/core",
|
||||
"website": "https://cheshirecat.ai",
|
||||
"form_fields": [],
|
||||
"url_suffix": "/admin",
|
||||
"supported_architectures": [
|
||||
"amd64",
|
||||
"arm64"
|
||||
]
|
||||
}
|
45
apps/cheshire-cat-ai/docker-compose.yml
Normal file
45
apps/cheshire-cat-ai/docker-compose.yml
Normal file
|
@ -0,0 +1,45 @@
|
|||
version: '3.7'
|
||||
|
||||
services:
|
||||
cheshire-cat-ai:
|
||||
networks:
|
||||
- tipi_main_network
|
||||
image: ghcr.io/cheshire-cat-ai/core:1.5.3
|
||||
container_name: cheshire-cat-ai
|
||||
ports:
|
||||
- ${APP_PORT}:80
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
- WATCHFILES_FORCE_POLLING=true
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/static:/app/cat/static
|
||||
- ${APP_DATA_DIR}/data/plugins:/app/cat/plugins
|
||||
- ${APP_DATA_DIR}/data/data:/app/cat/data
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.cheshire-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.cheshire.loadbalancer.server.port: 1865
|
||||
# Web
|
||||
traefik.http.routers.cheshire-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.cheshire-insecure.entrypoints: web
|
||||
traefik.http.routers.cheshire-insecure.service: cheshire-cat-ai
|
||||
traefik.http.routers.cheshire-insecure.middlewares: cheshire-cat-ai-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.cheshire.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.cheshire.entrypoints: websecure
|
||||
traefik.http.routers.cheshire.service: cheshire-cat-ai
|
||||
traefik.http.routers.cheshire.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.cheshire-local-insecure.rule: Host(`cheshire-cat-ai.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.cheshire-local-insecure.entrypoints: web
|
||||
traefik.http.routers.cheshire-local-insecure.service: cheshire-cat-ai
|
||||
traefik.http.routers.cheshire-local-insecure.middlewares: cheshire-cat-ai-web-redirect
|
||||
# Local domain secure
|
||||
traefik.http.routers.cheshire-local.rule: Host(`cheshire-cat-ai.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.cheshire-local.entrypoints: websecure
|
||||
traefik.http.routers.cheshire-local.service: cheshire-cat-ai
|
||||
traefik.http.routers.cheshire-local.tls: true
|
||||
networks:
|
||||
tipi-main-network:
|
||||
driver: bridge
|
78
apps/cheshire-cat-ai/metadata/description.md
Normal file
78
apps/cheshire-cat-ai/metadata/description.md
Normal file
|
@ -0,0 +1,78 @@
|
|||
<a name="readme-top"></a>
|
||||
|
||||
<br />
|
||||
<div align="center">
|
||||
<h2>Cheshire-Cat (Stregatto)</h2>
|
||||
<br/>
|
||||
<a href="https://github.com/cheshire-cat-ai/core">
|
||||
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/cheshire-cat-ai/core?style=social">
|
||||
</a>
|
||||
<a href="https://discord.gg/bHX5sNFCYU">
|
||||
<img src="https://img.shields.io/discord/1092359754917089350?logo=discord"
|
||||
alt="chat on Discord"></a>
|
||||
<a href="https://github.com/cheshire-cat-ai/core/issues">
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/cheshire-cat-ai/core">
|
||||
</a>
|
||||
<a href="https://github.com/cheshire-cat-ai/core/tags">
|
||||
<img alt="GitHub tag (with filter)" src="https://img.shields.io/github/v/tag/cheshire-cat-ai/core">
|
||||
</a>
|
||||
<img alt="GitHub top language" src="https://img.shields.io/github/languages/top/cheshire-cat-ai/core">
|
||||
|
||||
<p align="center">
|
||||
<img align="center" src=https://cheshire-cat-ai.github.io/docs/assets/img/quickstart/write-hook/marvin-sockseller.png alt="Wikipedia picture of the Cheshire Cat">
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
## Production-ready AI assistant framework
|
||||
|
||||
The Cheshire Cat is a framework to build custom AIs on top of any language model.
|
||||
If you have ever used systems like WordPress or Django to build web apps, imagine the Cat as a similar tool, but specific for AI.
|
||||
|
||||
## Docs and Resources
|
||||
|
||||
- [Official Documentation](https://cheshire-cat-ai.github.io/docs/)
|
||||
- [Discord Server](https://discord.gg/bHX5sNFCYU)
|
||||
- [Website](https://cheshirecat.ai/)
|
||||
- [YouTube tutorial - How to install](https://youtu.be/Rvx19TZBCrw)
|
||||
- [Tutorial - Write your first plugin](https://cheshirecat.ai/write-your-first-plugin/)
|
||||
|
||||
## Why using the Cat
|
||||
|
||||
- ⚡️ API first, so you get a microservice to easily add a conversational layer to your app
|
||||
- 🐘 Remembers conversations and documents and uses them in conversation
|
||||
- 🚀 Extensible via plugins (public plugin registry + private plugins allowed)
|
||||
- 🎚 Event callbacks, function calling (tools), conversational forms
|
||||
- 🏛 Easy to use admin panel (chat, visualize memory and plugins, adjust settings)
|
||||
- 🌍 Supports any language model (works with OpenAI, Google, Ollama, HuggingFace, custom services)
|
||||
- 🐋 Production-ready - 100% [dockerized](https://docs.docker.com/get-docker/)
|
||||
- 👩👧👦 Active [Discord community](https://discord.gg/bHX5sNFCYU) and easy to understand [docs](https://cheshire-cat-ai.github.io/docs/)
|
||||
|
||||
We are committed to openness, privacy and creativity, we want to bring AI to the long tail. To learn more about our vision and values, read the [Code of Ethics](https://cheshirecat.ai/code-of-ethics/).
|
||||
|
||||
|
||||
## Roadmap & Contributing
|
||||
|
||||
The Detailed roadmap is [here](https://github.com/cheshire-cat-ai/core/blob/main/readme/ROADMAP.md).
|
||||
Send your pull request to the `develop` branch. Here is a [full guide to contributing](https://github.com/cheshire-cat-ai/core/blob/main/readme/CONTRIBUTING.md).
|
||||
|
||||
Join our [community on Discord](https://discord.gg/bHX5sNFCYU) and give the project a star ⭐!
|
||||
Thanks again!🙏
|
||||
|
||||
## Which way to go?
|
||||
|
||||
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
||||
|
||||
<p align="center">
|
||||
<img align="center" src=https://raw.githubusercontent.com/cheshire-cat-ai/core/main/readme/cheshire-cat.jpeg width=400px alt="Wikipedia picture of the Cheshire Cat">
|
||||
</p>
|
||||
|
||||
```
|
||||
"Would you tell me, please, which way I ought to go from here?"
|
||||
"That depends a good deal on where you want to get to," said the Cat.
|
||||
"I don't much care where--" said Alice.
|
||||
"Then it doesn't matter which way you go," said the Cat.
|
||||
|
||||
(Alice's Adventures in Wonderland - Lewis Carroll)
|
||||
|
||||
```
|
BIN
apps/cheshire-cat-ai/metadata/logo.jpg
Normal file
BIN
apps/cheshire-cat-ai/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": false,
|
||||
"id": "cloudflared",
|
||||
"tipi_version": 9,
|
||||
"version": "2024.4.0",
|
||||
"tipi_version": 10,
|
||||
"version": "2024.4.1",
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.9"
|
|||
|
||||
services:
|
||||
cloudflared:
|
||||
image: wisdomsky/cloudflared-web:2024.4.0
|
||||
image: wisdomsky/cloudflared-web:2024.4.1
|
||||
container_name: cloudflared
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
"no_gui": true,
|
||||
"port": 1999,
|
||||
"id": "email-oauth2-proxy",
|
||||
"tipi_version": 6,
|
||||
"version": "2024.03.26",
|
||||
"tipi_version": 7,
|
||||
"version": "2024.04.24",
|
||||
"categories": [
|
||||
"utilities",
|
||||
"security"
|
||||
|
|
|
@ -3,7 +3,7 @@ version: "3.9"
|
|||
services:
|
||||
email-oauth2-proxy:
|
||||
container_name: email-oauth2-proxy
|
||||
image: ghcr.io/blacktirion/email-oauth2-proxy-docker:2024.03.26
|
||||
image: ghcr.io/blacktirion/email-oauth2-proxy-docker:2024.04.24
|
||||
ports:
|
||||
- ${APP_PORT}:80
|
||||
restart: unless-stopped
|
||||
|
|
|
@ -5,14 +5,19 @@
|
|||
"exposable": true,
|
||||
"port": 8096,
|
||||
"id": "filebrowser",
|
||||
"tipi_version": 3,
|
||||
"tipi_version": 4,
|
||||
"version": "s6",
|
||||
"categories": ["utilities"],
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
"description": "Reliable and Performant File Management Desktop Sync and File Sharing\n Default credentials: admin / admin",
|
||||
"short_desc": "Access your homeserver files from your browser",
|
||||
"author": "filebrowser.org",
|
||||
"website": "https://filebrowser.org/",
|
||||
"source": "https://github.com/filebrowser/filebrowser",
|
||||
"form_fields": [],
|
||||
"supported_architectures": ["arm64", "amd64"]
|
||||
"supported_architectures": [
|
||||
"arm64",
|
||||
"amd64"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"port": 80,
|
||||
"baseURL": "",
|
||||
"address": "",
|
||||
"log": "stdout",
|
||||
"database": "/database/filebrowser.db",
|
||||
"root": "/srv"
|
||||
}
|
|
@ -10,7 +10,9 @@ services:
|
|||
- ${ROOT_FOLDER_HOST}/media:/srv/media
|
||||
- ${APP_DATA_DIR}/data/general:/srv/general
|
||||
- ${APP_DATA_DIR}/data/db:/database
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
environment:
|
||||
- PUID=0
|
||||
- PGID=0
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"id": "flatnotes",
|
||||
"port": 8137,
|
||||
"tipi_version": 20,
|
||||
"version": "4.0.3",
|
||||
"tipi_version": 21,
|
||||
"version": "4.0.4",
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
|
|
|
@ -3,7 +3,7 @@ version: "3"
|
|||
services:
|
||||
flatnotes:
|
||||
container_name: flatnotes
|
||||
image: dullage/flatnotes:v4.0.3
|
||||
image: dullage/flatnotes:v4.0.4
|
||||
environment:
|
||||
FLATNOTES_AUTH_TYPE: ${FLATNOTES_AUTH_TYPE}
|
||||
FLATNOTES_USERNAME: ${FLATNOTES_USERNAME}
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "ghostfolio",
|
||||
"tipi_version": 75,
|
||||
"version": "2.75.0",
|
||||
"tipi_version": 77,
|
||||
"version": "2.76.0",
|
||||
"categories": [
|
||||
"finance"
|
||||
],
|
||||
|
|
|
@ -3,7 +3,7 @@ version: "3.9"
|
|||
services:
|
||||
ghostfolio:
|
||||
container_name: ghostfolio
|
||||
image: ghostfolio/ghostfolio:2.75.0
|
||||
image: ghostfolio/ghostfolio:2.76.0
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- ${APP_PORT}:3333
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": false,
|
||||
"id": "gladys",
|
||||
"tipi_version": 32,
|
||||
"version": "4.38.4",
|
||||
"tipi_version": 33,
|
||||
"version": "4.39.0",
|
||||
"categories": [
|
||||
"automation"
|
||||
],
|
||||
|
|
|
@ -3,7 +3,7 @@ version: '3'
|
|||
services:
|
||||
gladys:
|
||||
container_name: gladys
|
||||
image: gladysassistant/gladys:v4.38.4
|
||||
image: gladysassistant/gladys:v4.39.0
|
||||
privileged: true
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 8092,
|
||||
"id": "halo",
|
||||
"tipi_version": 24,
|
||||
"version": "2.14.0",
|
||||
"tipi_version": 25,
|
||||
"version": "2.14.1",
|
||||
"description": "Halo is a powerful and easy-to-use open source website building tool.",
|
||||
"short_desc": "Halo - Open source website building tool.",
|
||||
"categories": [
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
|
||||
services:
|
||||
halo:
|
||||
image: halohub/halo:2.14.0
|
||||
image: halohub/halo:2.14.1
|
||||
container_name: halo
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "homeassistant-1",
|
||||
"tipi_version": 12,
|
||||
"version": "2024.4.3",
|
||||
"tipi_version": 13,
|
||||
"version": "2024.4.4",
|
||||
"categories": [
|
||||
"automation"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: '3'
|
|||
|
||||
services:
|
||||
homeassistant-1:
|
||||
image: ghcr.io/home-assistant/home-assistant:2024.4.3
|
||||
image: ghcr.io/home-assistant/home-assistant:2024.4.4
|
||||
container_name: homeassistant-1
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
|
|
|
@ -42,7 +42,7 @@ services:
|
|||
traefik.http.routers.invoice-ninja-local.tls: true
|
||||
|
||||
invoice-ninja-server:
|
||||
image: invoiceninja/invoiceninja:5.8.50
|
||||
image: invoiceninja/invoiceninja:5.8.51
|
||||
container_name: invoice-ninja-server
|
||||
restart: unless-stopped
|
||||
user: 1500:1500
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "kavita",
|
||||
"tipi_version": 13,
|
||||
"version": "0.8.0",
|
||||
"tipi_version": 14,
|
||||
"version": "0.8.1",
|
||||
"categories": [
|
||||
"media"
|
||||
],
|
||||
|
|
|
@ -3,7 +3,7 @@ version: "3.9"
|
|||
services:
|
||||
kavita:
|
||||
container_name: kavita
|
||||
image: jvmilazz0/kavita:0.8.0
|
||||
image: jvmilazz0/kavita:0.8.1
|
||||
ports:
|
||||
- ${APP_PORT}:5000
|
||||
volumes:
|
||||
|
|
23
apps/komga/config.json
Normal file
23
apps/komga/config.json
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Komga",
|
||||
"port": 2560,
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "komga",
|
||||
"tipi_version": 2,
|
||||
"version": "1.11.1",
|
||||
"categories": [
|
||||
"media"
|
||||
],
|
||||
"description": "A media server for your comics, mangas, BDs, magazines and eBooks.",
|
||||
"short_desc": "A media server for your comics, mangas, BDs, magazines and eBooks.",
|
||||
"author": "gotson",
|
||||
"source": "https://github.com/gotson/komga",
|
||||
"website": "https://komga.org/",
|
||||
"form_fields": [],
|
||||
"supported_architectures": [
|
||||
"arm64",
|
||||
"amd64"
|
||||
]
|
||||
}
|
40
apps/komga/docker-compose.yml
Normal file
40
apps/komga/docker-compose.yml
Normal file
|
@ -0,0 +1,40 @@
|
|||
version: "3.9"
|
||||
services:
|
||||
komga:
|
||||
image: ghcr.io/gotson/komga:1.11.1
|
||||
container_name: komga
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
- ${APP_DATA_DIR}/data/data:/data
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
ports:
|
||||
- ${APP_PORT}:25600
|
||||
networks:
|
||||
- tipi_main_network
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.komga-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.komga.loadbalancer.server.port: 8080
|
||||
# Web
|
||||
traefik.http.routers.komga-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.komga-insecure.entrypoints: web
|
||||
traefik.http.routers.komga-insecure.service: komga
|
||||
traefik.http.routers.komga-insecure.middlewares: komga-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.komga.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.komga.entrypoints: websecure
|
||||
traefik.http.routers.komga.service: komga
|
||||
traefik.http.routers.komga.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.komga-local-insecure.rule: Host(`komga.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.komga-local-insecure.entrypoints: web
|
||||
traefik.http.routers.komga-local-insecure.service: komga
|
||||
traefik.http.routers.komga-local-insecure.middlewares: komga-web-redirect
|
||||
# Local domain secure
|
||||
traefik.http.routers.komga-local.rule: Host(`komga.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.komga-local.entrypoints: websecure
|
||||
traefik.http.routers.komga-local.service: komga
|
||||
traefik.http.routers.komga-local.tls: true
|
32
apps/komga/metadata/description.md
Normal file
32
apps/komga/metadata/description.md
Normal file
|
@ -0,0 +1,32 @@
|
|||
## Komga
|
||||
|
||||
Komga is a media server for your comics, mangas, BDs, magazines and eBooks.
|
||||
|
||||
### Chat on [Discord](https://discord.gg/TdRpkDu)
|
||||
|
||||
### Features
|
||||
|
||||
- Browse libraries, series and books via a responsive web UI that works on desktop, tablets and phones
|
||||
- Organize your library with collections and read lists
|
||||
- Edit metadata for your series and books
|
||||
- Import embedded metadata automatically
|
||||
- Webreader with multiple reading modes
|
||||
- Manage multiple users, with per-library access control, age restrictions, and labels restrictions
|
||||
- Offers a REST API, many community tools and scripts can interact with Komga
|
||||
- Download book files, whole series, or read lists
|
||||
- Duplicate files detection
|
||||
- Duplicate pages detection and removal
|
||||
- Import books from outside your libraries directly into your series folder
|
||||
- Import ComicRack `cbl` read lists
|
||||
|
||||
### Documentation
|
||||
|
||||
Head over to our [website](https://komga.org) for more information.
|
||||
|
||||
### Develop in Komga
|
||||
|
||||
Check the [development guidelines](./DEVELOPING.md).
|
||||
|
||||
### Credits
|
||||
|
||||
The Komga icon is based on an icon made by [Freepik](https://www.freepik.com/home) from [Flaticon](https://www.flaticon.com).
|
BIN
apps/komga/metadata/logo.jpg
Normal file
BIN
apps/komga/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 8121,
|
||||
"id": "libretranslate",
|
||||
"tipi_version": 17,
|
||||
"version": "1.5.6",
|
||||
"tipi_version": 18,
|
||||
"version": "1.5.7",
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
services:
|
||||
libretranslate:
|
||||
container_name: libretranslate
|
||||
image: libretranslate/libretranslate:v1.5.6
|
||||
image: libretranslate/libretranslate:v1.5.7
|
||||
dns:
|
||||
- ${DNS_IP}
|
||||
ports:
|
||||
|
|
|
@ -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": 103,
|
||||
"version": "0.148.1",
|
||||
"tipi_version": 113,
|
||||
"version": "0.149.2",
|
||||
"categories": [
|
||||
"ai"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: '3.9'
|
|||
services:
|
||||
lobe-chat:
|
||||
container_name: lobe-chat
|
||||
image: lobehub/lobe-chat:v0.148.1
|
||||
image: lobehub/lobe-chat:v0.149.2
|
||||
environment:
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||
- OPENAI_PROXY_URL=${OPEANAI_PROXY_URL}
|
||||
|
|
|
@ -7,9 +7,11 @@
|
|||
"force_expose": true,
|
||||
"no_gui": true,
|
||||
"id": "matrix-conduit",
|
||||
"tipi_version": 4,
|
||||
"version": "0.6.0",
|
||||
"categories": ["social"],
|
||||
"tipi_version": 5,
|
||||
"version": "0.7.0",
|
||||
"categories": [
|
||||
"social"
|
||||
],
|
||||
"description": "Conduit is a fast Matrix homeserver that’s easy to set up and just works. You can install it on a mini-computer like the Raspberry Pi to host Matrix for your family, friends or company.",
|
||||
"short_desc": "Conduit is a simple, fast and reliable chat server written in Rust",
|
||||
"author": "Timo Kösters",
|
||||
|
@ -69,5 +71,8 @@
|
|||
"env_variable": "TURN_SECRET"
|
||||
}
|
||||
],
|
||||
"supported_architectures": ["arm64", "amd64"]
|
||||
"supported_architectures": [
|
||||
"arm64",
|
||||
"amd64"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ version: "3.7"
|
|||
services:
|
||||
matrix-conduit:
|
||||
container_name: matrix-conduit
|
||||
image: matrixconduit/matrix-conduit:v0.6.0
|
||||
image: matrixconduit/matrix-conduit:v0.7.0
|
||||
environment:
|
||||
CONDUIT_SERVER_NAME: ${APP_DOMAIN}
|
||||
CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "onedev",
|
||||
"tipi_version": 87,
|
||||
"version": "10.4.0",
|
||||
"tipi_version": 89,
|
||||
"version": "10.5.1",
|
||||
"categories": [
|
||||
"development"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
|
||||
services:
|
||||
onedev:
|
||||
image: 1dev/server:10.4.0
|
||||
image: 1dev/server:10.5.1
|
||||
container_name: onedev
|
||||
environment:
|
||||
- hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "planka",
|
||||
"tipi_version": 18,
|
||||
"version": "1.16.4",
|
||||
"tipi_version": 20,
|
||||
"version": "1.17.1",
|
||||
"categories": [
|
||||
"development"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: '3'
|
|||
|
||||
services:
|
||||
planka:
|
||||
image: ghcr.io/plankanban/planka:1.16.4
|
||||
image: ghcr.io/plankanban/planka:1.17.1
|
||||
container_name: planka
|
||||
command: >
|
||||
bash -c
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 8112,
|
||||
"id": "readarr",
|
||||
"tipi_version": 15,
|
||||
"version": "0.3.24-nightly",
|
||||
"tipi_version": 16,
|
||||
"version": "0.3.25-nightly",
|
||||
"categories": [
|
||||
"books",
|
||||
"media"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
readarr:
|
||||
image: lscr.io/linuxserver/readarr:0.3.24-nightly
|
||||
image: lscr.io/linuxserver/readarr:0.3.25-nightly
|
||||
container_name: readarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
|
|
42
apps/stalwart-mail/config.json
Normal file
42
apps/stalwart-mail/config.json
Normal file
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Stalwart Mail",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"tipi_version": 2,
|
||||
"version": "0.7.2",
|
||||
"port": 8677,
|
||||
"id": "stalwart-mail",
|
||||
"categories": [
|
||||
"media",
|
||||
"network",
|
||||
"utilities"
|
||||
],
|
||||
"description": "Stalwart is a scalable, secure and robust open-source mail server software designed for the 21st century.",
|
||||
"short_desc": "Open-source mail server solution with JMAP, IMAP4, and SMTP support",
|
||||
"author": "Stalwart Labs",
|
||||
"source": "https://github.com/stalwartlabs",
|
||||
"website": "https://stalw.art",
|
||||
"requirements": {
|
||||
"ports": [
|
||||
25,
|
||||
143,
|
||||
465,
|
||||
587,
|
||||
993,
|
||||
4190
|
||||
]
|
||||
},
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "ip",
|
||||
"label": "Network Interface (default: 0.0.0.0)",
|
||||
"required": false,
|
||||
"env_variable": "NETWORK_INTERFACE"
|
||||
}
|
||||
],
|
||||
"supported_architectures": [
|
||||
"arm64",
|
||||
"amd64"
|
||||
]
|
||||
}
|
43
apps/stalwart-mail/docker-compose.yml
Normal file
43
apps/stalwart-mail/docker-compose.yml
Normal file
|
@ -0,0 +1,43 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
stalwart-mail:
|
||||
image: stalwartlabs/mail-server:v0.7.2
|
||||
container_name: stalwart-mail
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/opt/stalwart-mail
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
ports:
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:25:25/tcp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:143:143/tcp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:465:465/tcp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:587:587/tcp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:993:993/tcp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:4190:4190/tcp
|
||||
- ${APP_PORT}:8080
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.stalwart-mail-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.stalwart-mail.loadbalancer.server.port: 8080
|
||||
# Web
|
||||
traefik.http.routers.stalwart-mail-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.stalwart-mail-insecure.entrypoints: web
|
||||
traefik.http.routers.stalwart-mail-insecure.service: stalwart-mail
|
||||
traefik.http.routers.stalwart-mail-insecure.middlewares: stalwart-mail-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.stalwart-mail.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.stalwart-mail.entrypoints: websecure
|
||||
traefik.http.routers.stalwart-mail.service: stalwart-mail
|
||||
traefik.http.routers.stalwart-mail.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.stalwart-mail-local-insecure.rule: Host(`stalwart-mail.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.stalwart-mail-local-insecure.entrypoints: web
|
||||
traefik.http.routers.stalwart-mail-local-insecure.service: stalwart-mail
|
||||
traefik.http.routers.stalwart-mail-local-insecure.middlewares: stalwart-mail-web-redirect
|
||||
# Local domain secure
|
||||
traefik.http.routers.stalwart-mail-local.rule: Host(`stalwart-mail.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.stalwart-mail-local.entrypoints: websecure
|
||||
traefik.http.routers.stalwart-mail-local.service: stalwart-mail
|
||||
traefik.http.routers.stalwart-mail-local.tls: true
|
68
apps/stalwart-mail/metadata/description.md
Normal file
68
apps/stalwart-mail/metadata/description.md
Normal file
|
@ -0,0 +1,68 @@
|
|||
## Stalwart Mail server
|
||||
|
||||
Stalwart is a scalable, secure and robust open-source mail server software designed for the 21st century.
|
||||
|
||||
### Admin Password
|
||||
|
||||
See [Log in to the web interface](https://stalw.art/docs/install/docker#log-in-to-the-web-interface) to know how to get the admin password.
|
||||
|
||||
### Screenshots
|
||||
|
||||
<img src="https://github.com/stalwartlabs/mail-server/blob/main/img/screencast-setup.gif?raw=true" alt="Stalwart Mail Server setup screencast"><br>
|
||||
|
||||
### Features
|
||||
|
||||
**Stalwart Mail Server** is an open-source mail server solution with JMAP, IMAP4, and SMTP support and a wide range of modern features. It is written in Rust and designed to be secure, fast, robust and scalable.
|
||||
|
||||
Key features:
|
||||
|
||||
- **JMAP** server:
|
||||
- JMAP Core ([RFC 8620](https://datatracker.ietf.org/doc/html/rfc8620))
|
||||
- JMAP Mail ([RFC 8621](https://datatracker.ietf.org/doc/html/rfc8621))
|
||||
- JMAP for Sieve Scripts ([DRAFT-SIEVE-19](https://www.ietf.org/archive/id/draft-ietf-jmap-sieve-19.html))
|
||||
- JMAP over WebSocket ([RFC 8887](https://datatracker.ietf.org/doc/html/rfc8887)), JMAP Blob Management ([RFC 9404](https://www.rfc-editor.org/rfc/rfc9404.html)) and JMAP for Quotas ([RFC 9425](https://www.rfc-editor.org/rfc/rfc9425.html)) extensions.
|
||||
- **IMAP4** server:
|
||||
- IMAP4rev2 ([RFC 9051](https://datatracker.ietf.org/doc/html/rfc9051)) full compliance.
|
||||
- IMAP4rev1 ([RFC 3501](https://datatracker.ietf.org/doc/html/rfc3501)) backwards compatible.
|
||||
- ManageSieve ([RFC 5804](https://datatracker.ietf.org/doc/html/rfc5804)) server.
|
||||
- Numerous [extensions](https://stalw.art/docs/development/rfcs#imap4-and-extensions) supported.
|
||||
- **SMTP** server:
|
||||
- Built-in [DMARC](https://datatracker.ietf.org/doc/html/rfc7489), [DKIM](https://datatracker.ietf.org/doc/html/rfc6376), [SPF](https://datatracker.ietf.org/doc/html/rfc7208) and [ARC](https://datatracker.ietf.org/doc/html/rfc8617) support for message authentication.
|
||||
- Strong transport security through [DANE](https://datatracker.ietf.org/doc/html/rfc6698), [MTA-STS](https://datatracker.ietf.org/doc/html/rfc8461) and [SMTP TLS](https://datatracker.ietf.org/doc/html/rfc8460) reporting.
|
||||
- Inbound throttling and filtering with granular configuration rules, sieve scripting and milter integration.
|
||||
- Distributed virtual queues with delayed delivery, priority delivery, quotas, routing rules and throttling support.
|
||||
- Envelope rewriting and message modification.
|
||||
- **Spam and Phishing** filter:
|
||||
- Comprehensive set of filtering **rules** on par with popular solutions.
|
||||
- Statistical **spam classifier** with automatic training capabilities.
|
||||
- DNS Blocklists (**DNSBLs**) checking of IP addresses, domains, and hashes.
|
||||
- Collaborative digest-based spam filtering with **Pyzor**.
|
||||
- **Phishing** protection against homographic URL attacks, sender spoofing and other techniques.
|
||||
- Trusted **reply** tracking to recognize and prioritize genuine e-mail replies.
|
||||
- Sender **reputation** monitoring by IP address, ASN, domain and email address.
|
||||
- **Greylisting** to temporarily defer unknown senders.
|
||||
- **Spam traps** to set up decoy email addresses that catch and analyze spam.
|
||||
- **Flexible and scalable**:
|
||||
- Pluggable storage backends with **RocksDB**, **FoundationDB**, **PostgreSQL**, **mySQL**, **SQLite**, **S3-Compatible**, **Redis** and **ElasticSearch** support.
|
||||
- Built-in, **LDAP** or **SQL** authentication backend support.
|
||||
- Full-text search available in 17 languages.
|
||||
- Disk quotas.
|
||||
- Sieve scripting language with support for all [registered extensions](https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml).
|
||||
- Email aliases, mailing lists, subaddressing and catch-all addresses support.
|
||||
- Integration with **OpenTelemetry** to enable monitoring, tracing, and performance analysis.
|
||||
- **Web-based administration**:
|
||||
- Account, domain, group and mailing list management.
|
||||
- SMTP queue management for messages and outbound DMARC and TLS reports.
|
||||
- Report visualization interface for received DMARC, TLS-RPT and Failure (ARF) reports.
|
||||
- Configuration of every aspect of the mail server.
|
||||
- Log viewer with search and filtering capabilities.
|
||||
- Self-service portal for password reset and encryption-at-rest key management.
|
||||
- **Secure and robust**:
|
||||
- Encryption at rest with **S/MIME** or **OpenPGP**.
|
||||
- Automatic TLS certificate provisioning with [ACME](https://datatracker.ietf.org/doc/html/rfc8555).
|
||||
- OAuth 2.0 [authorization code](https://www.rfc-editor.org/rfc/rfc8628) and [device authorization](https://www.rfc-editor.org/rfc/rfc8628) flows.
|
||||
- Automated blocking of hosts that cause multiple authentication errors (aka **fail2ban**).
|
||||
- Access Control Lists (ACLs).
|
||||
- Rate limiting.
|
||||
- Security audited (read the [report](https://stalw.art/blog/security-audit)).
|
||||
- Memory safe (thanks to Rust).
|
BIN
apps/stalwart-mail/metadata/logo.jpg
Normal file
BIN
apps/stalwart-mail/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "stirling-pdf",
|
||||
"tipi_version": 30,
|
||||
"version": "0.22.8",
|
||||
"tipi_version": 31,
|
||||
"version": "0.23.0",
|
||||
"categories": [
|
||||
"data",
|
||||
"utilities"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
version: "3.9"
|
||||
services:
|
||||
stirling-pdf:
|
||||
image: frooodle/s-pdf:0.22.8
|
||||
image: frooodle/s-pdf:0.23.0
|
||||
restart: unless-stopped
|
||||
container_name: stirling-pdf
|
||||
privileged: true
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "wikijs",
|
||||
"tipi_version": 6,
|
||||
"version": "2.5.301",
|
||||
"tipi_version": 7,
|
||||
"version": "2.5.302",
|
||||
"categories": [
|
||||
"media"
|
||||
],
|
||||
|
|
|
@ -3,7 +3,7 @@ version: '3.7'
|
|||
services:
|
||||
wikijs:
|
||||
container_name: wikijs
|
||||
image: ghcr.io/requarks/wiki:2.5.301
|
||||
image: ghcr.io/requarks/wiki:2.5.302
|
||||
depends_on:
|
||||
- wikijs-db
|
||||
environment:
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"id": "windows",
|
||||
"description": "Run windows in docker...because why not?",
|
||||
"tipi_version": 13,
|
||||
"version": "2.14",
|
||||
"tipi_version": 16,
|
||||
"version": "2.17",
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.9"
|
|||
services:
|
||||
windows:
|
||||
container_name: windows
|
||||
image: dockurr/windows:2.14
|
||||
image: dockurr/windows:2.17
|
||||
restart: unless-stopped
|
||||
devices:
|
||||
- /dev/kvm
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
},
|
||||
"homepage": "https://github.com/meienberger/runtipi-appstore#readme",
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^19.2.1",
|
||||
"@commitlint/config-conventional": "^19.1.0",
|
||||
"@commitlint/cli": "^19.3.0",
|
||||
"@commitlint/config-conventional": "^19.2.2",
|
||||
"@commitlint/cz-commitlint": "^19.2.0",
|
||||
"@types/jest": "^28.1.6",
|
||||
"@types/js-yaml": "^4.0.9",
|
||||
|
@ -29,7 +29,7 @@
|
|||
"@types/semver": "^7.5.8",
|
||||
"commitizen": "^4.3.0",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-plugin-json-schema-validator": "^4.8.3",
|
||||
"eslint-plugin-json-schema-validator": "^5.1.0",
|
||||
"eslint-plugin-jsonc": "^2.15.1",
|
||||
"husky": "^9.0.11",
|
||||
"jest": "^28.1.3",
|
||||
|
|
116
pnpm-lock.yaml
116
pnpm-lock.yaml
|
@ -6,14 +6,14 @@ settings:
|
|||
|
||||
devDependencies:
|
||||
'@commitlint/cli':
|
||||
specifier: ^19.2.1
|
||||
version: 19.2.1(@types/node@20.12.7)(typescript@5.4.5)
|
||||
specifier: ^19.3.0
|
||||
version: 19.3.0(@types/node@20.12.7)(typescript@5.4.5)
|
||||
'@commitlint/config-conventional':
|
||||
specifier: ^19.1.0
|
||||
version: 19.1.0
|
||||
specifier: ^19.2.2
|
||||
version: 19.2.2
|
||||
'@commitlint/cz-commitlint':
|
||||
specifier: ^19.2.0
|
||||
version: 19.2.0(@types/node@20.12.7)(commitizen@4.3.0)(inquirer@9.2.17)(typescript@5.4.5)
|
||||
version: 19.2.0(@types/node@20.12.7)(commitizen@4.3.0)(inquirer@9.2.19)(typescript@5.4.5)
|
||||
'@types/jest':
|
||||
specifier: ^28.1.6
|
||||
version: 28.1.6
|
||||
|
@ -33,8 +33,8 @@ devDependencies:
|
|||
specifier: ^8.57.0
|
||||
version: 8.57.0
|
||||
eslint-plugin-json-schema-validator:
|
||||
specifier: ^4.8.3
|
||||
version: 4.8.3(eslint@8.57.0)
|
||||
specifier: ^5.1.0
|
||||
version: 5.1.0(eslint@8.57.0)
|
||||
eslint-plugin-jsonc:
|
||||
specifier: ^2.15.1
|
||||
version: 2.15.1(eslint@8.57.0)
|
||||
|
@ -75,11 +75,11 @@ packages:
|
|||
'@jridgewell/trace-mapping': 0.3.14
|
||||
dev: true
|
||||
|
||||
/@babel/code-frame@7.24.1:
|
||||
resolution: {integrity: sha512-bC49z4spJQR3j8vFtJBLqzyzFV0ciuL5HYX7qfSl3KEqeMVV+eTquRvmXxpvB0AMubRrvv7y5DILiLLPi57Ewg==}
|
||||
/@babel/code-frame@7.24.2:
|
||||
resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/highlight': 7.24.1
|
||||
'@babel/highlight': 7.24.2
|
||||
picocolors: 1.0.0
|
||||
dev: true
|
||||
|
||||
|
@ -93,7 +93,7 @@ packages:
|
|||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@ampproject/remapping': 2.2.0
|
||||
'@babel/code-frame': 7.24.1
|
||||
'@babel/code-frame': 7.24.2
|
||||
'@babel/generator': 7.18.9
|
||||
'@babel/helper-compilation-targets': 7.18.9(@babel/core@7.18.9)
|
||||
'@babel/helper-module-transforms': 7.18.9
|
||||
|
@ -216,8 +216,8 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@babel/highlight@7.24.1:
|
||||
resolution: {integrity: sha512-EPmDPxidWe/Ex+HTFINpvXdPHRmgSF3T8hGvzondYjmgzTQ/0EbLpSxyt+w3zzlYSk9cNBQNF9k0dT5Z2NiBjw==}
|
||||
/@babel/highlight@7.24.2:
|
||||
resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/helper-validator-identifier': 7.22.20
|
||||
|
@ -357,7 +357,7 @@ packages:
|
|||
resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.24.1
|
||||
'@babel/code-frame': 7.24.2
|
||||
'@babel/parser': 7.18.9
|
||||
'@babel/types': 7.18.9
|
||||
dev: true
|
||||
|
@ -366,7 +366,7 @@ packages:
|
|||
resolution: {integrity: sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.24.1
|
||||
'@babel/code-frame': 7.24.2
|
||||
'@babel/generator': 7.18.9
|
||||
'@babel/helper-environment-visitor': 7.18.9
|
||||
'@babel/helper-function-name': 7.18.9
|
||||
|
@ -392,13 +392,13 @@ packages:
|
|||
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
||||
dev: true
|
||||
|
||||
/@commitlint/cli@19.2.1(@types/node@20.12.7)(typescript@5.4.5):
|
||||
resolution: {integrity: sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==}
|
||||
/@commitlint/cli@19.3.0(@types/node@20.12.7)(typescript@5.4.5):
|
||||
resolution: {integrity: sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==}
|
||||
engines: {node: '>=v18'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@commitlint/format': 19.0.3
|
||||
'@commitlint/lint': 19.1.0
|
||||
'@commitlint/format': 19.3.0
|
||||
'@commitlint/lint': 19.2.2
|
||||
'@commitlint/load': 19.2.0(@types/node@20.12.7)(typescript@5.4.5)
|
||||
'@commitlint/read': 19.2.1
|
||||
'@commitlint/types': 19.0.3
|
||||
|
@ -409,8 +409,8 @@ packages:
|
|||
- typescript
|
||||
dev: true
|
||||
|
||||
/@commitlint/config-conventional@19.1.0:
|
||||
resolution: {integrity: sha512-KIKD2xrp6Uuk+dcZVj3++MlzIr/Su6zLE8crEDQCZNvWHNQSeeGbzOlNtsR32TUy6H3JbP7nWgduAHCaiGQ6EA==}
|
||||
/@commitlint/config-conventional@19.2.2:
|
||||
resolution: {integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==}
|
||||
engines: {node: '>=v18'}
|
||||
dependencies:
|
||||
'@commitlint/types': 19.0.3
|
||||
|
@ -425,7 +425,7 @@ packages:
|
|||
ajv: 8.12.0
|
||||
dev: true
|
||||
|
||||
/@commitlint/cz-commitlint@19.2.0(@types/node@20.12.7)(commitizen@4.3.0)(inquirer@9.2.17)(typescript@5.4.5):
|
||||
/@commitlint/cz-commitlint@19.2.0(@types/node@20.12.7)(commitizen@4.3.0)(inquirer@9.2.19)(typescript@5.4.5):
|
||||
resolution: {integrity: sha512-kudzHMY9/GxflGyAWMiisiBq2UkyQL1D1eWjGKoC66qQ+5jxRYeDaiVwTdPxYMnmehftNcpksZATDYKqdPP0Wg==}
|
||||
engines: {node: '>=v18'}
|
||||
peerDependencies:
|
||||
|
@ -437,7 +437,7 @@ packages:
|
|||
'@commitlint/types': 19.0.3
|
||||
chalk: 5.3.0
|
||||
commitizen: 4.3.0(@types/node@20.12.7)(typescript@5.4.5)
|
||||
inquirer: 9.2.17
|
||||
inquirer: 9.2.19
|
||||
lodash.isplainobject: 4.0.6
|
||||
word-wrap: 1.2.5
|
||||
transitivePeerDependencies:
|
||||
|
@ -462,27 +462,27 @@ packages:
|
|||
engines: {node: '>=v18'}
|
||||
dev: true
|
||||
|
||||
/@commitlint/format@19.0.3:
|
||||
resolution: {integrity: sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==}
|
||||
/@commitlint/format@19.3.0:
|
||||
resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==}
|
||||
engines: {node: '>=v18'}
|
||||
dependencies:
|
||||
'@commitlint/types': 19.0.3
|
||||
chalk: 5.3.0
|
||||
dev: true
|
||||
|
||||
/@commitlint/is-ignored@19.0.3:
|
||||
resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==}
|
||||
/@commitlint/is-ignored@19.2.2:
|
||||
resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==}
|
||||
engines: {node: '>=v18'}
|
||||
dependencies:
|
||||
'@commitlint/types': 19.0.3
|
||||
semver: 7.6.0
|
||||
dev: true
|
||||
|
||||
/@commitlint/lint@19.1.0:
|
||||
resolution: {integrity: sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==}
|
||||
/@commitlint/lint@19.2.2:
|
||||
resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==}
|
||||
engines: {node: '>=v18'}
|
||||
dependencies:
|
||||
'@commitlint/is-ignored': 19.0.3
|
||||
'@commitlint/is-ignored': 19.2.2
|
||||
'@commitlint/parse': 19.0.3
|
||||
'@commitlint/rules': 19.0.3
|
||||
'@commitlint/types': 19.0.3
|
||||
|
@ -632,6 +632,11 @@ packages:
|
|||
resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
|
||||
dev: true
|
||||
|
||||
/@inquirer/figures@1.0.1:
|
||||
resolution: {integrity: sha512-mtup3wVKia3ZwULPHcbs4Mor8Voi+iIXEWD7wCNbIO6lYR62oPCTQyrddi5OMYVXHzeCSoneZwJuS8sBvlEwDw==}
|
||||
engines: {node: '>=18'}
|
||||
dev: true
|
||||
|
||||
/@istanbuljs/load-nyc-config@1.1.0:
|
||||
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -1080,15 +1085,6 @@ packages:
|
|||
uri-js: 4.4.1
|
||||
dev: true
|
||||
|
||||
/ajv@8.11.0:
|
||||
resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==}
|
||||
dependencies:
|
||||
fast-deep-equal: 3.1.3
|
||||
json-schema-traverse: 1.0.0
|
||||
require-from-string: 2.0.2
|
||||
uri-js: 4.4.1
|
||||
dev: true
|
||||
|
||||
/ajv@8.12.0:
|
||||
resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
|
||||
dependencies:
|
||||
|
@ -1700,16 +1696,6 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/eslint-compat-utils@0.4.1(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
eslint: '>=6.0.0'
|
||||
dependencies:
|
||||
eslint: 8.57.0
|
||||
semver: 7.6.0
|
||||
dev: true
|
||||
|
||||
/eslint-compat-utils@0.5.0(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==}
|
||||
engines: {node: '>=12'}
|
||||
|
@ -1720,19 +1706,19 @@ packages:
|
|||
semver: 7.6.0
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-json-schema-validator@4.8.3(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-F4S6Aw7l/9NzB8E0CAbjiSlXWqDiK3rIiw0I+Jdp+qr/wN1yTg7HkJgeWX4mNnlDMDzydymYy2uuKmNaWUV/hA==}
|
||||
/eslint-plugin-json-schema-validator@5.1.0(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-ZmVyxRIjm58oqe2kTuy90PpmZPrrKvOjRPXKzq8WCgRgAkidCgm5X8domL2KSfadZ3QFAmifMgGTcVNhZ5ez2g==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: '>=6.0.0'
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
|
||||
ajv: 8.11.0
|
||||
ajv: 8.12.0
|
||||
debug: 4.3.4
|
||||
eslint: 8.57.0
|
||||
eslint-compat-utils: 0.4.1(eslint@8.57.0)
|
||||
eslint-compat-utils: 0.5.0(eslint@8.57.0)
|
||||
json-schema-migrate: 2.0.0
|
||||
jsonc-eslint-parser: 2.1.0
|
||||
jsonc-eslint-parser: 2.4.0
|
||||
minimatch: 8.0.4
|
||||
synckit: 0.9.0
|
||||
toml-eslint-parser: 0.9.3
|
||||
|
@ -2319,17 +2305,17 @@ packages:
|
|||
wrap-ansi: 7.0.0
|
||||
dev: true
|
||||
|
||||
/inquirer@9.2.17:
|
||||
resolution: {integrity: sha512-Vr3Ia2ud5sGnioURkE69endl4SkeJcMzTF6SosKcX5GALJfId7C+JvO5ZZb6y1LOXnEofCPbwzoQ1q0e8Gaduw==}
|
||||
/inquirer@9.2.19:
|
||||
resolution: {integrity: sha512-WpxOT71HGsFya6/mj5PUue0sWwbpbiPfAR+332zLj/siB0QA1PZM8v3GepegFV1Op189UxHUCF6y8AySdtOMVA==}
|
||||
engines: {node: '>=18'}
|
||||
dependencies:
|
||||
'@inquirer/figures': 1.0.1
|
||||
'@ljharb/through': 2.3.13
|
||||
ansi-escapes: 4.3.2
|
||||
chalk: 5.3.0
|
||||
cli-cursor: 3.1.0
|
||||
cli-width: 4.1.0
|
||||
external-editor: 3.1.0
|
||||
figures: 3.2.0
|
||||
lodash: 4.17.21
|
||||
mute-stream: 1.0.0
|
||||
ora: 5.4.1
|
||||
|
@ -2661,7 +2647,7 @@ packages:
|
|||
resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.24.1
|
||||
'@babel/code-frame': 7.24.2
|
||||
'@jest/types': 28.1.3
|
||||
'@types/stack-utils': 2.0.1
|
||||
chalk: 4.1.2
|
||||
|
@ -2916,7 +2902,7 @@ packages:
|
|||
/json-schema-migrate@2.0.0:
|
||||
resolution: {integrity: sha512-r38SVTtojDRp4eD6WsCqiE0eNDt4v1WalBXb9cyZYw9ai5cGtBwzRNWjHzJl38w6TxFkXAIA7h+fyX3tnrAFhQ==}
|
||||
dependencies:
|
||||
ajv: 8.11.0
|
||||
ajv: 8.12.0
|
||||
dev: true
|
||||
|
||||
/json-schema-traverse@0.4.1:
|
||||
|
@ -2937,16 +2923,6 @@ packages:
|
|||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/jsonc-eslint-parser@2.1.0:
|
||||
resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dependencies:
|
||||
acorn: 8.11.3
|
||||
eslint-visitor-keys: 3.4.3
|
||||
espree: 9.6.1
|
||||
semver: 7.6.0
|
||||
dev: true
|
||||
|
||||
/jsonc-eslint-parser@2.4.0:
|
||||
resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
@ -3304,7 +3280,7 @@ packages:
|
|||
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.24.1
|
||||
'@babel/code-frame': 7.24.2
|
||||
error-ex: 1.3.2
|
||||
json-parse-even-better-errors: 2.3.1
|
||||
lines-and-columns: 1.2.4
|
||||
|
|
Loading…
Reference in New Issue
Block a user