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
|
- [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
|
- [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
|
- [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
|
- [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
|
- [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
|
- [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)
|
- [Sshwifty](https://github.com/nirui/sshwifty/) - Web SSH & Telnet (WebSSH & WebTelnet client)
|
||||||
- [Syncthing](https://github.com/syncthing/syncthing) - Continuous File Synchronization
|
- [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
|
- [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
|
- [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
|
- [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
|
- [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,
|
"exposable": true,
|
||||||
"force_expose": true,
|
"force_expose": true,
|
||||||
"id": "gotosocial",
|
"id": "gotosocial",
|
||||||
"tipi_version": 6,
|
"tipi_version": 7,
|
||||||
"uid": 1000,
|
"uid": 1000,
|
||||||
"gid": 1000,
|
"gid": 1000,
|
||||||
"version": "0.10.0",
|
"version": "0.11.0",
|
||||||
"categories": [
|
"categories": [
|
||||||
"social"
|
"social"
|
||||||
],
|
],
|
||||||
|
|
|
@ -3,7 +3,7 @@ version: "3"
|
||||||
services:
|
services:
|
||||||
gotosocial:
|
gotosocial:
|
||||||
container_name: gotosocial
|
container_name: gotosocial
|
||||||
image: superseriousbusiness/gotosocial:0.10.0
|
image: superseriousbusiness/gotosocial:0.11.0
|
||||||
user: 1000:1000
|
user: 1000:1000
|
||||||
ports:
|
ports:
|
||||||
- ${APP_PORT}:8080
|
- ${APP_PORT}:8080
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"port": 8102,
|
"port": 8102,
|
||||||
"id": "homarr",
|
"id": "homarr",
|
||||||
"tipi_version": 15,
|
"tipi_version": 16,
|
||||||
"version": "0.13.1",
|
"version": "0.13.2",
|
||||||
"categories": [
|
"categories": [
|
||||||
"utilities"
|
"utilities"
|
||||||
],
|
],
|
||||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
||||||
services:
|
services:
|
||||||
homarr:
|
homarr:
|
||||||
container_name: homarr
|
container_name: homarr
|
||||||
image: ghcr.io/ajnart/homarr:0.13.1
|
image: ghcr.io/ajnart/homarr:0.13.2
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ${APP_DATA_DIR}/data/config:/app/data/configs
|
- ${APP_DATA_DIR}/data/config:/app/data/configs
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"port": 8128,
|
"port": 8128,
|
||||||
"id": "immich",
|
"id": "immich",
|
||||||
"tipi_version": 33,
|
"tipi_version": 34,
|
||||||
"version": "1.72.2",
|
"version": "1.73.0",
|
||||||
"categories": [
|
"categories": [
|
||||||
"data",
|
"data",
|
||||||
"photography"
|
"photography"
|
||||||
|
|
|
@ -3,7 +3,7 @@ version: "3.7"
|
||||||
services:
|
services:
|
||||||
immich:
|
immich:
|
||||||
container_name: immich
|
container_name: immich
|
||||||
image: altran1502/immich-proxy:v1.72.2
|
image: altran1502/immich-proxy:v1.73.0
|
||||||
ports:
|
ports:
|
||||||
- ${APP_PORT}:8080
|
- ${APP_PORT}:8080
|
||||||
depends_on:
|
depends_on:
|
||||||
|
@ -43,7 +43,7 @@ services:
|
||||||
|
|
||||||
immich-server:
|
immich-server:
|
||||||
container_name: immich-server
|
container_name: immich-server
|
||||||
image: altran1502/immich-server:v1.72.2
|
image: altran1502/immich-server:v1.73.0
|
||||||
command: ["start-server.sh"]
|
command: ["start-server.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
||||||
|
@ -68,7 +68,7 @@ services:
|
||||||
|
|
||||||
immich-microservices:
|
immich-microservices:
|
||||||
container_name: immich-microservices
|
container_name: immich-microservices
|
||||||
image: altran1502/immich-server:v1.72.2
|
image: altran1502/immich-server:v1.73.0
|
||||||
command: ["start-microservices.sh"]
|
command: ["start-microservices.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
||||||
|
@ -93,7 +93,7 @@ services:
|
||||||
|
|
||||||
immich-machine-learning:
|
immich-machine-learning:
|
||||||
container_name: 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:
|
volumes:
|
||||||
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
- ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload
|
||||||
- ${APP_DATA_DIR}/data/immich-ml-cache:/cache
|
- ${APP_DATA_DIR}/data/immich-ml-cache:/cache
|
||||||
|
@ -114,7 +114,7 @@ services:
|
||||||
|
|
||||||
immich-web:
|
immich-web:
|
||||||
container_name: immich-web
|
container_name: immich-web
|
||||||
image: altran1502/immich-web:v1.72.2
|
image: altran1502/immich-web:v1.73.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- tipi_main_network
|
- tipi_main_network
|
||||||
|
@ -142,7 +142,7 @@ services:
|
||||||
|
|
||||||
immich-typesense:
|
immich-typesense:
|
||||||
container_name: immich-typesense
|
container_name: immich-typesense
|
||||||
image: typesense/typesense:0.24.0
|
image: typesense/typesense:0.25.0
|
||||||
environment:
|
environment:
|
||||||
- TYPESENSE_API_KEY=${IMMICH_TYPESENSE_API_KEY}
|
- TYPESENSE_API_KEY=${IMMICH_TYPESENSE_API_KEY}
|
||||||
- TYPESENSE_DATA_DIR=/data
|
- TYPESENSE_DATA_DIR=/data
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"port": 8097,
|
"port": 8097,
|
||||||
"id": "jackett",
|
"id": "jackett",
|
||||||
"tipi_version": 67,
|
"tipi_version": 70,
|
||||||
"version": "0.21.635",
|
"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.",
|
"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 ",
|
"short_desc": "API Support for your favorite torrent trackers ",
|
||||||
"categories": [
|
"categories": [
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
version: "3.7"
|
version: "3.7"
|
||||||
services:
|
services:
|
||||||
jackett:
|
jackett:
|
||||||
image: lscr.io/linuxserver/jackett:0.21.635
|
image: lscr.io/linuxserver/jackett:0.21.648
|
||||||
container_name: jackett
|
container_name: jackett
|
||||||
environment:
|
environment:
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
|
|
|
@ -7,11 +7,9 @@
|
||||||
"force_expose": true,
|
"force_expose": true,
|
||||||
"no_gui": true,
|
"no_gui": true,
|
||||||
"id": "matrix-conduit",
|
"id": "matrix-conduit",
|
||||||
"tipi_version": 3,
|
"tipi_version": 4,
|
||||||
"version": "0.6.0",
|
"version": "0.6.0",
|
||||||
"categories": [
|
"categories": ["social"],
|
||||||
"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.",
|
"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",
|
"short_desc": "Conduit is a simple, fast and reliable chat server written in Rust",
|
||||||
"author": "Timo Kösters",
|
"author": "Timo Kösters",
|
||||||
|
@ -32,9 +30,10 @@
|
||||||
"env_variable": "ALLOW_FEDERATION"
|
"env_variable": "ALLOW_FEDERATION"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "array",
|
"type": "text",
|
||||||
"label": "Trusted Servers",
|
"label": "Trusted Servers",
|
||||||
"hint": "[\"matrix.org\"]",
|
"hint": "List of domain names",
|
||||||
|
"placeholder": "[\"matrix.org\"]",
|
||||||
"regex": "^\\[((\"[^\"]*\")(, ?(\"[^\"]*\"))*)?\\]$",
|
"regex": "^\\[((\"[^\"]*\")(, ?(\"[^\"]*\"))*)?\\]$",
|
||||||
"pattern_error": "Must be in list of domain names format",
|
"pattern_error": "Must be in list of domain names format",
|
||||||
"required": false,
|
"required": false,
|
||||||
|
@ -51,9 +50,23 @@
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"label": "Loggin Level",
|
"label": "Loggin Level",
|
||||||
"hint": "Available levels: error, warn, info, debug, trace",
|
"hint": "Available levels: error, warn, info, debug, trace",
|
||||||
"placeholder": "-warn,rocket=off,_=off,sled=off",
|
"placeholder": "warn,rocket=off,_=off,sled=off",
|
||||||
"required": false,
|
"required": false,
|
||||||
"env_variable": "LOG"
|
"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_SERVER_NAME: ${APP_DOMAIN}
|
||||||
CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/
|
CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/
|
||||||
CONDUIT_DATABASE_BACKEND: rocksdb
|
CONDUIT_DATABASE_BACKEND: rocksdb
|
||||||
|
CONDUIT_ADDRESS: 0.0.0.0
|
||||||
CONDUIT_PORT: 6167
|
CONDUIT_PORT: 6167
|
||||||
|
CONDUIT_LOG: ${LOG:-warn,rocket=off,_=off,sled=off}
|
||||||
CONDUIT_MAX_REQUEST_SIZE: ${MAX_REQUEST_SIZE:-20000000}
|
CONDUIT_MAX_REQUEST_SIZE: ${MAX_REQUEST_SIZE:-20000000}
|
||||||
CONDUIT_ALLOW_REGISTRATION: ${ALLOW_REGISTRATION:-false}
|
CONDUIT_ALLOW_REGISTRATION: ${ALLOW_REGISTRATION:-false}
|
||||||
CONDUIT_ALLOW_FEDERATION: ${ALLOW_FEDERATION:-false}
|
CONDUIT_ALLOW_FEDERATION: ${ALLOW_FEDERATION:-false}
|
||||||
CONDUIT_TRUSTED_SERVERS: ${TRUSTED_SERVERS:-[]}
|
CONDUIT_TRUSTED_SERVERS: ${TRUSTED_SERVERS:-[]}
|
||||||
CONDUIT_LOG: ${LOG:-warn,rocket=off,_=off,sled=off}
|
CONDUIT_ALLOW_CHECK_FOR_UPDATES: false
|
||||||
CONDUIT_ADDRESS: 0.0.0.0
|
CONDUIT_TURN_URIS: ${TURN_URIS:-["turn:localhost?transport=udp", "turn:localhost?transport=tcp"]}
|
||||||
|
CONDUIT_TURN_SECRET: ${TURN_SECRET:-turnsecret}
|
||||||
CONDUIT_CONFIG: "" # Ignore this
|
CONDUIT_CONFIG: "" # Ignore this
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -68,12 +71,12 @@ services:
|
||||||
traefik.http.routers.matrix-well-knows-insecure.service: matrix-well-knows
|
traefik.http.routers.matrix-well-knows-insecure.service: matrix-well-knows
|
||||||
traefik.http.routers.matrix-well-knows-insecure.middlewares: matrix-well-knows-web-redirect
|
traefik.http.routers.matrix-well-knows-insecure.middlewares: matrix-well-knows-web-redirect
|
||||||
# Websecure
|
# 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.entrypoints: websecure
|
||||||
traefik.http.routers.matrix-well-knows.service: matrix-well-knows
|
traefik.http.routers.matrix-well-knows.service: matrix-well-knows
|
||||||
traefik.http.routers.matrix-well-knows.tls.certresolver: myresolver
|
traefik.http.routers.matrix-well-knows.tls.certresolver: myresolver
|
||||||
# Local domain
|
# 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.entrypoints: web
|
||||||
traefik.http.routers.matrix-well-knows-local-insecure.service: matrix-well-knows
|
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
|
traefik.http.routers.matrix-well-knows-local-insecure.middlewares: matrix-well-knows-web-redirect
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"port": 5230,
|
"port": 5230,
|
||||||
"id": "memos",
|
"id": "memos",
|
||||||
"tipi_version": 12,
|
"tipi_version": 13,
|
||||||
"version": "0.14.3",
|
"version": "0.14.4",
|
||||||
"categories": [
|
"categories": [
|
||||||
"utilities"
|
"utilities"
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
version: "3.7"
|
version: "3.7"
|
||||||
services:
|
services:
|
||||||
memos:
|
memos:
|
||||||
image: neosmemo/memos:0.14.3
|
image: neosmemo/memos:0.14.4
|
||||||
container_name: memos
|
container_name: memos
|
||||||
volumes:
|
volumes:
|
||||||
- ${APP_DATA_DIR}/memos:/var/opt/memos
|
- ${APP_DATA_DIR}/memos:/var/opt/memos
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"available": true,
|
"available": true,
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"id": "mixpost",
|
"id": "mixpost",
|
||||||
"tipi_version": 6,
|
"tipi_version": 7,
|
||||||
"version": "1.3.1",
|
"version": "1.3.2",
|
||||||
"categories": [
|
"categories": [
|
||||||
"social"
|
"social"
|
||||||
],
|
],
|
||||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
mixpost:
|
mixpost:
|
||||||
image: inovector/mixpost:v1.3.1
|
image: inovector/mixpost:v1.3.2
|
||||||
container_name: mixpost
|
container_name: mixpost
|
||||||
environment:
|
environment:
|
||||||
- APP_NAME='Mixpost'
|
- APP_NAME='Mixpost'
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"available": true,
|
"available": true,
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"id": "nocodb",
|
"id": "nocodb",
|
||||||
"tipi_version": 17,
|
"tipi_version": 18,
|
||||||
"version": "0.109.6",
|
"version": "0.109.7",
|
||||||
"categories": [
|
"categories": [
|
||||||
"utilities"
|
"utilities"
|
||||||
],
|
],
|
||||||
|
|
|
@ -11,7 +11,7 @@ services:
|
||||||
- NC_PUBLIC_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}
|
- NC_PUBLIC_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}
|
||||||
- NC_AUTH_JWT_SECRET=${NOCODB_JWT_SECRET}
|
- NC_AUTH_JWT_SECRET=${NOCODB_JWT_SECRET}
|
||||||
- NC_REDIS_URL=redis://default:${NOCODB_REDIS_PASSWORD}@nocodb-redis:6379
|
- NC_REDIS_URL=redis://default:${NOCODB_REDIS_PASSWORD}@nocodb-redis:6379
|
||||||
image: "nocodb/nocodb:0.109.6"
|
image: "nocodb/nocodb:0.109.7"
|
||||||
ports:
|
ports:
|
||||||
- "${APP_PORT}:8080"
|
- "${APP_PORT}:8080"
|
||||||
restart: always
|
restart: always
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"available": true,
|
"available": true,
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"id": "onedev",
|
"id": "onedev",
|
||||||
"tipi_version": 45,
|
"tipi_version": 46,
|
||||||
"version": "8.6.11",
|
"version": "8.6.12",
|
||||||
"categories": [
|
"categories": [
|
||||||
"development"
|
"development"
|
||||||
],
|
],
|
||||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
onedev:
|
onedev:
|
||||||
image: 1dev/server:8.6.11
|
image: 1dev/server:8.6.12
|
||||||
container_name: onedev
|
container_name: onedev
|
||||||
environment:
|
environment:
|
||||||
- hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect
|
- hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"available": true,
|
"available": true,
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"id": "planka",
|
"id": "planka",
|
||||||
"tipi_version": 1,
|
"tipi_version": 2,
|
||||||
"version": "1.12.0",
|
"version": "1.12.0",
|
||||||
"categories": ["development"],
|
"categories": ["development"],
|
||||||
"description": "The realtime kanban board for workgroups built with React and Redux.",
|
"description": "The realtime kanban board for workgroups built with React and Redux.",
|
||||||
|
|
|
@ -20,17 +20,17 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- ${APP_PORT}:1337
|
- ${APP_PORT}:1337
|
||||||
environment:
|
environment:
|
||||||
BASE_URL: ${APP_PROTOCOL:-http}://${APP_DOMAIN}
|
- BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}
|
||||||
TRUST_PROXY: 1
|
- TRUST_PROXY=1
|
||||||
DATABASE_URL: "postgresql://postgres@postgres/planka"
|
- DATABASE_URL="postgresql://postgres@postgres/planka"
|
||||||
SECRET_KEY: "${PLANKA_SECRET_KEY}"
|
- SECRET_KEY="${PLANKA_SECRET_KEY}"
|
||||||
networks:
|
networks:
|
||||||
- tipi_main_network
|
- tipi_main_network
|
||||||
labels:
|
labels:
|
||||||
# Main
|
# Main
|
||||||
traefik.enable: true
|
traefik.enable: true
|
||||||
traefik.http.middlewares.planka-web-redirect.redirectscheme.scheme: https
|
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
|
# Web
|
||||||
traefik.http.routers.planka-insecure.rule: Host(`${APP_DOMAIN}`)
|
traefik.http.routers.planka-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||||
traefik.http.routers.planka-insecure.entrypoints: web
|
traefik.http.routers.planka-insecure.entrypoints: web
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"port": 8088,
|
"port": 8088,
|
||||||
"id": "radarr",
|
"id": "radarr",
|
||||||
"tipi_version": 8,
|
"tipi_version": 9,
|
||||||
"version": "4.6.4",
|
"version": "4.7.5",
|
||||||
"categories": [
|
"categories": [
|
||||||
"media",
|
"media",
|
||||||
"utilities"
|
"utilities"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
version: "3.7"
|
version: "3.7"
|
||||||
services:
|
services:
|
||||||
radarr:
|
radarr:
|
||||||
image: lscr.io/linuxserver/radarr:4.6.4
|
image: lscr.io/linuxserver/radarr:4.7.5
|
||||||
container_name: radarr
|
container_name: radarr
|
||||||
environment:
|
environment:
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
|
|
|
@ -5,11 +5,9 @@
|
||||||
"available": true,
|
"available": true,
|
||||||
"exposable": true,
|
"exposable": true,
|
||||||
"id": "sshwifty",
|
"id": "sshwifty",
|
||||||
"tipi_version": 2,
|
"tipi_version": 3,
|
||||||
"version": "0.3.0-beta-release",
|
"version": "0.3.0-beta-release",
|
||||||
"categories": [
|
"categories": ["development"],
|
||||||
"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.",
|
"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)",
|
"short_desc": "Web SSH & Telnet (WebSSH & WebTelnet client)",
|
||||||
"author": "Nirui",
|
"author": "Nirui",
|
||||||
|
|
|
@ -13,7 +13,7 @@ services:
|
||||||
# Main
|
# Main
|
||||||
traefik.enable: true
|
traefik.enable: true
|
||||||
traefik.http.middlewares.sshwifty-web-redirect.redirectscheme.scheme: https
|
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
|
# Web
|
||||||
traefik.http.routers.sshwifty-insecure.rule: Host(`${APP_DOMAIN}`)
|
traefik.http.routers.sshwifty-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||||
traefik.http.routers.sshwifty-insecure.entrypoints: web
|
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