Merge branch 'master' into app/whisparr
This commit is contained in:
commit
4bee6932ea
|
@ -34,6 +34,7 @@ This is the official repository for the Tipi App Store. It contains all the apps
|
|||
- [Freshrss](https://github.com/FreshRSS/FreshRSS) - A free, self-hostable RSS aggregator
|
||||
- [gandi-livedns](https://github.com/jbbodart/gandi-livedns) - Update your Gandi DNS zone records with your WAN IP
|
||||
- [Ghost](https://github.com/TryGhost/Ghost) - Ghost - Turn your audience into a business
|
||||
- [Ghostfolio](https://github.com/ghostfolio/ghostfolio) - Open Source Wealth Management Software.
|
||||
- [Gitea](https://github.com/go-gitea/gitea) - Gitea - A painless self-hosted Git service
|
||||
- [Gladys Assistant](https://github.com/gladysassistant/gladys) - A privacy-first, open-source home assistant
|
||||
- [Gotify](https://github.com/gotify/server) - Gotify - Simple server for sending and receiving notification messages
|
||||
|
@ -120,6 +121,8 @@ This is the official repository for the Tipi App Store. It contains all the apps
|
|||
- [Sshwifty](https://github.com/nirui/sshwifty/) - Web SSH & Telnet (WebSSH & WebTelnet client)
|
||||
- [Syncthing](https://github.com/syncthing/syncthing) - Continuous File Synchronization
|
||||
- [Tailscale](https://github.com/tailscale/tailscale) - The easiest, most secure way to use WireGuard and 2FA
|
||||
- [Tandoor](https://github.com/TandoorRecipes/recipes) - Drop your collection of links and notes. Get Tandoor and never look back onto a time without recipe management, storage, sharing and collaborative cooking!
|
||||
- [Tasks.md](https://github.com/BaldissaraMatheus/Tasks.md) - A self-hosted, file based task management board that supports Markdown syntax
|
||||
- [Tautulli](https://github.com/Tautulli/Tautulli) - A Python based monitoring and tracking tool for Plex Media Server
|
||||
- [Teddit](https://codeberg.org/teddit/teddit) - Alternative Reddit front-end focused on privacy https://teddit.net
|
||||
- [Transmission](https://github.com/transmission/transmission) - Fast, easy, and free BitTorrent client
|
||||
|
|
45
apps/ghostfolio/config.json
Normal file
45
apps/ghostfolio/config.json
Normal file
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Ghostfolio",
|
||||
"port": 3333,
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "ghostfolio",
|
||||
"tipi_version": 1,
|
||||
"version": "1.300.0",
|
||||
"categories": ["finance"],
|
||||
"description": "Ghostfolio is a privacy-first, open source dashboard for your personal finances.",
|
||||
"short_desc": "Open Source Wealth Management Software.",
|
||||
"author": "dtslvr",
|
||||
"source": "https://github.com/ghostfolio/ghostfolio",
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "random",
|
||||
"min": 32,
|
||||
"max": 32,
|
||||
"label": "Access token salt",
|
||||
"env_variable": "GHOSTFOLIO_ACCESS_TOKEN_SALT"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"min": 32,
|
||||
"max": 32,
|
||||
"label": "JSON Web Tokens secret key",
|
||||
"env_variable": "GHOSTFOLIO_JWT_SECRET_KEY"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"min": 32,
|
||||
"max": 32,
|
||||
"label": "Database password",
|
||||
"env_variable": "GHOSTFOLIO_DB_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"min": 32,
|
||||
"max": 32,
|
||||
"label": "Redis password",
|
||||
"env_variable": "GHOSTFOLIO_REDIS_PASSWORD"
|
||||
}
|
||||
]
|
||||
}
|
90
apps/ghostfolio/docker-compose.yml
Normal file
90
apps/ghostfolio/docker-compose.yml
Normal file
|
@ -0,0 +1,90 @@
|
|||
version: "3.9"
|
||||
|
||||
services:
|
||||
ghostfolio:
|
||||
container_name: ghostfolio
|
||||
image: ghostfolio/ghostfolio:1.300.0
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- ${APP_PORT}:3333
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
HOST: 0.0.0.0
|
||||
PORT: 3333
|
||||
ACCESS_TOKEN_SALT: $GHOSTFOLIO_ACCESS_TOKEN_SALT
|
||||
DATABASE_URL: postgresql://ghostfolio:${GHOSTFOLIO_DB_PASSWORD}@ghostfolio-db:5432/ghostfolio?sslmode=prefer
|
||||
JWT_SECRET_KEY: ${GHOSTFOLIO_JWT_SECRET_KEY}
|
||||
POSTGRES_DB: ghostfolio
|
||||
POSTGRES_USER: ghostfolio
|
||||
POSTGRES_PASSWORD: ${GHOSTFOLIO_DB_PASSWORD}
|
||||
REDIS_HOST: ghostfolio-redis
|
||||
REDIS_PASSWORD: ${GHOSTFOLIO_REDIS_PASSWORD}
|
||||
REDIS_PORT: 6379
|
||||
networks:
|
||||
- tipi_main_network
|
||||
depends_on:
|
||||
ghostfolio-db:
|
||||
condition: service_healthy
|
||||
ghostfolio-redis:
|
||||
condition: service_healthy
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.ghostfolio-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.ghostfolio.loadbalancer.server.port: 3333
|
||||
# Web
|
||||
traefik.http.routers.ghostfolio-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.ghostfolio-insecure.entrypoints: web
|
||||
traefik.http.routers.ghostfolio-insecure.service: ghostfolio
|
||||
traefik.http.routers.ghostfolio-insecure.middlewares: ghostfolio-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.ghostfolio.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.ghostfolio.entrypoints: websecure
|
||||
traefik.http.routers.ghostfolio.service: ghostfolio
|
||||
traefik.http.routers.ghostfolio.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.ghostfolio-local-insecure.rule: Host(`ghostfolio.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.ghostfolio-local-insecure.entrypoints: web
|
||||
traefik.http.routers.ghostfolio-local-insecure.service: ghostfolio
|
||||
traefik.http.routers.ghostfolio-local-insecure.middlewares: ghostfolio-web-redirect
|
||||
# Local domain secure
|
||||
traefik.http.routers.ghostfolio-local.rule: Host(`ghostfolio.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.ghostfolio-local.entrypoints: websecure
|
||||
traefik.http.routers.ghostfolio-local.service: ghostfolio
|
||||
traefik.http.routers.ghostfolio-local.tls: true
|
||||
|
||||
ghostfolio-db:
|
||||
container_name: ghostfolio-db
|
||||
image: postgres:15.4-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: ghostfolio
|
||||
POSTGRES_USER: ghostfolio
|
||||
POSTGRES_PASSWORD: ${GHOSTFOLIO_DB_PASSWORD}
|
||||
PGDATA: /var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "-d", "ghostfolio"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
ghostfolio-redis:
|
||||
container_name: ghostfolio-redis
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
command: >
|
||||
--requirepass ${GHOSTFOLIO_REDIS_PASSWORD}
|
||||
healthcheck:
|
||||
test: ['CMD', 'redis-cli', 'ping']
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/redis:/data
|
||||
networks:
|
||||
- tipi_main_network
|
27
apps/ghostfolio/metadata/description.md
Normal file
27
apps/ghostfolio/metadata/description.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
**Ghostfolio** is an open source wealth management software built with web technology. The application empowers busy people to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. The software is designed for personal use in continuous operation.
|
||||
|
||||
## Why Ghostfolio?
|
||||
|
||||
Ghostfolio is for you if you are...
|
||||
|
||||
- 💼 trading stocks, ETFs or cryptocurrencies on multiple platforms
|
||||
- 🏦 pursuing a buy & hold strategy
|
||||
- 🎯 interested in getting insights of your portfolio composition
|
||||
- 👻 valuing privacy and data ownership
|
||||
- 🧘 into minimalism
|
||||
- 🧺 caring about diversifying your financial resources
|
||||
- 🆓 interested in financial independence
|
||||
- 🙅 saying no to spreadsheets
|
||||
- 😎 still reading this list
|
||||
|
||||
## Features
|
||||
|
||||
- ✅ Create, update and delete transactions
|
||||
- ✅ Multi account management
|
||||
- ✅ Portfolio performance for `Today`, `YTD`, `1Y`, `5Y`, `Max`
|
||||
- ✅ Various charts
|
||||
- ✅ Static analysis to identify potential risks in your portfolio
|
||||
- ✅ Import and export transactions
|
||||
- ✅ Dark Mode
|
||||
- ✅ Zen Mode
|
||||
- ✅ Progressive Web App (PWA) with a mobile-first design
|
BIN
apps/ghostfolio/metadata/logo.jpg
Normal file
BIN
apps/ghostfolio/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
|
@ -6,10 +6,10 @@
|
|||
"exposable": true,
|
||||
"force_expose": true,
|
||||
"id": "gotosocial",
|
||||
"tipi_version": 6,
|
||||
"tipi_version": 7,
|
||||
"uid": 1000,
|
||||
"gid": 1000,
|
||||
"version": "0.10.0",
|
||||
"version": "0.11.0",
|
||||
"categories": [
|
||||
"social"
|
||||
],
|
||||
|
|
|
@ -3,7 +3,7 @@ version: "3"
|
|||
services:
|
||||
gotosocial:
|
||||
container_name: gotosocial
|
||||
image: superseriousbusiness/gotosocial:0.10.0
|
||||
image: superseriousbusiness/gotosocial:0.11.0
|
||||
user: 1000:1000
|
||||
ports:
|
||||
- ${APP_PORT}:8080
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 8102,
|
||||
"id": "homarr",
|
||||
"tipi_version": 15,
|
||||
"version": "0.13.1",
|
||||
"tipi_version": 16,
|
||||
"version": "0.13.2",
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
services:
|
||||
homarr:
|
||||
container_name: homarr
|
||||
image: ghcr.io/ajnart/homarr:0.13.1
|
||||
image: ghcr.io/ajnart/homarr:0.13.2
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/app/data/configs
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 8128,
|
||||
"id": "immich",
|
||||
"tipi_version": 33,
|
||||
"version": "1.72.2",
|
||||
"tipi_version": 34,
|
||||
"version": "1.73.0",
|
||||
"categories": [
|
||||
"data",
|
||||
"photography"
|
||||
|
|
|
@ -3,7 +3,7 @@ version: "3.7"
|
|||
services:
|
||||
immich:
|
||||
container_name: immich
|
||||
image: altran1502/immich-proxy:v1.72.2
|
||||
image: altran1502/immich-proxy:v1.73.0
|
||||
ports:
|
||||
- ${APP_PORT}:8080
|
||||
depends_on:
|
||||
|
@ -43,7 +43,7 @@ services:
|
|||
|
||||
immich-server:
|
||||
container_name: immich-server
|
||||
image: altran1502/immich-server:v1.72.2
|
||||
image: altran1502/immich-server:v1.73.0
|
||||
command: ["start-server.sh"]
|
||||
volumes:
|
||||
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
||||
|
@ -68,7 +68,7 @@ services:
|
|||
|
||||
immich-microservices:
|
||||
container_name: immich-microservices
|
||||
image: altran1502/immich-server:v1.72.2
|
||||
image: altran1502/immich-server:v1.73.0
|
||||
command: ["start-microservices.sh"]
|
||||
volumes:
|
||||
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
||||
|
@ -93,7 +93,7 @@ services:
|
|||
|
||||
immich-machine-learning:
|
||||
container_name: immich-machine-learning
|
||||
image: altran1502/immich-machine-learning:v1.72.2
|
||||
image: altran1502/immich-machine-learning:v1.73.0
|
||||
volumes:
|
||||
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
||||
- ${APP_DATA_DIR}/data/immich-ml-cache:/cache
|
||||
|
@ -114,7 +114,7 @@ services:
|
|||
|
||||
immich-web:
|
||||
container_name: immich-web
|
||||
image: altran1502/immich-web:v1.72.2
|
||||
image: altran1502/immich-web:v1.73.0
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
@ -142,7 +142,7 @@ services:
|
|||
|
||||
immich-typesense:
|
||||
container_name: immich-typesense
|
||||
image: typesense/typesense:0.24.0
|
||||
image: typesense/typesense:0.25.0
|
||||
environment:
|
||||
- TYPESENSE_API_KEY=${IMMICH_TYPESENSE_API_KEY}
|
||||
- TYPESENSE_DATA_DIR=/data
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 8097,
|
||||
"id": "jackett",
|
||||
"tipi_version": 67,
|
||||
"version": "0.21.635",
|
||||
"tipi_version": 70,
|
||||
"version": "0.21.648",
|
||||
"description": "Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar3, Lidarr, DuckieTV, qBittorrent, Nefarious etc.) into tracker-site-specific http queries, parses the html or json response, and then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches.",
|
||||
"short_desc": "API Support for your favorite torrent trackers ",
|
||||
"categories": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
jackett:
|
||||
image: lscr.io/linuxserver/jackett:0.21.635
|
||||
image: lscr.io/linuxserver/jackett:0.21.648
|
||||
container_name: jackett
|
||||
environment:
|
||||
- PUID=1000
|
||||
|
|
|
@ -7,11 +7,9 @@
|
|||
"force_expose": true,
|
||||
"no_gui": true,
|
||||
"id": "matrix-conduit",
|
||||
"tipi_version": 3,
|
||||
"tipi_version": 4,
|
||||
"version": "0.6.0",
|
||||
"categories": [
|
||||
"social"
|
||||
],
|
||||
"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",
|
||||
|
@ -32,9 +30,10 @@
|
|||
"env_variable": "ALLOW_FEDERATION"
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"type": "text",
|
||||
"label": "Trusted Servers",
|
||||
"hint": "[\"matrix.org\"]",
|
||||
"hint": "List of domain names",
|
||||
"placeholder": "[\"matrix.org\"]",
|
||||
"regex": "^\\[((\"[^\"]*\")(, ?(\"[^\"]*\"))*)?\\]$",
|
||||
"pattern_error": "Must be in list of domain names format",
|
||||
"required": false,
|
||||
|
@ -51,9 +50,23 @@
|
|||
"type": "text",
|
||||
"label": "Loggin Level",
|
||||
"hint": "Available levels: error, warn, info, debug, trace",
|
||||
"placeholder": "-warn,rocket=off,_=off,sled=off",
|
||||
"placeholder": "warn,rocket=off,_=off,sled=off",
|
||||
"required": false,
|
||||
"env_variable": "LOG"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "TURN URIs",
|
||||
"hint": "List of TURN server URIs turn:/turns:",
|
||||
"placeholder": "[\"turn:<your server domain>?transport=udp\", \"turn:<your server domain>?transport=tcp\"]",
|
||||
"required": false,
|
||||
"env_variable": "TURN_URIS"
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"label": "TURN Secret",
|
||||
"required": false,
|
||||
"env_variable": "TURN_SECRET"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -8,13 +8,16 @@ services:
|
|||
CONDUIT_SERVER_NAME: ${APP_DOMAIN}
|
||||
CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/
|
||||
CONDUIT_DATABASE_BACKEND: rocksdb
|
||||
CONDUIT_ADDRESS: 0.0.0.0
|
||||
CONDUIT_PORT: 6167
|
||||
CONDUIT_LOG: ${LOG:-warn,rocket=off,_=off,sled=off}
|
||||
CONDUIT_MAX_REQUEST_SIZE: ${MAX_REQUEST_SIZE:-20000000}
|
||||
CONDUIT_ALLOW_REGISTRATION: ${ALLOW_REGISTRATION:-false}
|
||||
CONDUIT_ALLOW_FEDERATION: ${ALLOW_FEDERATION:-false}
|
||||
CONDUIT_TRUSTED_SERVERS: ${TRUSTED_SERVERS:-[]}
|
||||
CONDUIT_LOG: ${LOG:-warn,rocket=off,_=off,sled=off}
|
||||
CONDUIT_ADDRESS: 0.0.0.0
|
||||
CONDUIT_ALLOW_CHECK_FOR_UPDATES: false
|
||||
CONDUIT_TURN_URIS: ${TURN_URIS:-["turn:localhost?transport=udp", "turn:localhost?transport=tcp"]}
|
||||
CONDUIT_TURN_SECRET: ${TURN_SECRET:-turnsecret}
|
||||
CONDUIT_CONFIG: "" # Ignore this
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
|
@ -68,12 +71,12 @@ services:
|
|||
traefik.http.routers.matrix-well-knows-insecure.service: matrix-well-knows
|
||||
traefik.http.routers.matrix-well-knows-insecure.middlewares: matrix-well-knows-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.matrix-well-knows.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.matrix-well-knows.rule: Host(`${APP_DOMAIN}`) && PathPrefix(`/.well-known/matrix`)
|
||||
traefik.http.routers.matrix-well-knows.entrypoints: websecure
|
||||
traefik.http.routers.matrix-well-knows.service: matrix-well-knows
|
||||
traefik.http.routers.matrix-well-knows.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.matrix-well-knows-local-insecure.rule: Host(`matrix-well-knows.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.matrix-well-knows-local-insecure.rule: Host(`matrix-well-knows.${LOCAL_DOMAIN}`) && PathPrefix(`/.well-known/matrix`)
|
||||
traefik.http.routers.matrix-well-knows-local-insecure.entrypoints: web
|
||||
traefik.http.routers.matrix-well-knows-local-insecure.service: matrix-well-knows
|
||||
traefik.http.routers.matrix-well-knows-local-insecure.middlewares: matrix-well-knows-web-redirect
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 5230,
|
||||
"id": "memos",
|
||||
"tipi_version": 12,
|
||||
"version": "0.14.3",
|
||||
"tipi_version": 13,
|
||||
"version": "0.14.4",
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
memos:
|
||||
image: neosmemo/memos:0.14.3
|
||||
image: neosmemo/memos:0.14.4
|
||||
container_name: memos
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/memos:/var/opt/memos
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "mixpost",
|
||||
"tipi_version": 6,
|
||||
"version": "1.3.1",
|
||||
"tipi_version": 7,
|
||||
"version": "1.3.2",
|
||||
"categories": [
|
||||
"social"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
|
||||
services:
|
||||
mixpost:
|
||||
image: inovector/mixpost:v1.3.1
|
||||
image: inovector/mixpost:v1.3.2
|
||||
container_name: mixpost
|
||||
environment:
|
||||
- APP_NAME='Mixpost'
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "nocodb",
|
||||
"tipi_version": 17,
|
||||
"version": "0.109.6",
|
||||
"tipi_version": 18,
|
||||
"version": "0.109.7",
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
|
|
|
@ -11,7 +11,7 @@ services:
|
|||
- NC_PUBLIC_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}
|
||||
- NC_AUTH_JWT_SECRET=${NOCODB_JWT_SECRET}
|
||||
- NC_REDIS_URL=redis://default:${NOCODB_REDIS_PASSWORD}@nocodb-redis:6379
|
||||
image: "nocodb/nocodb:0.109.6"
|
||||
image: "nocodb/nocodb:0.109.7"
|
||||
ports:
|
||||
- "${APP_PORT}:8080"
|
||||
restart: always
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "onedev",
|
||||
"tipi_version": 45,
|
||||
"version": "8.6.11",
|
||||
"tipi_version": 46,
|
||||
"version": "8.6.12",
|
||||
"categories": [
|
||||
"development"
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
|
||||
services:
|
||||
onedev:
|
||||
image: 1dev/server:8.6.11
|
||||
image: 1dev/server:8.6.12
|
||||
container_name: onedev
|
||||
environment:
|
||||
- hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "planka",
|
||||
"tipi_version": 1,
|
||||
"tipi_version": 2,
|
||||
"version": "1.12.0",
|
||||
"categories": ["development"],
|
||||
"description": "The realtime kanban board for workgroups built with React and Redux.",
|
||||
|
|
|
@ -20,17 +20,17 @@ services:
|
|||
ports:
|
||||
- ${APP_PORT}:1337
|
||||
environment:
|
||||
BASE_URL: ${APP_PROTOCOL:-http}://${APP_DOMAIN}
|
||||
TRUST_PROXY: 1
|
||||
DATABASE_URL: "postgresql://postgres@postgres/planka"
|
||||
SECRET_KEY: "${PLANKA_SECRET_KEY}"
|
||||
- BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}
|
||||
- TRUST_PROXY=1
|
||||
- DATABASE_URL="postgresql://postgres@postgres/planka"
|
||||
- SECRET_KEY="${PLANKA_SECRET_KEY}"
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.planka-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.planka.loadbalancer.server.port: 8016
|
||||
traefik.http.services.planka.loadbalancer.server.port: 1337
|
||||
# Web
|
||||
traefik.http.routers.planka-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.planka-insecure.entrypoints: web
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 8088,
|
||||
"id": "radarr",
|
||||
"tipi_version": 8,
|
||||
"version": "4.6.4",
|
||||
"tipi_version": 9,
|
||||
"version": "4.7.5",
|
||||
"categories": [
|
||||
"media",
|
||||
"utilities"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
radarr:
|
||||
image: lscr.io/linuxserver/radarr:4.6.4
|
||||
image: lscr.io/linuxserver/radarr:4.7.5
|
||||
container_name: radarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
|
|
|
@ -5,11 +5,9 @@
|
|||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "sshwifty",
|
||||
"tipi_version": 2,
|
||||
"tipi_version": 3,
|
||||
"version": "0.3.0-beta-release",
|
||||
"categories": [
|
||||
"development"
|
||||
],
|
||||
"categories": ["development"],
|
||||
"description": "Sshwifty is a SSH and Telnet connector made for the Web. It can be deployed on your computer or server to provide SSH and Telnet access interface for any compatible (standard) web browser.",
|
||||
"short_desc": "Web SSH & Telnet (WebSSH & WebTelnet client)",
|
||||
"author": "Nirui",
|
||||
|
|
|
@ -13,7 +13,7 @@ services:
|
|||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.sshwifty-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.sshwifty.loadbalancer.server.port: 8273
|
||||
traefik.http.services.sshwifty.loadbalancer.server.port: 8182
|
||||
# Web
|
||||
traefik.http.routers.sshwifty-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.sshwifty-insecure.entrypoints: web
|
||||
|
|
32
apps/tandoor/config.json
Normal file
32
apps/tandoor/config.json
Normal file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Tandoor",
|
||||
"port": 8341,
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "tandoor",
|
||||
"tipi_version": 2,
|
||||
"version": "1.5.5",
|
||||
"categories": [
|
||||
"data"
|
||||
],
|
||||
"description": "Drop your collection of links and notes. Get Tandoor and never look back onto a time without recipe management, storage, sharing and collaborative cooking!",
|
||||
"short_desc": "Recipe collection manager.",
|
||||
"author": "Tandoor Recipes",
|
||||
"source": "https://github.com/TandoorRecipes/recipes",
|
||||
"website": "https://tandoor.dev/",
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Tandoor Secret Key",
|
||||
"min": 32,
|
||||
"env_variable": "TANDOOR_SECRET_KEY"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Postgress Password",
|
||||
"min": 32,
|
||||
"env_variable": "TANDOOR_POSTGRESS_PASSWORD"
|
||||
}
|
||||
]
|
||||
}
|
75
apps/tandoor/docker-compose.yml
Normal file
75
apps/tandoor/docker-compose.yml
Normal file
|
@ -0,0 +1,75 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
tandoor:
|
||||
container_name: tandoor
|
||||
image: ghcr.io/tandoorrecipes/recipes:1.5.5
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/staticfiles:/opt/recipes/staticfiles
|
||||
- ${APP_DATA_DIR}/data/mediafiles:/opt/recipes/mediafiles
|
||||
ports:
|
||||
- ${APP_PORT}:8080
|
||||
environment:
|
||||
- SECRET_KEY=${TANDOOR_SECRET_KEY}
|
||||
- DB_ENGINE=django.db.backends.postgresql
|
||||
- POSTGRES_HOST=tandoor-db
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_USER=tandoor
|
||||
- POSTGRES_PASSWORD=${TANDOOR_POSTGRESS_PASSWORD}
|
||||
- POSTGRES_DB=tandoordb
|
||||
networks:
|
||||
- tipi_main_network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: wget --no-verbose --tries=1 --spider http://localhost:8080
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.tandoor-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.tandoor.loadbalancer.server.port: 8080
|
||||
# Web
|
||||
traefik.http.routers.tandoor-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.tandoor-insecure.entrypoints: web
|
||||
traefik.http.routers.tandoor-insecure.service: tandoor
|
||||
traefik.http.routers.tandoor-insecure.middlewares: tandoor-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.tandoor.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.tandoor.entrypoints: websecure
|
||||
traefik.http.routers.tandoor.service: tandoor
|
||||
traefik.http.routers.tandoor.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.tandoor-local-insecure.rule: Host(`tandoor.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.tandoor-local-insecure.entrypoints: web
|
||||
traefik.http.routers.tandoor-local-insecure.service: tandoor
|
||||
traefik.http.routers.tandoor-local-insecure.middlewares: tandoor-web-redirect
|
||||
# Local domain secure
|
||||
traefik.http.routers.tandoor-local.rule: Host(`tandoor.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.tandoor-local.entrypoints: websecure
|
||||
traefik.http.routers.tandoor-local.service: tandoor
|
||||
traefik.http.routers.tandoor-local.tls: true
|
||||
depends_on:
|
||||
tandoor-db:
|
||||
condition: service_healthy
|
||||
|
||||
tandoor-db:
|
||||
image: postgres:15-alpine
|
||||
container_name: tandoor-db
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/postgresql:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_USER=tandoor
|
||||
- POSTGRES_PASSWORD=${TANDOOR_POSTGRESS_PASSWORD}
|
||||
- POSTGRES_DB=tandoordb
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready", "-d", "tandoor"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
36
apps/tandoor/metadata/description.md
Normal file
36
apps/tandoor/metadata/description.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
# Tandoor Recipes
|
||||
|
||||
The recipe manager that allows you to manage your ever growing collection of digital recipes.
|
||||
|
||||
## Core Features
|
||||
- 🥗 **Manage your recipes** - Manage your ever growing recipe collection
|
||||
- 📆 **Plan** - multiple meals for each day
|
||||
- 🛒 **Shopping lists** - via the meal plan or straight from recipes
|
||||
- 📚 **Cookbooks** - collect recipes into books
|
||||
- 👪 **Share and collaborate** on recipes with friends and family
|
||||
|
||||
## Made by and for power users
|
||||
|
||||
- 🔍 Powerful & customizable **search** with fulltext support and [TrigramSimilarity](https://docs.djangoproject.com/en/3.0/ref/contrib/postgres/search/#trigram-similarity)
|
||||
- 🏷️ Create and search for **tags**, assign them in batch to all files matching certain filters
|
||||
- ↔️ Quickly merge and rename ingredients, tags and units
|
||||
- 📥️ **Import recipes** from thousands of websites supporting [ld+json or microdata](https://schema.org/Recipe)
|
||||
- ➗ Support for **fractions** or decimals
|
||||
- 🐳 Easy setup with **Docker** and included examples for **Kubernetes**, **Unraid** and **Synology**
|
||||
- 🎨 Customize your interface with **themes**
|
||||
- 📦 **Sync** files with Dropbox and Nextcloud
|
||||
|
||||
## All the must haves
|
||||
|
||||
- 📱Optimized for use on **mobile** devices
|
||||
- 🌍 localized in many languages thanks to the awesome community
|
||||
- 📥️ **Import your collection** from many other [recipe managers](https://docs.tandoor.dev/features/import_export/)
|
||||
- ➕ Many more like recipe scaling, image compression, printing views and supermarkets
|
||||
|
||||
This application is meant for people with a collection of recipes they want to share with family and friends or simply
|
||||
store them in a nicely organized way. A basic permission system exists but this application is not meant to be run as
|
||||
a public page.
|
||||
|
||||
## Docs
|
||||
|
||||
Documentation can be found [here](https://docs.tandoor.dev/).
|
BIN
apps/tandoor/metadata/logo.jpg
Normal file
BIN
apps/tandoor/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
Loading…
Reference in New Issue
Block a user