diff --git a/README.md b/README.md index 8aaccecd..da4f96e2 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/apps/ghostfolio/config.json b/apps/ghostfolio/config.json new file mode 100644 index 00000000..13e6f92d --- /dev/null +++ b/apps/ghostfolio/config.json @@ -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" + } + ] + } diff --git a/apps/ghostfolio/docker-compose.yml b/apps/ghostfolio/docker-compose.yml new file mode 100644 index 00000000..8ed12f8f --- /dev/null +++ b/apps/ghostfolio/docker-compose.yml @@ -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 diff --git a/apps/ghostfolio/metadata/description.md b/apps/ghostfolio/metadata/description.md new file mode 100644 index 00000000..9636517f --- /dev/null +++ b/apps/ghostfolio/metadata/description.md @@ -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 diff --git a/apps/ghostfolio/metadata/logo.jpg b/apps/ghostfolio/metadata/logo.jpg new file mode 100644 index 00000000..2aa33d71 Binary files /dev/null and b/apps/ghostfolio/metadata/logo.jpg differ diff --git a/apps/gotosocial/config.json b/apps/gotosocial/config.json index 01c9c5c9..242b3e01 100644 --- a/apps/gotosocial/config.json +++ b/apps/gotosocial/config.json @@ -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" ], diff --git a/apps/gotosocial/docker-compose.yml b/apps/gotosocial/docker-compose.yml index 03713f08..e75ce1e7 100644 --- a/apps/gotosocial/docker-compose.yml +++ b/apps/gotosocial/docker-compose.yml @@ -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 diff --git a/apps/homarr/config.json b/apps/homarr/config.json index 0bb04eac..196d7f1b 100644 --- a/apps/homarr/config.json +++ b/apps/homarr/config.json @@ -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" ], diff --git a/apps/homarr/docker-compose.yml b/apps/homarr/docker-compose.yml index 0280a710..e67fa1f3 100644 --- a/apps/homarr/docker-compose.yml +++ b/apps/homarr/docker-compose.yml @@ -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 diff --git a/apps/immich/config.json b/apps/immich/config.json index 9b10f586..9ad3eb9d 100644 --- a/apps/immich/config.json +++ b/apps/immich/config.json @@ -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" diff --git a/apps/immich/docker-compose.yml b/apps/immich/docker-compose.yml index 34fd2417..f2b1fc7d 100644 --- a/apps/immich/docker-compose.yml +++ b/apps/immich/docker-compose.yml @@ -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 diff --git a/apps/jackett/config.json b/apps/jackett/config.json index 805efe98..910300f2 100644 --- a/apps/jackett/config.json +++ b/apps/jackett/config.json @@ -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": [ diff --git a/apps/jackett/docker-compose.yml b/apps/jackett/docker-compose.yml index 7667e371..72c2a283 100644 --- a/apps/jackett/docker-compose.yml +++ b/apps/jackett/docker-compose.yml @@ -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 diff --git a/apps/matrix-conduit/config.json b/apps/matrix-conduit/config.json index 7a62d6a7..dd8c1ef1 100644 --- a/apps/matrix-conduit/config.json +++ b/apps/matrix-conduit/config.json @@ -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:?transport=udp\", \"turn:?transport=tcp\"]", + "required": false, + "env_variable": "TURN_URIS" + }, + { + "type": "password", + "label": "TURN Secret", + "required": false, + "env_variable": "TURN_SECRET" } ] } diff --git a/apps/matrix-conduit/docker-compose.yml b/apps/matrix-conduit/docker-compose.yml index 9430bcbc..69ec6f26 100644 --- a/apps/matrix-conduit/docker-compose.yml +++ b/apps/matrix-conduit/docker-compose.yml @@ -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 diff --git a/apps/memos/config.json b/apps/memos/config.json index fafd624f..eda27bb2 100644 --- a/apps/memos/config.json +++ b/apps/memos/config.json @@ -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" ], diff --git a/apps/memos/docker-compose.yml b/apps/memos/docker-compose.yml index 3c8248db..0b9243d9 100644 --- a/apps/memos/docker-compose.yml +++ b/apps/memos/docker-compose.yml @@ -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 diff --git a/apps/mixpost/config.json b/apps/mixpost/config.json index 223136a7..78224e16 100644 --- a/apps/mixpost/config.json +++ b/apps/mixpost/config.json @@ -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" ], diff --git a/apps/mixpost/docker-compose.yml b/apps/mixpost/docker-compose.yml index 6b0fc33a..4345b035 100644 --- a/apps/mixpost/docker-compose.yml +++ b/apps/mixpost/docker-compose.yml @@ -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' diff --git a/apps/nocodb/config.json b/apps/nocodb/config.json index 2b997447..60a938f2 100644 --- a/apps/nocodb/config.json +++ b/apps/nocodb/config.json @@ -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" ], diff --git a/apps/nocodb/docker-compose.yml b/apps/nocodb/docker-compose.yml index 407bc1a4..7f09d20a 100644 --- a/apps/nocodb/docker-compose.yml +++ b/apps/nocodb/docker-compose.yml @@ -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 diff --git a/apps/onedev/config.json b/apps/onedev/config.json index 23fc585e..9c2df9b4 100644 --- a/apps/onedev/config.json +++ b/apps/onedev/config.json @@ -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" ], diff --git a/apps/onedev/docker-compose.yml b/apps/onedev/docker-compose.yml index ba69c875..39c35521 100644 --- a/apps/onedev/docker-compose.yml +++ b/apps/onedev/docker-compose.yml @@ -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 diff --git a/apps/planka/config.json b/apps/planka/config.json index 8c459e22..32b0d469 100644 --- a/apps/planka/config.json +++ b/apps/planka/config.json @@ -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.", diff --git a/apps/planka/docker-compose.yml b/apps/planka/docker-compose.yml index 51b60b8e..cfcf4bd0 100644 --- a/apps/planka/docker-compose.yml +++ b/apps/planka/docker-compose.yml @@ -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 diff --git a/apps/radarr/config.json b/apps/radarr/config.json index a9dac0e6..0fabdf4a 100644 --- a/apps/radarr/config.json +++ b/apps/radarr/config.json @@ -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" diff --git a/apps/radarr/docker-compose.yml b/apps/radarr/docker-compose.yml index a3e4ba68..7a2bd728 100644 --- a/apps/radarr/docker-compose.yml +++ b/apps/radarr/docker-compose.yml @@ -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 diff --git a/apps/sshwifty/config.json b/apps/sshwifty/config.json index 63ae26c6..a671c13d 100644 --- a/apps/sshwifty/config.json +++ b/apps/sshwifty/config.json @@ -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", diff --git a/apps/sshwifty/docker-compose.yml b/apps/sshwifty/docker-compose.yml index 3406f0cf..ba9f4f67 100644 --- a/apps/sshwifty/docker-compose.yml +++ b/apps/sshwifty/docker-compose.yml @@ -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 diff --git a/apps/tandoor/config.json b/apps/tandoor/config.json new file mode 100644 index 00000000..bbd0c49f --- /dev/null +++ b/apps/tandoor/config.json @@ -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" + } + ] +} diff --git a/apps/tandoor/docker-compose.yml b/apps/tandoor/docker-compose.yml new file mode 100644 index 00000000..3c6bafb7 --- /dev/null +++ b/apps/tandoor/docker-compose.yml @@ -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 diff --git a/apps/tandoor/metadata/description.md b/apps/tandoor/metadata/description.md new file mode 100644 index 00000000..49a2ae66 --- /dev/null +++ b/apps/tandoor/metadata/description.md @@ -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/). \ No newline at end of file diff --git a/apps/tandoor/metadata/logo.jpg b/apps/tandoor/metadata/logo.jpg new file mode 100644 index 00000000..bc5f5afc Binary files /dev/null and b/apps/tandoor/metadata/logo.jpg differ