diff --git a/.github/ISSUE_TEMPLATE/app-request.md b/.github/ISSUE_TEMPLATE/app-request.md index f8f8b7a0..c290bdb3 100644 --- a/.github/ISSUE_TEMPLATE/app-request.md +++ b/.github/ISSUE_TEMPLATE/app-request.md @@ -10,10 +10,20 @@ assignees: meienberger Have you considered adding the app yourself? **Describe app** + A clear and concise description of what the app consists of and how it would benefit the users of Tipi. **Links** -Include links to all the available resources for the app. (eg: github repo, website, license) +- Official repository: [Insert link] +- Official docker image: [Insert link] + +Include links to alln other the available resources for the app. (eg: website, license) **Additional context** + Add any other context or screenshots about the app request here. + +**Checklist** +- [ ] I have put the app name in the title of the issue +- [ ] I have linked the repository of the app +- [ ] I have linked the official docker image diff --git a/README.md b/README.md index db5527d9..e4608f20 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Budibase](https://github.com/Budibase/budibase) - Low code platform for creating internal tools, workflows, and admin panels in minutes. Supports PostgreSQL, MySQL, MSSQL, MongoDB, Rest API, Docker, K8s, and more πŸš€. Budibase, the low code platform you'll enjoy using ⚑ - [Bookstack](https://github.com/BookStackApp/BookStack) - Simple, easy-to-use platform for organising and storing information. - [Calibre-Web](https://github.com/janeczku/calibre-web) - Web Ebook Reader +- [ChangeDetection.io](https://github.com/dgtlmoon/changedetection.io) - The best and simplest free open source website change detection, restock monitor and notification service. - [Chatpad AI](https://github.com/deiucanta/chatpad) - Not just another ChatGPT user-interface! - [Code-Server](https://github.com/coder/code-server) - Web VS Code - [Codex.Docs](https://github.com/codex-team/codex.docst) - Free Docs app powered by Editor.js ecosystem. @@ -28,6 +29,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Deemix](https://gitlab.com/Bockiii/deemix-docker) - deemix is a barebone deezer downloader library built from the ashes of Deezloader Remix. - [DokuWiki](https://github.com/dokuwiki/dokuwiki) - DokuWiki is a simple to use and highly versatile Open Source wiki software - [Dozzle](https://github.com/amir20/dozzle) - Dozzle is a small web based app to monitor Docker logs +- [Draw.io](https://github.com/jgraph/drawio) - draw.io is a JavaScript, client-side editor for general diagramming and whiteboarding. - [Duplicati](https://github.com/linuxserver/docker-duplicati) - Store securely encrypted backups in the cloud! - [Emulatorjs](https://github.com/EmulatorJS/EmulatorJS) - Self-hosted Javascript emulation for various system. - [Excalidraw](https://github.com/excalidraw/excalidraw) - Online whiteboard collaboration made easy @@ -61,11 +63,14 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Invidious](https://github.com/iv-org/invidious) - An alternative front-end to YouTube - [Jackett](https://github.com/Jackett/Jackett) - API Support for your favorite torrent trackers - [Jellyfin](https://github.com/jellyfin/jellyfin) - A media server for your home collection +- [Jellyfin Vue (Beta)](https://github.com/jellyfin/jellyfin-vue) - A modern web client for Jellyfin based on Vue - [Jellyseerr](https://github.com/Fallenbagel/jellyseerr) - Fork of overseerr for Jellyfin support - [Joplin](https://github.com/laurent22/joplin) - Privacy focused note-taking app - [Kanboard](https://github.com/kanboard/kanboard) - Kanboard is a free and open source Kanban project management software. - [Kapowarr](https://github.com/Casvt/Kapowarr) - Kapowarr is a software to build and manage a comic book library, fitting in the \*arr suite of software. +- [Kasm Workspaces](https://github.com/kasmtech) - Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services - [Kavita](https://github.com/Kareadita/Kavita) - Kavita is a fast, feature rich, cross platform reading server +- [Kimai](https://github.com/kimai/kimai) - Open source time-tracker - [Libreddit](https://github.com/spikecodes/libreddit) - Private front-end for Reddit - [LibrePhotos](https://github.com/LibrePhotos/librephotos) - Complete photo management service - [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate) - Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup @@ -87,15 +92,20 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Monica](https://github.com/monicahq/monica) - A Personal Relationship Management tool to help you document your social life - [Mixpost](https://github.com/inovector/mixpost) - Self-hosted social media management. Schedule and organize your social content. - [Mixpost Pro](https://mixpost.app/pricing) - Self-hosted social media management. Schedule and organize your social content. -- [Movary](https://github.com/leepeuker/movary - ) Track and rate your watched movies +- [MongoDB](https://github.com/mongodb/mongo)- MongoDB is an open-source NoSQL database +- [Mongo Express](https://github.com/mongo-express/mongo-express) - A web-based MongoDB admin interface written with Node.js, Express, and Bootstrap3 +- [Movary](https://github.com/leepeuker/movary ) - Track and rate your watched movies - [mStream](https://github.com/IrosTheBeggar/mStream) - The easiest music streaming server available - [Mylar3](https://github.com/mylar3/mylar3) - Mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. - [n8n](https://github.com/n8n-io/n8n) - Workflow Automation Tool - [Navidrome](https://github.com/navidrome/navidrome) - A selfhosted music server +- [Netdata](https://github.com/netdata/netdata) - Open-source, real-time, performance and health monitoring. - [Nextcloud](https://github.com/nextcloud/server) - A safe home for all your data - [Nitter](https://github.com/zedeus/nitter) - Alternative Twitter front-end - [NocoDB](https://github.com/nocodb/nocodb) - Open Source Airtable Alternative - [Node-RED](https://github.com/node-red/node-red) - Low-code programming for event-driven applications +- [NoteMark](https://github.com/enchant97/note-mark/) - Note Mark is a lighting fast and minimal web-based Markdown notes app. +- [Ntfy](https://github.com/binwiederhier/ntfy) - A Straightforward Notification service that operates over HTTP - [Obsidian LiveSync](https://github.com/vrtmrz/self-hosted-livesync-server) - LiveSync couchdb backend for Obsidian - [OneDev](https://code.onedev.io/onedev/server) - Self-hosted Git Server with Kanban and CI/CD - [Openbooks](https://github.com/evan-buss/openbooks) - Search and Download eBooks @@ -124,8 +134,10 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Sabnzbd](https://github.com/sabnzbd/sabnzbd) - Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can" - [SearXNG](https://github.com/searxng/searxng) - SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled - [Send](https://gitlab.com/timvisee/send) - Simple, private file sharing +- [Serge](https://github.com/serge-chat/serge) - A web interface for chatting with Alpaca through llama.cpp. - [SimpleX SMP](https://github.com/simplex-chat/simplexmq) - A reference implementation of the SimpleX Messaging Protocol for simplex queues over public networks. - [Sonarr](https://github.com/Sonarr/Sonarr) - TV show manager for Usenet and BitTorrent +- [Speedtest Tracker](https://github.com/alexjustesen/speedtest-tracker) - Internet performance tracking application. - [Sshwifty](https://github.com/nirui/sshwifty/) - Web SSH & Telnet (WebSSH & WebTelnet client) - [Stirling-PDF](https://github.com/Frooodle/Stirling-PDF) - Locally hosted web application that allows you to perform various operations on PDF files. - [Syncthing](https://github.com/syncthing/syncthing) - Continuous File Synchronization diff --git a/apps/2fauth/config.json b/apps/2fauth/config.json index ce941f72..410c3785 100644 --- a/apps/2fauth/config.json +++ b/apps/2fauth/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "2fauth", - "tipi_version": 5, - "version": "4.2.2", + "tipi_version": 6, + "version": "4.2.3", "categories": [ "security" ], diff --git a/apps/2fauth/docker-compose.yml b/apps/2fauth/docker-compose.yml index 19dcb2ff..6bc0af10 100644 --- a/apps/2fauth/docker-compose.yml +++ b/apps/2fauth/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: 2fauth: - image: 2fauth/2fauth:4.2.2 + image: 2fauth/2fauth:4.2.3 container_name: 2fauth volumes: - ${APP_DATA_DIR}/data:/2fauth diff --git a/apps/__tests__/apps.test.ts b/apps/__tests__/apps.test.ts index 98e154a7..9c68fa83 100644 --- a/apps/__tests__/apps.test.ts +++ b/apps/__tests__/apps.test.ts @@ -33,6 +33,7 @@ const networkExceptions = [ "gladys", "scrypted", "homebridge", + "cloudflared", ]; const getAppConfigs = (): AppConfig[] => { const apps: AppConfig[] = []; diff --git a/apps/actual-budget/config.json b/apps/actual-budget/config.json index 4c24b351..37458da9 100644 --- a/apps/actual-budget/config.json +++ b/apps/actual-budget/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8011, "id": "actual-budget", - "tipi_version": 10, - "version": "23.9.0", + "tipi_version": 11, + "version": "23.10.0", "categories": [ "finance" ], diff --git a/apps/actual-budget/docker-compose.yml b/apps/actual-budget/docker-compose.yml index 94a899c2..a036166e 100644 --- a/apps/actual-budget/docker-compose.yml +++ b/apps/actual-budget/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: actual-budget: container_name: actual-budget - image: actualbudget/actual-server:23.9.0 + image: actualbudget/actual-server:23.10.0 restart: unless-stopped ports: - ${APP_PORT}:5006 diff --git a/apps/adguard/config.json b/apps/adguard/config.json index bc938d55..9954d7c0 100644 --- a/apps/adguard/config.json +++ b/apps/adguard/config.json @@ -3,8 +3,8 @@ "name": "Adguard", "available": true, "exposable": true, - "tipi_version": 17, - "version": "0.107.38", + "tipi_version": 19, + "version": "0.107.40", "port": 8104, "id": "adguard", "categories": [ diff --git a/apps/adguard/docker-compose.yml b/apps/adguard/docker-compose.yml index 91872b83..d7d66a0a 100644 --- a/apps/adguard/docker-compose.yml +++ b/apps/adguard/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: adguard: - image: adguard/adguardhome:v0.107.38 + image: adguard/adguardhome:v0.107.40 container_name: adguard volumes: - "${APP_DATA_DIR}/data/work:/opt/adguardhome/work" diff --git a/apps/audiobookshelf/config.json b/apps/audiobookshelf/config.json index d30bf35a..9ee2c437 100644 --- a/apps/audiobookshelf/config.json +++ b/apps/audiobookshelf/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 13378, "id": "audiobookshelf", - "tipi_version": 5, - "version": "2.4.3", + "tipi_version": 6, + "version": "2.4.4", "categories": [ "books", "media" diff --git a/apps/audiobookshelf/docker-compose.yml b/apps/audiobookshelf/docker-compose.yml index bc9ace59..d9185304 100644 --- a/apps/audiobookshelf/docker-compose.yml +++ b/apps/audiobookshelf/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: audiobookshelf: container_name: audiobookshelf - image: ghcr.io/advplyr/audiobookshelf:2.4.3 + image: ghcr.io/advplyr/audiobookshelf:2.4.4 restart: unless-stopped ports: - ${APP_PORT}:80 diff --git a/apps/autobrr/config.json b/apps/autobrr/config.json index 10693570..44372abe 100644 --- a/apps/autobrr/config.json +++ b/apps/autobrr/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "autobrr", - "tipi_version": 9, - "version": "1.29.0", + "tipi_version": 12, + "version": "1.32.0", "categories": [ "media" ], diff --git a/apps/autobrr/docker-compose.yml b/apps/autobrr/docker-compose.yml index 854585b7..1ea0ac22 100644 --- a/apps/autobrr/docker-compose.yml +++ b/apps/autobrr/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: autobrr: container_name: autobrr - image: ghcr.io/autobrr/autobrr:v1.29.0 + image: ghcr.io/autobrr/autobrr:v1.32.0 restart: unless-stopped ports: - ${APP_PORT}:7474 diff --git a/apps/baikal/metadata/logo.jpg b/apps/baikal/metadata/logo.jpg index 63e3f1b4..c2d71378 100644 Binary files a/apps/baikal/metadata/logo.jpg and b/apps/baikal/metadata/logo.jpg differ diff --git a/apps/bazarr/config.json b/apps/bazarr/config.json index 55b914c6..a83d3e9f 100644 --- a/apps/bazarr/config.json +++ b/apps/bazarr/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 6767, "id": "bazarr", - "tipi_version": 9, - "version": "1.2.4", + "tipi_version": 11, + "version": "1.3.1", "categories": [ "media", "utilities" diff --git a/apps/bazarr/docker-compose.yml b/apps/bazarr/docker-compose.yml index 77b377a7..0d26dc13 100644 --- a/apps/bazarr/docker-compose.yml +++ b/apps/bazarr/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: bazarr: - image: lscr.io/linuxserver/bazarr:1.2.4 + image: lscr.io/linuxserver/bazarr:1.3.1 container_name: bazarr environment: - PUID=1000 diff --git a/apps/budibase/config.json b/apps/budibase/config.json index 8e574acb..5211c4ec 100644 --- a/apps/budibase/config.json +++ b/apps/budibase/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "budibase", - "tipi_version": 9, - "version": "2.10.10", + "tipi_version": 19, + "version": "2.11.45", "categories": [ "development" ], diff --git a/apps/budibase/docker-compose.yml b/apps/budibase/docker-compose.yml index 0d8278f9..f5028dc5 100644 --- a/apps/budibase/docker-compose.yml +++ b/apps/budibase/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.7' services: budibase: - image: budibase/budibase:2.10.10 + image: budibase/budibase:2.11.45 restart: unless-stopped container_name: budibase ports: diff --git a/apps/calibre-web/config.json b/apps/calibre-web/config.json index 666f7097..8721fd6b 100644 --- a/apps/calibre-web/config.json +++ b/apps/calibre-web/config.json @@ -4,10 +4,12 @@ "available": true, "exposable": true, "port": 8100, - "tipi_version": 6, - "version": "0.6.20", + "tipi_version": 7, + "version": "0.6.21", "id": "calibre-web", - "categories": ["books"], + "categories": [ + "books" + ], "description": "On the initial setup screen, enter /books as your calibre library location. \n Default admin login: Username: admin Password: admin123", "short_desc": "Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.", "author": "https://github.com/janeczku/", diff --git a/apps/calibre-web/docker-compose.yml b/apps/calibre-web/docker-compose.yml index 6dfcd801..4bcb89a7 100644 --- a/apps/calibre-web/docker-compose.yml +++ b/apps/calibre-web/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: calibre-web: - image: lscr.io/linuxserver/calibre-web:0.6.20 + image: lscr.io/linuxserver/calibre-web:0.6.21 container_name: calibre-web environment: - PUID=1000 diff --git a/apps/changedetection/config.json b/apps/changedetection/config.json new file mode 100644 index 00000000..8a0e3e32 --- /dev/null +++ b/apps/changedetection/config.json @@ -0,0 +1,18 @@ +{ + "name": "ChangeDetection", + "available": true, + "port": 8257, + "exposable": true, + "id": "changedetection", + "description": "The best and simplest free open source website change detection, restock monitor and notification service.", + "tipi_version": 2, + "version": "0.45.3", + "categories": [ + "utilities" + ], + "short_desc": "Website change detection.", + "author": "dgtlmoon", + "source": "https://github.com/dgtlmoon/changedetection.io", + "website": "https://changedetection.io/", + "form_fields": [] +} diff --git a/apps/changedetection/docker-compose.yml b/apps/changedetection/docker-compose.yml new file mode 100644 index 00000000..03e03888 --- /dev/null +++ b/apps/changedetection/docker-compose.yml @@ -0,0 +1,49 @@ +version: "3.7" +services: + changedetection: + image: ghcr.io/dgtlmoon/changedetection.io:0.45.3 + container_name: changedetection + hostname: changedetection + volumes: + - ${APP_DATA_DIR}/data:/datastore + ports: + - ${APP_PORT}:5000 + restart: unless-stopped + environment: + - PLAYWRIGHT_DRIVER_URL=ws://chnagedetection-chrome:3000/?stealth=1&--disable-web-security=true + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.changedetection-web-web-redirect.redirectscheme.scheme: https + traefik.http.services.changedetection-web.loadbalancer.server.port: 5000 + # Web + traefik.http.routers.changedetection-web-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.changedetection-web-insecure.entrypoints: web + traefik.http.routers.changedetection-web-insecure.service: changedetection-web + traefik.http.routers.changedetection-web-insecure.middlewares: changedetection-web-web-redirect + # Websecure + traefik.http.routers.changedetection-web.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.changedetection-web.entrypoints: websecure + traefik.http.routers.changedetection-web.service: changedetection-web + traefik.http.routers.changedetection-web.tls.certresolver: myresolver + # Local domain + traefik.http.routers.changedetection-web-local-insecure.rule: Host(`changedetection-web.${LOCAL_DOMAIN}`) + traefik.http.routers.changedetection-web-local-insecure.entrypoints: web + traefik.http.routers.changedetection-web-local-insecure.service: changedetection-web + traefik.http.routers.changedetection-web-local-insecure.middlewares: changedetection-web-web-redirect + # Local domain secure + traefik.http.routers.changedetection-web-local.rule: Host(`changedetection-web.${LOCAL_DOMAIN}`) + traefik.http.routers.changedetection-web-local.entrypoints: websecure + traefik.http.routers.changedetection-web-local.service: changedetection-web + traefik.http.routers.changedetection-web-local.tls: true + + + chnagedetection-chrome: + hostname: chnagedetection-chrome + image: browserless/chrome:latest + restart: unless-stopped + container_name: chnagedetection-chrome + networks: + - tipi_main_network \ No newline at end of file diff --git a/apps/changedetection/metadata/description.md b/apps/changedetection/metadata/description.md new file mode 100644 index 00000000..28548e98 --- /dev/null +++ b/apps/changedetection/metadata/description.md @@ -0,0 +1,73 @@ +## Web Site Change Detection, Restock monitoring and notifications. + +**_Detect website content changes and perform meaningful actions - trigger notifications via Discord, Email, Slack, Telegram, API calls and many more._** + +_Live your data-life pro-actively._ + + +[Self-hosted web page change monitoring](https://changedetection.io?src=github) + + +### Target specific parts of the webpage using the Visual Selector tool. + +Available when connected to a playwright content fetcher (included as part of our subscription service) + +[Self-hosted web page change monitoring context difference ](https://changedetection.io?src=github) + +### Easily see what changed, examine by word, line, or individual character. + +[Self-hosted web page change monitoring context difference ](https://changedetection.io?src=github) + + +### Perform interactive browser steps + +Fill in text boxes, click buttons and more, setup your changedetection scenario. + +Using the **Browser Steps** configuration, add basic steps before performing change detection, such as logging into websites, adding a product to a cart, accept cookie logins, entering dates and refining searches. + +After **Browser Steps** have been run, then visit the **Visual Selector** tab to refine the content you're interested in. +Requires Playwright to be enabled. + + +### Example use cases + +- Products and services have a change in pricing +- _Out of stock notification_ and _Back In stock notification_ +- Monitor and track PDF file changes, know when a PDF file has text changes. +- Governmental department updates (changes are often only on their websites) +- New software releases, security advisories when you're not on their mailing list. +- Festivals with changes +- Discogs restock alerts and monitoring +- Realestate listing changes +- Know when your favourite whiskey is on sale, or other special deals are announced before anyone else +- COVID related news from government websites +- University/organisation news from their website +- Detect and monitor changes in JSON API responses +- JSON API monitoring and alerting +- Changes in legal and other documents +- Trigger API calls via notifications when text appears on a website +- Glue together APIs using the JSON filter and JSON notifications +- Create RSS feeds based on changes in web content +- Monitor HTML source code for unexpected changes, strengthen your PCI compliance +- You have a very sensitive list of URLs to watch and you do _not_ want to use the paid alternatives. (Remember, _you_ are the product) +- Get notified when certain keywords appear in Twitter search results +- Proactively search for jobs, get notified when companies update their careers page, search job portals for keywords. +- Get alerts when new job positions are open on Bamboo HR and other job platforms +- Website defacement monitoring +- PokΓ©mon Card Restock Tracker / PokΓ©mon TCG Tracker +- RegTech - stay ahead of regulatory changes, regulatory compliance + +_Need an actual Chrome runner with Javascript support? We support fetching via WebDriver and Playwright!_ + +#### Key Features + +- Lots of trigger filters, such as "Trigger on text", "Remove text by selector", "Ignore text", "Extract text", also using regular-expressions! +- Target elements with xPath(1.0) and CSS Selectors, Easily monitor complex JSON with JSONPath or jq +- Switch between fast non-JS and Chrome JS based "fetchers" +- Track changes in PDF files (Monitor text changed in the PDF, Also monitor PDF filesize and checksums) +- Easily specify how often a site should be checked +- Execute JS before extracting text (Good for logging in, see examples in the UI!) +- Override Request Headers, Specify `POST` or `GET` and other methods +- Use the "Visual Selector" to help target specific elements +- Configurable [proxy per watch](https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration) +- Send a screenshot with the notification when a change is detected in the web page diff --git a/apps/changedetection/metadata/logo.jpg b/apps/changedetection/metadata/logo.jpg new file mode 100644 index 00000000..bfab1631 Binary files /dev/null and b/apps/changedetection/metadata/logo.jpg differ diff --git a/apps/cloudflared/config.json b/apps/cloudflared/config.json new file mode 100644 index 00000000..a3b0e264 --- /dev/null +++ b/apps/cloudflared/config.json @@ -0,0 +1,17 @@ +{ + "$schema": "../schema.json", + "name": "Cloudflared", + "port": 14333, + "available": true, + "exposable": false, + "id": "cloudflared", + "tipi_version": 1, + "version": "2023.8.2", + "categories": ["utilities"], + "description": "Cloudflared-web is a docker image that packages both cloudflared cli and a no-frills Web UI for easy starting/stopping of cloudflare tunnel.", + "short_desc": "Cloudflare Tunnels in a Web UI", + "author": "WisdomSky", + "source": "https://github.com/WisdomSky/Cloudflared-web", + "form_fields": [ + ] +} diff --git a/apps/cloudflared/docker-compose.yml b/apps/cloudflared/docker-compose.yml new file mode 100644 index 00000000..a539c8fd --- /dev/null +++ b/apps/cloudflared/docker-compose.yml @@ -0,0 +1,10 @@ +version: "3.9" + +services: + cloudflared: + image: wisdomsky/cloudflared-web:2023.8.2 + container_name: cloudflared + restart: unless-stopped + network_mode: host + volumes: + - ${APP_DATA_DIR}/data/cloudflared/config:/config \ No newline at end of file diff --git a/apps/cloudflared/metadata/description.md b/apps/cloudflared/metadata/description.md new file mode 100644 index 00000000..f44bc5e3 --- /dev/null +++ b/apps/cloudflared/metadata/description.md @@ -0,0 +1,31 @@ +_Cloudflared-web is a docker image that packages both cloudflared cli and a no-frills Web UI for easy starting/stopping of cloudflare tunnel._ + +___ + +## Why use `Cloudflared-web`? + +#### Pros + +βœ… Only need to run a docker command once. No need to run docker commands everytime you want to start or stop the container or when updating the token. + +βœ… Start and stop cloudflare tunnel anytime with a single click. + +#### Cons + +❌ Only supports Cloudflare Tunnel. + +❌ Can only update hostname policies through the [ZeroTrust](https://one.dash.cloudflare.com/) dashboard. + +___ + +The Web UI where you can setup the Cloudflared token can be accessed from port `14333`: + +``` +http://localhost:14333 +``` + +## [Screenshots](https://github.com/WisdomSky/Cloudflared-web#screenshots) + +[![Screenshot 1](https://raw.githubusercontent.com/WisdomSky/Cloudflared-web/main/screenshot-1.png)](https://raw.githubusercontent.com/WisdomSky/Cloudflared-web/main/screenshot-1.png) + +[![Screenshot 2](https://raw.githubusercontent.com/WisdomSky/Cloudflared-web/main/screenshot-2.png)](https://raw.githubusercontent.com/WisdomSky/Cloudflared-web/main/screenshot-2.png) diff --git a/apps/cloudflared/metadata/logo.jpg b/apps/cloudflared/metadata/logo.jpg new file mode 100644 index 00000000..8f3b16fa Binary files /dev/null and b/apps/cloudflared/metadata/logo.jpg differ diff --git a/apps/code-server/config.json b/apps/code-server/config.json index 78234539..e4125f50 100644 --- a/apps/code-server/config.json +++ b/apps/code-server/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8138, "id": "code-server", - "tipi_version": 14, - "version": "4.16.1", + "tipi_version": 17, + "version": "4.18.0", "categories": [ "development" ], diff --git a/apps/code-server/docker-compose.yml b/apps/code-server/docker-compose.yml index 8354de24..442c0f68 100644 --- a/apps/code-server/docker-compose.yml +++ b/apps/code-server/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: code-server: - image: lscr.io/linuxserver/code-server:4.16.1 + image: lscr.io/linuxserver/code-server:4.18.0 container_name: code-server environment: - PUID=1000 diff --git a/apps/drawio/config.json b/apps/drawio/config.json new file mode 100644 index 00000000..238f0e83 --- /dev/null +++ b/apps/drawio/config.json @@ -0,0 +1,23 @@ +{ + "name": "Draw.io", + "available": true, + "port": 8734, + "exposable": true, + "url_suffix": "?offline=1", + "id": "drawio", + "description": "draw.io is a JavaScript, client-side editor for general diagramming and whiteboarding.", + "tipi_version": 3, + "version": "22.0.8", + "categories": [ + "utilities" + ], + "short_desc": "Diagramming and whiteboarding app.", + "author": "JGraph", + "source": "https://github.com/jgraph/drawio", + "website": "https://www.drawio.com/", + "form_fields": [], + "supported_architectures": [ + "arm64", + "amd64" + ] +} diff --git a/apps/drawio/docker-compose.yml b/apps/drawio/docker-compose.yml new file mode 100644 index 00000000..56257389 --- /dev/null +++ b/apps/drawio/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3.7" +services: + drawio: + image: jgraph/drawio:22.0.8 + ports: + - ${APP_PORT}:8080 + container_name: drawio + tty: true + stdin_open: true + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.drawio-web-redirect.redirectscheme.scheme: https + traefik.http.services.drawio.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.drawio-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.drawio-insecure.entrypoints: web + traefik.http.routers.drawio-insecure.service: drawio + traefik.http.routers.drawio-insecure.middlewares: drawio-web-redirect + # Websecure + traefik.http.routers.drawio.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.drawio.entrypoints: websecure + traefik.http.routers.drawio.service: drawio + traefik.http.routers.drawio.tls.certresolver: myresolver + # Local domain + traefik.http.routers.drawio-local-insecure.rule: Host(`drawio.${LOCAL_DOMAIN}`) + traefik.http.routers.drawio-local-insecure.entrypoints: web + traefik.http.routers.drawio-local-insecure.service: drawio + traefik.http.routers.drawio-local-insecure.middlewares: drawio-web-redirect + # Local domain secure + traefik.http.routers.drawio-local.rule: Host(`drawio.${LOCAL_DOMAIN}`) + traefik.http.routers.drawio-local.entrypoints: websecure + traefik.http.routers.drawio-local.service: drawio + traefik.http.routers.drawio-local.tls: true diff --git a/apps/drawio/metadata/description.md b/apps/drawio/metadata/description.md new file mode 100644 index 00000000..4b30ac54 --- /dev/null +++ b/apps/drawio/metadata/description.md @@ -0,0 +1,5 @@ +## Draw.io + +draw.io, this project, is a configurable diagramming/whiteboarding visualization application. draw.io is jointly owned and developed by JGraph Ltd and draw.io AG. + +As well as running this project, we run a production-grade deployment of the diagramming interface at [https://app.diagrams.net](https://app.diagrams.net). diff --git a/apps/drawio/metadata/logo.jpg b/apps/drawio/metadata/logo.jpg new file mode 100644 index 00000000..4425f506 Binary files /dev/null and b/apps/drawio/metadata/logo.jpg differ diff --git a/apps/fireshare/config.json b/apps/fireshare/config.json index 72db45d1..a7f9f319 100644 --- a/apps/fireshare/config.json +++ b/apps/fireshare/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "fireshare", - "tipi_version": 6, - "version": "1.2.13", + "tipi_version": 7, + "version": "1.2.14", "categories": [ "development" ], diff --git a/apps/fireshare/docker-compose.yml b/apps/fireshare/docker-compose.yml index 83246b3d..1d7f75b9 100644 --- a/apps/fireshare/docker-compose.yml +++ b/apps/fireshare/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: fireshare: container_name: fireshare - image: shaneisrael/fireshare:v1.2.13 + image: shaneisrael/fireshare:v1.2.14 ports: - ${APP_PORT}:80 volumes: diff --git a/apps/flatnotes/config.json b/apps/flatnotes/config.json index 49002907..928ba7b0 100644 --- a/apps/flatnotes/config.json +++ b/apps/flatnotes/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "flatnotes", "port": 8137, - "tipi_version": 12, - "version": "3.2.3", + "tipi_version": 15, + "version": "3.4.0", "categories": [ "utilities" ], diff --git a/apps/flatnotes/docker-compose.yml b/apps/flatnotes/docker-compose.yml index 8609c981..217d3ce3 100644 --- a/apps/flatnotes/docker-compose.yml +++ b/apps/flatnotes/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: flatnotes: container_name: flatnotes - image: dullage/flatnotes:v3.2.3 + image: dullage/flatnotes:v3.4.0 environment: FLATNOTES_AUTH_TYPE: ${FLATNOTES_AUTH_TYPE} FLATNOTES_USERNAME: ${FLATNOTES_USERNAME} diff --git a/apps/forgejo/config.json b/apps/forgejo/config.json index 8c497848..a70df637 100644 --- a/apps/forgejo/config.json +++ b/apps/forgejo/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "forgejo", - "tipi_version": 6, - "version": "1.20.4-0", + "tipi_version": 8, + "version": "1.20.5-0", "categories": [ "development" ], diff --git a/apps/forgejo/docker-compose.yml b/apps/forgejo/docker-compose.yml index b943706c..1164e81c 100644 --- a/apps/forgejo/docker-compose.yml +++ b/apps/forgejo/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: forgejo: - image: codeberg.org/forgejo/forgejo:1.20.4-0 + image: codeberg.org/forgejo/forgejo:1.20.5-0 container_name: forgejo environment: - USER_UID=1000 @@ -11,7 +11,7 @@ services: - FORGEJO__database__HOST=forgejo-db:5432 - FORGEJO__database__NAME=forgejo - FORGEJO__database__USER=forgejo - - FORGEJO__database__PASSWD=forgejo + - FORGEJO__database__PASSWD=${FORGEJO_DB_PASSWORD} restart: unless-stopped volumes: - ${APP_DATA_DIR}/data/forgejo:/data diff --git a/apps/freshrss/config.json b/apps/freshrss/config.json index a9199562..1cb7de95 100644 --- a/apps/freshrss/config.json +++ b/apps/freshrss/config.json @@ -5,9 +5,11 @@ "exposable": true, "port": 8086, "id": "freshrss", - "tipi_version": 5, - "version": "1.21.0", - "categories": ["utilities"], + "tipi_version": 6, + "version": "1.22.0", + "categories": [ + "utilities" + ], "description": "FreshRSS is a self-hosted RSS feed aggregator like Leed or Kriss Feed.\nIt is lightweight, easy to work with, powerful, and customizable.\n\nIt is a multi-user application with an anonymous reading mode. It supports custom tags. There is an API for (mobile) clients, and a Command-Line Interface.\n\nThanks to the WebSub standard (formerly PubSubHubbub), FreshRSS is able to receive instant push notifications from compatible sources, such as Mastodon, Friendica, WordPress, Blogger, FeedBurner, etc.\n\nFreshRSS natively supports basic Web scraping, based on XPath, for Web sites not providing any RSS / Atom feed.\n\nFinally, it supports extensions for further tuning.", "short_desc": "A free, self-hostable aggregator… ", "author": "https://freshrss.org/", diff --git a/apps/freshrss/docker-compose.yml b/apps/freshrss/docker-compose.yml index 384b5446..0d641db9 100644 --- a/apps/freshrss/docker-compose.yml +++ b/apps/freshrss/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: freshrss: - image: lscr.io/linuxserver/freshrss:1.21.0 + image: lscr.io/linuxserver/freshrss:1.22.0 container_name: freshrss environment: - PUID=1000 diff --git a/apps/ghost/config.json b/apps/ghost/config.json index 8077e08c..7c98c50e 100644 --- a/apps/ghost/config.json +++ b/apps/ghost/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "ghost", - "tipi_version": 45, - "version": "5.62.0", + "tipi_version": 57, + "version": "5.71.0", "categories": [ "social", "media" diff --git a/apps/ghost/docker-compose.yml b/apps/ghost/docker-compose.yml index d3c7d791..7d8a6463 100644 --- a/apps/ghost/docker-compose.yml +++ b/apps/ghost/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: ghost: - image: ghost:5.62.0 + image: ghost:5.71.0 container_name: ghost depends_on: - ghostdb diff --git a/apps/ghostfolio/config.json b/apps/ghostfolio/config.json index e6e40c7c..4837cc28 100644 --- a/apps/ghostfolio/config.json +++ b/apps/ghostfolio/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "ghostfolio", - "tipi_version": 7, - "version": "1.305.0", + "tipi_version": 12, + "version": "2.15.0", "categories": [ "finance" ], diff --git a/apps/ghostfolio/docker-compose.yml b/apps/ghostfolio/docker-compose.yml index 0f75e12a..365eb0a7 100644 --- a/apps/ghostfolio/docker-compose.yml +++ b/apps/ghostfolio/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: ghostfolio: container_name: ghostfolio - image: ghostfolio/ghostfolio:1.305.0 + image: ghostfolio/ghostfolio:2.15.0 restart: unless-stopped ports: - ${APP_PORT}:3333 diff --git a/apps/gitea/config.json b/apps/gitea/config.json index d63c17e0..2bd3070d 100644 --- a/apps/gitea/config.json +++ b/apps/gitea/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "gitea", - "tipi_version": 14, - "version": "1.20.4", + "tipi_version": 15, + "version": "1.20.5", "categories": [ "development" ], diff --git a/apps/gitea/data/gitea/gitea/conf/app.ini b/apps/gitea/data/gitea/gitea/conf/app.ini.template similarity index 92% rename from apps/gitea/data/gitea/gitea/conf/app.ini rename to apps/gitea/data/gitea/gitea/conf/app.ini.template index 9d9e57bd..e06035f6 100644 --- a/apps/gitea/data/gitea/gitea/conf/app.ini +++ b/apps/gitea/data/gitea/gitea/conf/app.ini.template @@ -16,13 +16,13 @@ PATH=/data/git/lfs [server] APP_DATA_PATH = /data/gitea -DOMAIN = localhost -SSH_DOMAIN = localhost +DOMAIN = {{APP_HOST}} +SSH_DOMAIN = {{APP_HOST}} HTTP_PORT = 3000 -ROOT_URL = http://localhost:8108/ +ROOT_URL = https://{{APP_DOMAIN}}/ DISABLE_SSH = false -SSH_PORT = 22 -SSH_LISTEN_PORT = 22 +SSH_PORT = 222 +SSH_LISTEN_PORT = 222 LFS_START_SERVER = true LFS_JWT_SECRET = wo2G20l0nGsspUp8xsLNSNF7H8U-GQUVth5gj_q5cDk OFFLINE_MODE = false diff --git a/apps/gitea/docker-compose.yml b/apps/gitea/docker-compose.yml index f0f6ebef..b89d2978 100644 --- a/apps/gitea/docker-compose.yml +++ b/apps/gitea/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: gitea: - image: gitea/gitea:1.20.4 + image: gitea/gitea:1.20.5 container_name: gitea environment: - USER_UID=1000 diff --git a/apps/gladys/config.json b/apps/gladys/config.json index f74b9357..fafe4f49 100644 --- a/apps/gladys/config.json +++ b/apps/gladys/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": false, "id": "gladys", - "tipi_version": 18, - "version": "4.28.0", + "tipi_version": 19, + "version": "4.29.0", "categories": [ "automation" ], diff --git a/apps/gladys/docker-compose.yml b/apps/gladys/docker-compose.yml index fdf9a114..fe004891 100644 --- a/apps/gladys/docker-compose.yml +++ b/apps/gladys/docker-compose.yml @@ -3,7 +3,7 @@ version: '3' services: gladys: container_name: gladys - image: gladysassistant/gladys:v4.28.0 + image: gladysassistant/gladys:v4.29.0 privileged: true restart: on-failure stop_grace_period: 1m diff --git a/apps/glances/metadata/logo.jpg b/apps/glances/metadata/logo.jpg index c73a134b..e62ef636 100644 Binary files a/apps/glances/metadata/logo.jpg and b/apps/glances/metadata/logo.jpg differ diff --git a/apps/gotosocial/config.json b/apps/gotosocial/config.json index ae1ee04e..98e780f1 100644 --- a/apps/gotosocial/config.json +++ b/apps/gotosocial/config.json @@ -6,10 +6,10 @@ "exposable": true, "force_expose": true, "id": "gotosocial", - "tipi_version": 8, + "tipi_version": 10, "uid": 1000, "gid": 1000, - "version": "0.11.1", + "version": "0.12.1", "categories": [ "social" ], diff --git a/apps/gotosocial/docker-compose.yml b/apps/gotosocial/docker-compose.yml index 91b2b1ec..d2c85ede 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.11.1 + image: superseriousbusiness/gotosocial:0.12.1 user: 1000:1000 ports: - ${APP_PORT}:8080 diff --git a/apps/grafana/config.json b/apps/grafana/config.json index 973abcb8..69e563b7 100644 --- a/apps/grafana/config.json +++ b/apps/grafana/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "grafana", - "tipi_version": 15, - "version": "10.1.2", + "tipi_version": 18, + "version": "10.2.0", "categories": [ "data" ], diff --git a/apps/grafana/docker-compose.yml b/apps/grafana/docker-compose.yml index 886f354b..4a9486ec 100644 --- a/apps/grafana/docker-compose.yml +++ b/apps/grafana/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: grafana: container_name: grafana - image: grafana/grafana-oss:10.1.2 + image: grafana/grafana-oss:10.2.0 ports: - ${APP_PORT}:3000 volumes: diff --git a/apps/grist/config.json b/apps/grist/config.json index 671f3c82..b7ca8a95 100644 --- a/apps/grist/config.json +++ b/apps/grist/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "grist", "description": "Grist is a modern relational spreadsheet. It combines the flexibility of a spreadsheet with the robustness of a database to organize your data and make you more productive.", - "tipi_version": 3, - "version": "1.1.4", + "tipi_version": 5, + "version": "1.1.6", "categories": [ "utilities" ], diff --git a/apps/grist/docker-compose.yml b/apps/grist/docker-compose.yml index 7cdce377..46371cc8 100644 --- a/apps/grist/docker-compose.yml +++ b/apps/grist/docker-compose.yml @@ -6,7 +6,7 @@ services: environment: - APP_HOME_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN} - GRIST_SANDBOX_FLAVOR=${GRIST_SANDBOX_FLAVOR} - image: "gristlabs/grist:1.1.4" + image: "gristlabs/grist:1.1.6" ports: - "${APP_PORT}:8484" restart: always diff --git a/apps/grocy/config.json b/apps/grocy/config.json index 9e29c487..c07a2328 100644 --- a/apps/grocy/config.json +++ b/apps/grocy/config.json @@ -3,8 +3,8 @@ "name": "Grocy", "available": true, "exposable": true, - "tipi_version": 3, - "version": "3.3.2", + "tipi_version": 4, + "version": "4.0.3", "port": 8136, "id": "grocy", "categories": ["automation", "finance"], diff --git a/apps/grocy/docker-compose.yml b/apps/grocy/docker-compose.yml index 7dc3804b..93eb1b90 100644 --- a/apps/grocy/docker-compose.yml +++ b/apps/grocy/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: grocy: - image: lscr.io/linuxserver/grocy:v3.3.2-ls180 + image: lscr.io/linuxserver/grocy:v4.0.3-ls215 container_name: grocy volumes: - ${APP_DATA_DIR}/data:/config diff --git a/apps/halo/config.json b/apps/halo/config.json index b4005d63..46b67d75 100644 --- a/apps/halo/config.json +++ b/apps/halo/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8092, "id": "halo", - "tipi_version": 8, - "version": "2.9.1", + "tipi_version": 11, + "version": "2.10.1", "description": "Halo is a powerful and easy-to-use open source website building tool.", "short_desc": "Halo - Open source website building tool.", "categories": [ diff --git a/apps/halo/docker-compose.yml b/apps/halo/docker-compose.yml index 48771e16..e4d7ed70 100644 --- a/apps/halo/docker-compose.yml +++ b/apps/halo/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: halo: - image: halohub/halo:2.9.1 + image: halohub/halo:2.10.1 container_name: halo restart: unless-stopped depends_on: diff --git a/apps/homebox/config.json b/apps/homebox/config.json index 86086c9e..11d773af 100644 --- a/apps/homebox/config.json +++ b/apps/homebox/config.json @@ -5,9 +5,11 @@ "available": true, "exposable": true, "id": "homebox", - "tipi_version": 5, - "version": "0.9.2", - "categories": ["utilities"], + "tipi_version": 7, + "version": "0.10.1", + "categories": [ + "utilities" + ], "description": "Homebox is the inventory and organization system built for the Home User", "short_desc": "Homebox is the inventory and organization system built for the Home User", "author": "hay-kot", diff --git a/apps/homebox/docker-compose.yml b/apps/homebox/docker-compose.yml index 95ee1290..d7aeb4b8 100644 --- a/apps/homebox/docker-compose.yml +++ b/apps/homebox/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.4" services: homebox: - image: ghcr.io/hay-kot/homebox:v0.9.2 + image: ghcr.io/hay-kot/homebox:v0.10.1 container_name: homebox restart: always environment: diff --git a/apps/immich/config.json b/apps/immich/config.json index a0307e45..048738a2 100644 --- a/apps/immich/config.json +++ b/apps/immich/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8128, "id": "immich", - "tipi_version": 43, - "version": "1.78.1", + "tipi_version": 49, + "version": "1.82.1", "categories": [ "data", "photography" diff --git a/apps/immich/docker-compose.yml b/apps/immich/docker-compose.yml index bc5d287e..dec4816f 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.78.1 + image: altran1502/immich-proxy:v1.82.1 ports: - ${APP_PORT}:8080 depends_on: @@ -43,7 +43,7 @@ services: immich-server: container_name: immich-server - image: altran1502/immich-server:v1.78.1 + image: altran1502/immich-server:v1.82.1 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.78.1 + image: altran1502/immich-server:v1.82.1 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.78.1 + image: altran1502/immich-machine-learning:v1.82.1 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.78.1 + image: altran1502/immich-web:v1.82.1 restart: unless-stopped networks: - tipi_main_network diff --git a/apps/jellyfin-vue/config.json b/apps/jellyfin-vue/config.json new file mode 100644 index 00000000..e4e655d7 --- /dev/null +++ b/apps/jellyfin-vue/config.json @@ -0,0 +1,17 @@ +{ + "$schema": "../schema.json", + "name": "Jellyfin Vue (Beta)", + "port": 8202, + "available": true, + "exposable": true, + "id": "jellyfin-vue", + "tipi_version": 1, + "version": "unstable.2023-09-18.fe0f640", + "categories": ["media"], + "description": "A modern web client for Jellyfin based on Vue", + "short_desc": "A modern web client for Jellyfin based on Vue", + "author": "Jellyfin", + "source": "https://github.com/jellyfin/jellyfin-vue", + "form_fields": [ + ] +} \ No newline at end of file diff --git a/apps/jellyfin-vue/docker-compose.yml b/apps/jellyfin-vue/docker-compose.yml new file mode 100644 index 00000000..23ff1b0b --- /dev/null +++ b/apps/jellyfin-vue/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3" + +services: + jellyfin-vue: + container_name: jellyfin-vue + image: ghcr.io/jellyfin/jellyfin-vue:unstable.2023-09-18.fe0f640 + ports: + - ${APP_PORT}:80 + restart: unless-stopped + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.jellyfin-vue-web-redirect.redirectscheme.scheme: https + traefik.http.services.jellyfin-vue.loadbalancer.server.port: 80 + # Web + traefik.http.routers.jellyfin-vue-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.jellyfin-vue-insecure.entrypoints: web + traefik.http.routers.jellyfin-vue-insecure.service: jellyfin-vue + traefik.http.routers.jellyfin-vue-insecure.middlewares: jellyfin-vue-web-redirect + # Websecure + traefik.http.routers.jellyfin-vue.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.jellyfin-vue.entrypoints: websecure + traefik.http.routers.jellyfin-vue.service: jellyfin-vue + traefik.http.routers.jellyfin-vue.tls.certresolver: myresolver + # Local domain + traefik.http.routers.jellyfin-vue-local-insecure.rule: Host(`jellyfin-vue.${LOCAL_DOMAIN}`) + traefik.http.routers.jellyfin-vue-local-insecure.entrypoints: web + traefik.http.routers.jellyfin-vue-local-insecure.service: jellyfin-vue + traefik.http.routers.jellyfin-vue-local-insecure.middlewares: jellyfin-vue-web-redirect + # Local domain secure + traefik.http.routers.jellyfin-vue-local.rule: Host(`jellyfin-vue.${LOCAL_DOMAIN}`) + traefik.http.routers.jellyfin-vue-local.entrypoints: websecure + traefik.http.routers.jellyfin-vue-local.service: jellyfin-vue + traefik.http.routers.jellyfin-vue-local.tls: true diff --git a/apps/jellyfin-vue/metadata/description.md b/apps/jellyfin-vue/metadata/description.md new file mode 100644 index 00000000..e88e6cb1 --- /dev/null +++ b/apps/jellyfin-vue/metadata/description.md @@ -0,0 +1,15 @@ +# Important Info + +- This is a beta build of the new Jellyfin Vue UI. You still need an exisiting Jellyfin server. T +- This will have bugs and Issues, as its a Beta, Unstable Build. + + +# Jellyfin Vue + +### Part of the [Jellyfin Project](https://jellyfin.org) + +___ + +[![Logo Banner](https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/banner-logo-solid.svg?sanitize=true)](https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/banner-logo-solid.svg?sanitize=true) + +This is an alternative client for Jellyfin based on Vue.js. It might not be feature complete and it's constantly evolving. \ No newline at end of file diff --git a/apps/jellyfin-vue/metadata/logo.jpg b/apps/jellyfin-vue/metadata/logo.jpg new file mode 100644 index 00000000..9bd4da90 Binary files /dev/null and b/apps/jellyfin-vue/metadata/logo.jpg differ diff --git a/apps/jellyfin/config.json b/apps/jellyfin/config.json index 4e6953fb..756bb8f3 100644 --- a/apps/jellyfin/config.json +++ b/apps/jellyfin/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8091, "id": "jellyfin", - "tipi_version": 6, - "version": "10.8.10", + "tipi_version": 7, + "version": "10.8.11", "categories": [ "media" ], diff --git a/apps/jellyfin/docker-compose.yml b/apps/jellyfin/docker-compose.yml index 1497f107..bb900137 100644 --- a/apps/jellyfin/docker-compose.yml +++ b/apps/jellyfin/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: jellyfin: - image: lscr.io/linuxserver/jellyfin:10.8.10 + image: lscr.io/linuxserver/jellyfin:10.8.11 container_name: jellyfin volumes: - ${APP_DATA_DIR}/data/config:/config @@ -17,25 +17,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} - traefik.http.middlewares.jellyfin-mw.headers.SSLForceHost: true - traefik.http.middlewares.jellyfin-mw.headers.SSLHost: ${APP_DOMAIN} - traefik.http.middlewares.jellyfin-mw.headers.SSLRedirect: true - traefik.http.middlewares.jellyfin-mw.headers.STSIncludeSubdomains: true - traefik.http.middlewares.jellyfin-mw.headers.STSPreload: true - traefik.http.middlewares.jellyfin-mw.headers.STSSeconds: 315360000 - traefik.http.middlewares.jellyfin-mw.headers.browserXSSFilter: true - traefik.http.middlewares.jellyfin-mw.headers.contentTypeNosniff: true - traefik.http.middlewares.jellyfin-mw.headers.customFrameOptionsValue: 'allow-from https://${DOMAIN}' - traefik.http.middlewares.jellyfin-mw.headers.customResponseHeaders.X-Robots-Tag: noindex,nofollow,nosnippet,noarchive,notranslate,noimageindex - traefik.http.middlewares.jellyfin-mw.headers.forceSTSHeader: true - traefik.http.middlewares.jellyfin-mw.headers.frameDeny: true - traefik.http.routers.jellyfin.entryPoints: websecure - traefik.http.routers.jellyfin.middlewares: jellyfin-mw + # Main + traefik.enable: true + traefik.http.middlewares.jellyfin-web-redirect.redirectscheme.scheme: https + traefik.http.services.jellyfin.loadbalancer.server.port: 8096 + # Web + traefik.http.routers.jellyfin-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.jellyfin-insecure.entrypoints: web + traefik.http.routers.jellyfin-insecure.service: jellyfin + traefik.http.routers.jellyfin-insecure.middlewares: jellyfin-web-redirect + # Websecure traefik.http.routers.jellyfin.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.jellyfin.service: jellyfin-svc - traefik.http.routers.jellyfin.tls: true + traefik.http.routers.jellyfin.entrypoints: websecure + traefik.http.routers.jellyfin.service: jellyfin traefik.http.routers.jellyfin.tls.certresolver: myresolver - traefik.http.routers.jellyfin.tls.domains: ${APP_DOMAIN} - traefik.http.services.jellyfin-svc.loadBalancer.passHostHeader: true - traefik.http.services.jellyfin-svc.loadBalancer.server.port: 8096 + # Local domain + traefik.http.routers.jellyfin-local-insecure.rule: Host(`jellyfin.${LOCAL_DOMAIN}`) + traefik.http.routers.jellyfin-local-insecure.entrypoints: web + traefik.http.routers.jellyfin-local-insecure.service: jellyfin + traefik.http.routers.jellyfin-local-insecure.middlewares: jellyfin-web-redirect + # Local domain secure + traefik.http.routers.jellyfin-local.rule: Host(`jellyfin.${LOCAL_DOMAIN}`) + traefik.http.routers.jellyfin-local.entrypoints: websecure + traefik.http.routers.jellyfin-local.service: jellyfin + traefik.http.routers.jellyfin-local.tls: true diff --git a/apps/joplin/config.json b/apps/joplin/config.json index 1cffd4f6..5776f342 100644 --- a/apps/joplin/config.json +++ b/apps/joplin/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8099, "id": "joplin", - "tipi_version": 8, - "version": "2.12.1", + "tipi_version": 10, + "version": "2.13.2", "categories": [ "utilities" ], diff --git a/apps/joplin/docker-compose.yml b/apps/joplin/docker-compose.yml index 33cc0144..ed17f10b 100644 --- a/apps/joplin/docker-compose.yml +++ b/apps/joplin/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.7" services: joplin: container_name: joplin - image: florider89/joplin-server:2.12.1 + image: florider89/joplin-server:2.13.2 restart: unless-stopped depends_on: - db-joplin diff --git a/apps/kanboard/config.json b/apps/kanboard/config.json index 3bf43187..22473439 100644 --- a/apps/kanboard/config.json +++ b/apps/kanboard/config.json @@ -5,8 +5,8 @@ "port": 8010, "id": "kanboard", "description": "Kanboard is a free and open source Kanban project management software.", - "tipi_version": 6, - "version": "1.2.32", + "tipi_version": 7, + "version": "1.2.33", "categories": [ "development" ], diff --git a/apps/kanboard/docker-compose.yml b/apps/kanboard/docker-compose.yml index 6e657c81..5e87365c 100644 --- a/apps/kanboard/docker-compose.yml +++ b/apps/kanboard/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: kanboard: container_name: kanboard - image: kanboard/kanboard:v1.2.32 + image: kanboard/kanboard:v1.2.33 environment: - PLUGIN_INSTALLER=${PLUGIN_INSTALLER} ports: diff --git a/apps/kasm-workspaces/config.json b/apps/kasm-workspaces/config.json new file mode 100644 index 00000000..4bea4eed --- /dev/null +++ b/apps/kasm-workspaces/config.json @@ -0,0 +1,22 @@ +{ + "name": "Kasm Workspaces", + "available": true, + "port": 8744, + "exposable": true, + "id": "kasm-workspaces", + "description": "Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services.", + "tipi_version": 2, + "version": "1.120.20221218", + "categories": [ + "utilities" + ], + "short_desc": "Container streaming platform.", + "author": "Kasm", + "source": "https://github.com/kasmtech", + "website": "https://www.kasmweb.com/", + "form_fields": [], + "supported_architectures": [ + "arm64", + "amd64" + ] +} diff --git a/apps/kasm-workspaces/docker-compose.yml b/apps/kasm-workspaces/docker-compose.yml new file mode 100644 index 00000000..90799457 --- /dev/null +++ b/apps/kasm-workspaces/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" +services: + kasm-workspaces: + image: lscr.io/linuxserver/kasm:1.120.20221218 + container_name: kasm-workspaces + privileged: true + environment: + - KASM_PORT=8744 + volumes: + - ${APP_DATA_DIR}/data:/opt + ports: + - 8743:3000 + - ${APP_PORT}:8744 + restart: unless-stopped + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.kasm-workspaces-web-redirect.redirectscheme.scheme: https + traefik.http.services.kasm-workspaces.loadbalancer.server.port: 8744 + # Web + traefik.http.routers.kasm-workspaces-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kasm-workspaces-insecure.entrypoints: web + traefik.http.routers.kasm-workspaces-insecure.service: kasm-workspaces + traefik.http.routers.kasm-workspaces-insecure.middlewares: kasm-workspaces-web-redirect + # Websecure + traefik.http.routers.kasm-workspaces.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kasm-workspaces.entrypoints: websecure + traefik.http.routers.kasm-workspaces.service: kasm-workspaces + traefik.http.routers.kasm-workspaces.tls.certresolver: myresolver + # Local domain + traefik.http.routers.kasm-workspaces-local-insecure.rule: Host(`kasm-workspaces.${LOCAL_DOMAIN}`) + traefik.http.routers.kasm-workspaces-local-insecure.entrypoints: web + traefik.http.routers.kasm-workspaces-local-insecure.service: kasm-workspaces + traefik.http.routers.kasm-workspaces-local-insecure.middlewares: kasm-workspaces-web-redirect + # Local domain secure + traefik.http.routers.kasm-workspaces-local.rule: Host(`kasm-workspaces.${LOCAL_DOMAIN}`) + traefik.http.routers.kasm-workspaces-local.entrypoints: websecure + traefik.http.routers.kasm-workspaces-local.service: kasm-workspaces + traefik.http.routers.kasm-workspaces-local.tls: true \ No newline at end of file diff --git a/apps/kasm-workspaces/metadata/description.md b/apps/kasm-workspaces/metadata/description.md new file mode 100644 index 00000000..c1c92a68 --- /dev/null +++ b/apps/kasm-workspaces/metadata/description.md @@ -0,0 +1,8 @@ +## Kasm + +Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections. + +The rendering of the graphical-based containers is powered by the open-source project KasmVNC + +**Warning:** You will firtly need to access the port 8743 for the initial setup of the container. **If you dont do this the app won't work!**
+**Warning:** The app works with https if you dont access **all the ports** (setup and main) with https in the front you will get an empty response error. diff --git a/apps/kasm-workspaces/metadata/logo.jpg b/apps/kasm-workspaces/metadata/logo.jpg new file mode 100644 index 00000000..09a013fb Binary files /dev/null and b/apps/kasm-workspaces/metadata/logo.jpg differ diff --git a/apps/kavita/config.json b/apps/kavita/config.json index fa575988..7c65999b 100644 --- a/apps/kavita/config.json +++ b/apps/kavita/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "kavita", - "tipi_version": 6, - "version": "0.7.8", + "tipi_version": 7, + "version": "0.7.9", "categories": [ "media" ], diff --git a/apps/kavita/docker-compose.yml b/apps/kavita/docker-compose.yml index 3af44ec3..802968c9 100644 --- a/apps/kavita/docker-compose.yml +++ b/apps/kavita/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: kavita: container_name: kavita - image: kizaing/kavita:0.7.8 + image: jvmilazz0/kavita:0.7.9 ports: - ${APP_PORT}:5000 volumes: diff --git a/apps/kimai/config.json b/apps/kimai/config.json new file mode 100644 index 00000000..a091ed33 --- /dev/null +++ b/apps/kimai/config.json @@ -0,0 +1,45 @@ +{ + "name": "Kimai", + "available": true, + "port": 8003, + "exposable": true, + "id": "kimai", + "description": "Kimai is a professional grade time-tracking application, free and open-source. It handles use-cases of freelancers as well as companies with dozens or hundreds of users.", + "tipi_version": 1, + "version": "fpm-2.1.0-prod", + "categories": ["utilities"], + "short_desc": "Open source time-tracker", + "author": "Kevin Papst", + "source": "https://github.com/kimai/kimai", + "website": "https://www.kimai.org", + "form_fields": [ + { + "type": "random", + "label": "KIMAI_DATABASE_ROOT_PASSWORD", + "min": 32, + "env_variable": "KIMAI_DATABASE_ROOT_PASSWORD" + }, + { + "type": "random", + "label": "KIMAI_DATABASE_PASSWORD", + "min": 32, + "env_variable": "KIMAI_DATABASE_PASSWORD" + }, + { + "type": "text", + "label": "Admin email", + "max": 254, + "min": 3, + "required": true, + "env_variable": "KIMAI_ADMINMAIL" + }, + { + "type": "password", + "label": "Admin password", + "max": 128, + "min": 10, + "required": true, + "env_variable": "KIMAI_ADMINPASS" + } + ] +} \ No newline at end of file diff --git a/apps/kimai/docker-compose.yml b/apps/kimai/docker-compose.yml new file mode 100644 index 00000000..3272c5d4 --- /dev/null +++ b/apps/kimai/docker-compose.yml @@ -0,0 +1,86 @@ +# Adapted from https://github.com/tobybatch/kimai2/blob/799a534b8d93d18a2d10573457936a31052ce8e0/compose/docker-compose.fpm.prod.yml + +version: "3.5" + +services: + nginx: + container_name: kimai-proxy + image: tobybatch/nginx-fpm-reverse-proxy:latest + ports: + - ${APP_PORT}:80 + volumes: + - ${APP_DATA_DIR}/data/public:/opt/kimai/public:ro + restart: unless-stopped + depends_on: + - kimai + healthcheck: + test: wget --spider http://kimai-proxy/health || exit 1 + interval: 20s + start_period: 10s + timeout: 10s + retries: 3 + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.kimai-proxy-web-redirect.redirectscheme.scheme: https + traefik.http.services.kimai-proxy.loadbalancer.server.port: 80 + # Web + traefik.http.routers.kimai-proxy-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kimai-proxy-insecure.entrypoints: web + traefik.http.routers.kimai-proxy-insecure.service: kimai-proxy + traefik.http.routers.kimai-proxy-insecure.middlewares: kimai-proxy-web-redirect + # Websecure + traefik.http.routers.kimai-proxy.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kimai-proxy.entrypoints: websecure + traefik.http.routers.kimai-proxy.service: kimai-proxy + traefik.http.routers.kimai-proxy.tls.certresolver: myresolver + # Local domain + traefik.http.routers.kimai-proxy-local-insecure.rule: Host(`kimai.${LOCAL_DOMAIN}`) + traefik.http.routers.kimai-proxy-local-insecure.entrypoints: web + traefik.http.routers.kimai-proxy-local-insecure.service: kimai-proxy + traefik.http.routers.kimai-proxy-local-insecure.middlewares: kimai-proxy-web-redirect + # Local domain secure + traefik.http.routers.kimai-proxy-local.rule: Host(`kimai-proxy.${LOCAL_DOMAIN}`) + traefik.http.routers.kimai-proxy-local.entrypoints: websecure + traefik.http.routers.kimai-proxy-local.service: kimai-proxy + traefik.http.routers.kimai-proxy-local.tls: true + + kimai: + container_name: kimai + image: kimai/kimai2:fpm-2.1.0-prod + environment: + - ADMINMAIL=${KIMAI_ADMINMAIL} + - ADMINPASS=${KIMAI_ADMINPASS} + - "DATABASE_URL=mysql://kimai:${KIMAI_DATABASE_PASSWORD}@kimai-sqldb/kimai?charset=utf8&serverVersion=5.7" + - TRUSTED_HOSTS=kimai-proxy,localhost,127.0.0.1 + volumes: + - ${APP_DATA_DIR}/data/public:/opt/kimai/public + - ${APP_DATA_DIR}/data/var:/opt/kimai/var + # - ./ldap.conf:/etc/openldap/ldap.conf:z + # - ./ROOT-CA.pem:/etc/ssl/certs/ROOT-CA.pem:z + restart: unless-stopped + networks: + - tipi_main_network + + sqldb: + container_name: kimai-sqldb + image: mysql:5.7 + environment: + - MYSQL_DATABASE=kimai + - MYSQL_USER=kimai + - MYSQL_PASSWORD=${KIMAI_DATABASE_PASSWORD} + - MYSQL_ROOT_PASSWORD=${KIMAI_DATABASE_ROOT_PASSWORD} + volumes: + - ${APP_DATA_DIR}/data/mysql:/var/lib/mysql + command: --default-storage-engine innodb + restart: unless-stopped + healthcheck: + test: mysqladmin -p$$MYSQL_ROOT_PASSWORD ping -h localhost + interval: 20s + start_period: 10s + timeout: 10s + retries: 3 + networks: + - tipi_main_network diff --git a/apps/kimai/metadata/description.md b/apps/kimai/metadata/description.md new file mode 100644 index 00000000..f5a9cf7c --- /dev/null +++ b/apps/kimai/metadata/description.md @@ -0,0 +1,8 @@ +

+ Kimai logo +

+ +Kimai is a professional grade time-tracking application, free and open-source. It handles use-cases of freelancers as well as companies with dozens or hundreds of users. Kimai was build to track your project times and ships with many advanced features, including but not limited to: + +JSON API, invoicing, data exports, multi-timer and punch-in punch-out mode, tagging, multi-user - multi-timezones - multi-language ([over 30 translations existing](https://hosted.weblate.org/projects/kimai/)!), authentication via SAML/LDAP/Database, two-factor authentication (2FA) with TOTP, customizable role and team permissions, responsive design, user/customer/project specific rates, advanced search & filtering, money and time budgets, advanced reporting, support for [plugins](https://www.kimai.org/store/) and so much more. + diff --git a/apps/kimai/metadata/logo.jpg b/apps/kimai/metadata/logo.jpg new file mode 100644 index 00000000..e4d41290 Binary files /dev/null and b/apps/kimai/metadata/logo.jpg differ diff --git a/apps/kiwix-serve/config.json b/apps/kiwix-serve/config.json new file mode 100644 index 00000000..dbeedfac --- /dev/null +++ b/apps/kiwix-serve/config.json @@ -0,0 +1,17 @@ +{ + "$schema": "../schema.json", + "name": "Kiwix Server", + "port": 8169, + "available": true, + "exposable": true, + "id": "kiwix-serve", + "tipi_version": 1, + "version": "3.5.0-2", + "categories": ["media"], + "description": "Kiwix Server is a web server for hosting .zim files", + "short_desc": "Kiwix Server is a web server for hosting .zim files", + "author": "Kiwix", + "source": "https://github.com/kiwix/kiwix-tools/", + "website": "https://kiwix.org/", + "form_fields": [] +} diff --git a/apps/kiwix-serve/docker-compose.yml b/apps/kiwix-serve/docker-compose.yml new file mode 100644 index 00000000..56b739a8 --- /dev/null +++ b/apps/kiwix-serve/docker-compose.yml @@ -0,0 +1,39 @@ +version: '3.9' + +services: + kiwix-serve: + container_name: kiwix-serve + image: ghcr.io/kiwix/kiwix-serve:3.5.0-2 + ports: + - ${APP_PORT}:8080 + volumes: + - ${APP_DATA_DIR}/data/zim:/data + command: '*.zim' + restart: unless-stopped + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.kiwix-serve-web-redirect.redirectscheme.scheme: https + traefik.http.services.kiwix-serve.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.kiwix-serve-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kiwix-serve-insecure.entrypoints: web + traefik.http.routers.kiwix-serve-insecure.service: kiwix-serve + traefik.http.routers.kiwix-serve-insecure.middlewares: kiwix-serve-web-redirect + # Websecure + traefik.http.routers.kiwix-serve.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kiwix-serve.entrypoints: websecure + traefik.http.routers.kiwix-serve.service: kiwix-serve + traefik.http.routers.kiwix-serve.tls.certresolver: myresolver + # Local domain + traefik.http.routers.kiwix-serve-local-insecure.rule: Host(`kiwix-serve.${LOCAL_DOMAIN}`) + traefik.http.routers.kiwix-serve-local-insecure.entrypoints: web + traefik.http.routers.kiwix-serve-local-insecure.service: kiwix-serve + traefik.http.routers.kiwix-serve-local-insecure.middlewares: kiwix-serve-web-redirect + # Local domain secure + traefik.http.routers.kiwix-serve-local.rule: Host(`kiwix-serve.${LOCAL_DOMAIN}`) + traefik.http.routers.kiwix-serve-local.entrypoints: websecure + traefik.http.routers.kiwix-serve-local.service: kiwix-serve + traefik.http.routers.kiwix-serve-local.tls: true diff --git a/apps/kiwix-serve/metadata/description.md b/apps/kiwix-serve/metadata/description.md new file mode 100644 index 00000000..6739cd45 --- /dev/null +++ b/apps/kiwix-serve/metadata/description.md @@ -0,0 +1,26 @@ +# Kiwix Server + +Kiwix Server is a .zim compatible web server: it allows you to deliver .zim files over the HTTP protocol within your local network – be it a University or your own house. Simply start Kiwix-Serve on your machine, and your content will be available for anybody through their web browser. This allows you to view a website without having internet access. + + +**Ensure that your there are .zim files in the `${APP_DATA_DIR}/data/zim` directory otherwise the server won't launch properly and will need to be restarted** + +For doumentation see [the Kiwix wiki](https://wiki.kiwix.org/wiki/Kiwix-serve) + +## Features + +* Full text search engine +* Search suggestions +* Really small and efficient +* Compatible with almost all browsers +* Available on all platforms +* Available as command line executable +* Embedded in Kiwix UI +* Able to deal with one ZIM file or XML library files +* [RESTful API endpoint with OPDS (XML)](https://wiki.kiwix.org/wiki/OPDS) + +## What are ZIM files? + +The ZIM file format is an open file format that stores wiki content for offline usage. The format is defined by the openZIM project, which also supports an Kiwix. The format is primarily used to store the contents of Wikipedia and other Wikimedia projects, including articles, full-text search indices and auxiliary files. + +Download ZIM files from the [Kiwix library](https://library.kiwix.org/#lang=eng), or create your own (see [Zimit](https://www.youzim.it/)) \ No newline at end of file diff --git a/apps/kiwix-serve/metadata/logo.jpg b/apps/kiwix-serve/metadata/logo.jpg new file mode 100644 index 00000000..588df3e8 Binary files /dev/null and b/apps/kiwix-serve/metadata/logo.jpg differ diff --git a/apps/libretranslate/config.json b/apps/libretranslate/config.json index 4ba63962..b30321da 100644 --- a/apps/libretranslate/config.json +++ b/apps/libretranslate/config.json @@ -5,9 +5,11 @@ "exposable": true, "port": 8121, "id": "libretranslate", - "tipi_version": 6, - "version": "1.3.11", - "categories": ["utilities"], + "tipi_version": 9, + "version": "1.4.0", + "categories": [ + "utilities" + ], "description": "Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on proprietary providers such as Google or Azure to perform translations. Instead, its translation engine is powered by the open source Argos Translate library.", "short_desc": "Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup.", "author": "LibreTranslate", diff --git a/apps/libretranslate/docker-compose.yml b/apps/libretranslate/docker-compose.yml index c17fa3d3..c11fe950 100644 --- a/apps/libretranslate/docker-compose.yml +++ b/apps/libretranslate/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: libretranslate: container_name: libretranslate - image: libretranslate/libretranslate:v1.3.11 + image: libretranslate/libretranslate:v1.4.0 dns: - ${DNS_IP} ports: diff --git a/apps/lidarr/config.json b/apps/lidarr/config.json index b12d61f4..5df07f28 100644 --- a/apps/lidarr/config.json +++ b/apps/lidarr/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8131, "id": "lidarr", - "tipi_version": 5, - "version": "1.3.5", + "tipi_version": 6, + "version": "1.4.5", "categories": [ "media", "music" diff --git a/apps/lidarr/docker-compose.yml b/apps/lidarr/docker-compose.yml index 0aa1886e..e3d98d85 100644 --- a/apps/lidarr/docker-compose.yml +++ b/apps/lidarr/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: lidarr: - image: lscr.io/linuxserver/lidarr:1.3.5 + image: lscr.io/linuxserver/lidarr:1.4.5 container_name: lidarr environment: - PUID=1000 diff --git a/apps/linkwarden/config.json b/apps/linkwarden/config.json index 0eff16af..5eca5029 100644 --- a/apps/linkwarden/config.json +++ b/apps/linkwarden/config.json @@ -5,10 +5,11 @@ "available": true, "exposable": true, "id": "linkwarden", - "tipi_version": 1, - "supported_architectures": ["amd64"], - "version": "v1.0.1", - "categories": ["data"], + "tipi_version": 3, + "version": "1.2.5", + "categories": [ + "data" + ], "description": "A self-hosted, open-source collaborative bookmark manager to collect, organize and archive webpages.", "short_desc": "A self-hosted, open-source collaborative bookmark manager", "author": "Linkwarden", @@ -25,6 +26,14 @@ "label": "Linkwarden Nextauth Secret", "min": 32, "env_variable": "LINKWARDEN_NEXTAUTH_SECRET" + }, + { + "type": "boolean", + "label": "Disable Registration", + "hint": "Needed for at least one user. If on registration will be disabled.", + "required": false, + "default": "false", + "env_variable": "LINKWARDEN_NEXT_PUBLIC_DISABLE_REGISTRATION" } ] } diff --git a/apps/linkwarden/docker-compose.yml b/apps/linkwarden/docker-compose.yml index 1c48fd82..948071cd 100644 --- a/apps/linkwarden/docker-compose.yml +++ b/apps/linkwarden/docker-compose.yml @@ -2,12 +2,13 @@ version: "3.7" services: linkwarden: - image: ghcr.io/selfhostedhub/linkwarden:v1.0.1 + image: ghcr.io/linkwarden/linkwarden:v1.2.5 container_name: linkwarden environment: - DATABASE_URL=postgresql://tipi:${LINKWARDEN_DB_PASSWORD}@linkwarden-db:5432/linkwarden - NEXTAUTH_SECRET=${LINKWARDEN_NEXTAUTH_SECRET} - NEXTAUTH_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN} + - NEXT_PUBLIC_DISABLE_REGISTRATION=${LINKWARDEN_NEXT_PUBLIC_DISABLE_REGISTRATION} restart: unless-stopped volumes: - ${APP_DATA_DIR}/data/linkwarden:/data/data diff --git a/apps/logto/config.json b/apps/logto/config.json index 6d2b74a3..538728ab 100644 --- a/apps/logto/config.json +++ b/apps/logto/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "logto", - "tipi_version": 8, - "version": "1.9.0", + "tipi_version": 10, + "version": "1.10.0", "force_expose": true, "categories": [ "security" diff --git a/apps/logto/docker-compose.yml b/apps/logto/docker-compose.yml index 0c767287..1ecbab4c 100644 --- a/apps/logto/docker-compose.yml +++ b/apps/logto/docker-compose.yml @@ -4,7 +4,7 @@ services: depends_on: logto-db: condition: service_healthy - image: svhd/logto:1.9.0 + image: svhd/logto:1.10.0 container_name: logto entrypoint: ["sh", "-c", "npm run cli db seed -- --swe && npm start"] ports: diff --git a/apps/mastodon/config.json b/apps/mastodon/config.json index 24081b1b..dcf5bbe0 100644 --- a/apps/mastodon/config.json +++ b/apps/mastodon/config.json @@ -7,8 +7,8 @@ "force_expose": true, "generate_vapid_keys": true, "id": "mastodon", - "tipi_version": 7, - "version": "4.1.7", + "tipi_version": 11, + "version": "4.2.1", "categories": [ "social" ], diff --git a/apps/mastodon/docker-compose.yml b/apps/mastodon/docker-compose.yml index 8910834c..fe59e0c8 100644 --- a/apps/mastodon/docker-compose.yml +++ b/apps/mastodon/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: mastodon: container_name: mastodon - image: lscr.io/linuxserver/mastodon:4.1.7 + image: lscr.io/linuxserver/mastodon:4.2.1 ports: - 8209:80 - ${APP_PORT}:443 diff --git a/apps/memos/config.json b/apps/memos/config.json index 829e1d6f..b59e5930 100644 --- a/apps/memos/config.json +++ b/apps/memos/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 5230, "id": "memos", - "tipi_version": 15, - "version": "0.15.1", + "tipi_version": 18, + "version": "0.16.1", "categories": [ "utilities" ], diff --git a/apps/memos/docker-compose.yml b/apps/memos/docker-compose.yml index d3771002..e45c6b9d 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.15.1 + image: neosmemo/memos:0.16.1 container_name: memos volumes: - ${APP_DATA_DIR}/memos:/var/opt/memos diff --git a/apps/monerod/config.json b/apps/monerod/config.json index 64231181..74f17a64 100644 --- a/apps/monerod/config.json +++ b/apps/monerod/config.json @@ -6,9 +6,11 @@ "no_gui": true, "port": 18080, "id": "monerod", - "tipi_version": 7, - "version": "0.18.2.2", - "categories": ["finance"], + "tipi_version": 8, + "version": "0.18.3.1", + "categories": [ + "finance" + ], "description": "A device on the Internet running the Monero software, with a full copy of the Monero blockchain, actively assisting the Monero network. This is a simple and straightforward Dockerized monerod built from source and exposing standard ports. Please note that running this requires >50GB of free disk space and is best run on solid-state (SSD) storage.", "short_desc": "Monero is a private, decentralized cryptocurrency that keeps your finances confidential and secure.", "author": "sethforprivacy", diff --git a/apps/monerod/docker-compose.yml b/apps/monerod/docker-compose.yml index e81ff394..ea90c3c9 100644 --- a/apps/monerod/docker-compose.yml +++ b/apps/monerod/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: monerod: - image: sethsimmons/simple-monerod:v0.18.2.2 + image: sethsimmons/simple-monerod:v0.18.3.1 dns: - ${DNS_IP} ports: diff --git a/apps/mongo-express/config.json b/apps/mongo-express/config.json new file mode 100644 index 00000000..d65e3eba --- /dev/null +++ b/apps/mongo-express/config.json @@ -0,0 +1,49 @@ +{ + "$schema": "../schema.json", + "name": "Mongo Express", + "id": "mongo-express", + "available": true, + "short_desc": "Web-based MongoDB admin interface, written with Node.js and Express", + "author": "MongoDB", + "port": 8087, + "categories": ["development", "data"], + "description": "A web-based MongoDB admin interface written with Node.js, Express, and Bootstrap3", + "tipi_version": 1, + "version": "1.0.0", + "source": "https://github.com/mongo-express/mongo-express", + "website": "https://www.mongodb.com/", + "form_fields": [ + { + "type": "text", + "label": "MongoDB Admin Username", + "max": 50, + "min": 3, + "required": true, + "env_variable": "ME_CONFIG_MONGODB_ADMINUSERNAME" + }, + { + "type": "password", + "label": "MongoDB Admin Password", + "max": 50, + "min": 10, + "required": true, + "env_variable": "ME_CONFIG_MONGODB_ADMINPASSWORD" + }, + { + "type": "text", + "label": "Mongo Express Web Username", + "max": 50, + "min": 3, + "required": true, + "env_variable": "ME_CONFIG_BASICAUTH_USERNAME" + }, + { + "type": "password", + "label": "Mongo Express Web Password", + "max": 50, + "min": 10, + "required": true, + "env_variable": "ME_CONFIG_BASICAUTH_PASSWORD" + } + ] +} diff --git a/apps/mongo-express/docker-compose.yml b/apps/mongo-express/docker-compose.yml new file mode 100644 index 00000000..752f9c73 --- /dev/null +++ b/apps/mongo-express/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3.8" +services: + mongo-express: + container_name: mongo-express + image: mongo-express:1.0.0 + restart: unless-stopped + ports: + - ${APP_PORT}:8081 + networks: + - tipi_main_network + environment: + - ME_CONFIG_MONGODB_SERVER=mongo + - ME_CONFIG_MONGODB_ENABLE_ADMIN=true + - ME_CONFIG_MONGODB_ADMINUSERNAME=${ME_CONFIG_MONGODB_ADMINUSERNAME} + - ME_CONFIG_MONGODB_ADMINPASSWORD=${ME_CONFIG_MONGODB_ADMINPASSWORD} + - ME_CONFIG_BASICAUTH_USERNAME=${ME_CONFIG_BASICAUTH_USERNAME} + - ME_CONFIG_BASICAUTH_PASSWORD=${ME_CONFIG_BASICAUTH_PASSWORD} + labels: + # Main + traefik.enable: true + traefik.http.middlewares.mongo-express-web-redirect.redirectscheme.scheme: https + traefik.http.services.mongo-express.loadbalancer.server.port: 8081 + # Web + traefik.http.routers.mongo-express-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.mongo-express-insecure.entrypoints: web + traefik.http.routers.mongo-express-insecure.service: mongo-express + traefik.http.routers.mongo-express-insecure.middlewares: mongo-express-web-redirect + # Websecure + traefik.http.routers.mongo-express.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.mongo-express.entrypoints: websecure + traefik.http.routers.mongo-express.service: mongo-express + traefik.http.routers.mongo-express.tls.certresolver: myresolver + # Local domain + traefik.http.routers.mongo-express-local-insecure.rule: Host(`mongo-express.${LOCAL_DOMAIN}`) + traefik.http.routers.mongo-express-local-insecure.entrypoints: web + traefik.http.routers.mongo-express-local-insecure.service: mongo-express + traefik.http.routers.mongo-express-local-insecure.middlewares: mongo-express-web-redirect + # Local domain secure + traefik.http.routers.mongo-express-local.rule: Host(`mongo-express.${LOCAL_DOMAIN}`) + traefik.http.routers.mongo-express-local.entrypoints: websecure + traefik.http.routers.mongo-express-local.service: mongo-express + traefik.http.routers.mongo-express-local.tls: true diff --git a/apps/mongo-express/metadata/description.md b/apps/mongo-express/metadata/description.md new file mode 100644 index 00000000..84fa25b5 --- /dev/null +++ b/apps/mongo-express/metadata/description.md @@ -0,0 +1,28 @@ +# mongo-express + +A web-based MongoDB admin interface written with Node.js, Express, and Bootstrap3 + +## Features +- Connect to multiple databases +- View/add/delete databases +- View/add/rename/delete collections +- View/add/update/delete documents +- Preview audio/video/image assets inline in the collection view +- Nested and/or large objects are collapsible for easy overview +- Async on-demand loading of big document properties (>100KB default) to keep collection view fast +- GridFS support - add/get/delete incredibly large files +- Use BSON data types in documents +- Mobile / Responsive - Bootstrap 3 works passably on small screens when you're in a bind +- Connect and authenticate to individual databases +- Authenticate as admin to view all databases +- Database blacklist/whitelist +- Custom CA and CA validation disabling +- Supports replica sets + +## Screenshots + +|Home Page|Database View|Collection View|Editing A Document| +|---|---|---|---| +|[![](https://camo.githubusercontent.com/bf9f84dbe8904f11cf1feee1257c384fc370f74b91aec78a27109466938c5676/687474703a2f2f692e696d6775722e636f6d2f58695968626c412e706e67 "Home Page showing databases")](https://camo.githubusercontent.com/bf9f84dbe8904f11cf1feee1257c384fc370f74b91aec78a27109466938c5676/687474703a2f2f692e696d6775722e636f6d2f58695968626c412e706e67)|[![](https://camo.githubusercontent.com/6933157b5afc955b83ed44edb82c87f9ce88e358515adc23d133cf7034dff0a1/687474703a2f2f692e696d6775722e636f6d2f585763496759312e706e67 "Viewing collections & buckets in a database")](https://camo.githubusercontent.com/6933157b5afc955b83ed44edb82c87f9ce88e358515adc23d133cf7034dff0a1/687474703a2f2f692e696d6775722e636f6d2f585763496759312e706e67)|[![](https://camo.githubusercontent.com/0d117c0fefa49f0f9d72d68633876694f6cc887915b26375375c073cc3b559d4/68747470733a2f2f696d6775722e636f6d2f556d47537233782e706e67 "Viewing documents in a collection")](https://camo.githubusercontent.com/0d117c0fefa49f0f9d72d68633876694f6cc887915b26375375c073cc3b559d4/68747470733a2f2f696d6775722e636f6d2f556d47537233782e706e67)|[![](https://camo.githubusercontent.com/7e5c4cea092e84aedb38a5a39acc86e4d69040a0fe8389ed22d705fc25833985/68747470733a2f2f696d6775722e636f6d2f6c4c333861626e2e706e67 "Editing a document")](https://camo.githubusercontent.com/7e5c4cea092e84aedb38a5a39acc86e4d69040a0fe8389ed22d705fc25833985/68747470733a2f2f696d6775722e636f6d2f6c4c333861626e2e706e67)| + +These screenshots are from version 0.30.40 View the album for more screenshots: (server status, database views, etc..)Β [https://imgur.com/a/9vHsF](https://imgur.com/a/9vHsF) \ No newline at end of file diff --git a/apps/mongo-express/metadata/logo.jpg b/apps/mongo-express/metadata/logo.jpg new file mode 100644 index 00000000..820cfa0d Binary files /dev/null and b/apps/mongo-express/metadata/logo.jpg differ diff --git a/apps/mongo/config.json b/apps/mongo/config.json new file mode 100644 index 00000000..d8da7ade --- /dev/null +++ b/apps/mongo/config.json @@ -0,0 +1,38 @@ +{ + "$schema": "../schema.json", + "name": "MongoDB", + "id": "mongo", + "available": true, + "short_desc": "MongoDB is an open-source NoSQL database", + "author": "MongoDB", + "port": 27017, + "categories": [ + "development", + "data" + ], + "description": "MongoDB is an open-source document-oriented database that is designed to store a large scale of data and also allows you to work with that data very efficiently. It is categorized under the NoSQL (Not only SQL) database because the storage and retrieval of data in the MongoDB are not in the form of tables.", + "tipi_version": 1, + "version": "7.0.2", + "source": "https://github.com/mongodb/mongo", + "website": "https://www.mongodb.com/", + "exposable": true, + "no_gui": true, + "form_fields": [ + { + "type": "text", + "label": "Admin Username", + "max": 50, + "min": 3, + "required": true, + "env_variable": "MONGO_INITDB_ROOT_USERNAME" + }, + { + "type": "password", + "label": "Admin Password", + "max": 50, + "min": 10, + "required": true, + "env_variable": "MONGO_INITDB_ROOT_PASSWORD" + } + ] +} diff --git a/apps/mongo/docker-compose.yml b/apps/mongo/docker-compose.yml new file mode 100644 index 00000000..576e2ba6 --- /dev/null +++ b/apps/mongo/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.8" +services: + mongo: + container_name: mongo + image: mongo:7.0.2 + restart: unless-stopped + ports: + - ${APP_PORT}:27017 + networks: + - tipi_main_network + environment: + - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME} + - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD} + labels: + # Main + traefik.enable: true + traefik.http.middlewares.mongo-web-redirect.redirectscheme.scheme: https + traefik.http.services.mongo.loadbalancer.server.port: 27017 + # Web + traefik.http.routers.mongo-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.mongo-insecure.entrypoints: web + traefik.http.routers.mongo-insecure.service: mongo + traefik.http.routers.mongo-insecure.middlewares: mongo-web-redirect + # Websecure + traefik.http.routers.mongo.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.mongo.entrypoints: websecure + traefik.http.routers.mongo.service: mongo + traefik.http.routers.mongo.tls.certresolver: myresolver + # Local domain + traefik.http.routers.mongo-local-insecure.rule: Host(`mongo.${LOCAL_DOMAIN}`) + traefik.http.routers.mongo-local-insecure.entrypoints: web + traefik.http.routers.mongo-local-insecure.service: mongo + traefik.http.routers.mongo-local-insecure.middlewares: mongo-web-redirect + # Local domain secure + traefik.http.routers.mongo-local.rule: Host(`mongo.${LOCAL_DOMAIN}`) + traefik.http.routers.mongo-local.entrypoints: websecure + traefik.http.routers.mongo-local.service: mongo + traefik.http.routers.mongo-local.tls: true diff --git a/apps/mongo/metadata/description.md b/apps/mongo/metadata/description.md new file mode 100644 index 00000000..dafaeec8 --- /dev/null +++ b/apps/mongo/metadata/description.md @@ -0,0 +1,74 @@ +# MongoDB +MongoDB is an open-source document-oriented database that is designed to store a large scale of data and also allows you to work with that data very efficiently. It is categorized under the NoSQL (Not only SQL) database because the storage and retrieval of data in the MongoDB are not in the form of tables.Β  + +The MongoDB database is developed and managed by MongoDB.Inc under SSPL(Server Side Public License) and initially released in February 2009. It also provides official driver support for all the popular languages like C, C++, C#, and .Net, Go, Java, Node.js, Perl, PHP, Python, Motor, Ruby, Scala, Swift, Mongoid. So, that you can create an application using any of these languages. Nowadays there are so many companies that used MongoDB like Facebook, Nokia, eBay, Adobe, Google, etc. to store their large amount of data.Β  + +## How it works ? + +Now, we will see how actually thing happens behind the scene. As we know that MongoDB is a database server and the data is stored in these databases. Or in other words, MongoDB environment gives you a server that you can start and then create multiple databases on it using MongoDB.Β  +Because of its NoSQL database, the data is stored in the collections and documents. Hence the database, collection, and documents are related to each other as shown below:Β  +Β  + +![mongodb-nosql-working](https://media.geeksforgeeks.org/wp-content/uploads/20200127193216/mongodb-nosql-working.jpg) + +- The MongoDB database contains collections just like the MYSQL database contains tables. You are allowed to create multiple databases and multiple collections. +- Now inside of the collection we have documents. These documents contain the data we want to store in the MongoDB database and a single collection can contain multiple documents and you are schema-less means it is not necessary that one document is similar to another. +- The documents are created using the fields. Fields are key-value pairs in the documents, it is just like columns in the relation database. The value of the fields can be of any BSON data types like double, string, boolean, etc. +- The data stored in the MongoDB is in the format of BSON documents. Here, BSON stands for Binary representation of JSON documents. Or in other words, in the backend, the MongoDB server converts the JSON data into a binary form that is known as BSON and this BSON is stored and queried more efficiently. +- In MongoDB documents, you are allowed to store nested data. This nesting of data allows you to create complex relations between data and store them in the same document which makes the working and fetching of data extremely efficient as compared to SQL. In SQL, you need to write complex joins to get the data from table 1 and table 2. The maximum size of the BSON document is 16MB. + +**NOTE:**Β In MongoDB server, you are allowed to run multiple databases.Β  + +For example, we have a database named GeeksforGeeks. Inside this database, we have two collections and in these collections we have two documents. And in these documents we store our data in the form of fields. As shown in the below image:Β  +Β  + +![](https://media.geeksforgeeks.org/wp-content/uploads/20200123222337/Untitled-Diagram-57.jpg) + +**How mongoDB is different from RDBMS ?**Β  +Some major differences in between MongoDB and the RDBMS are as follows:Β  +Β  + +|MongoDB|RDBMS| +|---|---| +|It is a non-relational and document-oriented database.|It is a relational database.| +|It is suitable for hierarchical data storage.|It is not suitable for hierarchical data storage.| +|It has a dynamic schema.|It has a predefined schema.| +|It centers around the CAP theorem (Consistency, Availability, and Partition tolerance).|It centers around ACID properties (Atomicity, Consistency, Isolation, and Durability).| +|In terms of performance, it is much faster than RDBMS.|In terms of performance, it is slower than MongoDB.| +||| + +## Features of MongoDB – + +- **Schema-less Database:**Β It is the great feature provided by the MongoDB. A Schema-less database means one collection can hold different types of documents in it. Or in other words, in the MongoDB database, a single collection can hold multiple documents and these documents may consist of the different numbers of fields, content, and size. It is not necessary that the one document is similar to another document like in the relational databases. Due to this cool feature, MongoDB provides great flexibility to databases. +- **Document Oriented:**Β In MongoDB, all the data stored in the documents instead of tables like in RDBMS. In these documents, the data is stored in fields(key-value pair) instead of rows and columns which make the data much more flexible in comparison to RDBMS. And each document contains its unique object id. +- **Indexing:**Β In MongoDB database, every field in the documents is indexed with primary and secondary indices this makes easier and takes less time to get or search data from the pool of the data. If the data is not indexed, then database search each document with the specified query which takes lots of time and not so efficient. +- **Scalability:**Β MongoDB provides horizontal scalability with the help of sharding. Sharding means to distribute data on multiple servers, here a large amount of data is partitioned into data chunks using the shard key, and these data chunks are evenly distributed across shards that reside across many physical servers. It will also add new machines to a running database. +- **Replication:**Β MongoDB provides high availability and redundancy with the help of replication, it creates multiple copies of the data and sends these copies to a different server so that if one server fails, then the data is retrieved from another server. +- **Aggregation:**Β It allows to perform operations on the grouped data and get a single result or computed result. It is similar to the SQL GROUPBY clause. It provides three different aggregations i.e, aggregation pipeline, map-reduce function, and single-purpose aggregation methods +- **High Performance:**Β The performance of MongoDB is very high and data persistence as compared to another database due to its features like scalability, indexing, replication, etc. + +**Advantages of MongoDB :**Β  +Β  + +- It is a schema-less NoSQL database. You need not to design the schema of the database when you are working with MongoDB. +- It does not support join operation. +- It provides great flexibility to the fields in the documents. +- It contains heterogeneous data. +- It provides high performance, availability, scalability. +- It supports Geospatial efficiently. +- It is a document oriented database and the data is stored in BSON documents. +- It also supports multiple document ACID transition(string from MongoDB 4.0). +- It does not require any SQL injection. +- It is easily integrated with Big Data Hadoop + +**Disadvantages of MongoDB :**Β  +Β  + +- It uses high memory for data storage. +- You are not allowed to store more than 16MB data in the documents. +- The nesting of data in BSON is also limited you are not allowed to nest data more than 100 levels. + +## Learn MongoDB +- Documentation -Β [https://docs.mongodb.com/manual/](https://docs.mongodb.com/manual/) +- Developer Center -Β [https://www.mongodb.com/developer/](https://www.mongodb.com/developer/) +- MongoDB University -Β [https://learn.mongodb.com](https://learn.mongodb.com/) \ No newline at end of file diff --git a/apps/mongo/metadata/logo.jpg b/apps/mongo/metadata/logo.jpg new file mode 100644 index 00000000..a57bcc1c Binary files /dev/null and b/apps/mongo/metadata/logo.jpg differ diff --git a/apps/movary/config.json b/apps/movary/config.json index 20399147..980b98a8 100644 --- a/apps/movary/config.json +++ b/apps/movary/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "movary", - "tipi_version": 25, - "version": "0.58.0", + "tipi_version": 26, + "version": "0.59.0", "categories": [ "media" ], diff --git a/apps/movary/docker-compose.yml b/apps/movary/docker-compose.yml index e9d371c2..5d5a396b 100644 --- a/apps/movary/docker-compose.yml +++ b/apps/movary/docker-compose.yml @@ -2,7 +2,7 @@ version: "3" services: movary: - image: leepeuker/movary:0.58.0 + image: leepeuker/movary:0.59.0 container_name: movary user: ${TIPI_UID}:${TIPI_GID} group_add: @@ -56,7 +56,7 @@ services: traefik.http.routers.movary-local.tls: true movary-migration: - image: leepeuker/movary:0.58.0 + image: leepeuker/movary:0.59.0 container_name: movary-migration command: php bin/console.php database:migration:migrate user: ${TIPI_UID}:${TIPI_GID} diff --git a/apps/netdata/config.json b/apps/netdata/config.json new file mode 100644 index 00000000..d1c4e7d9 --- /dev/null +++ b/apps/netdata/config.json @@ -0,0 +1,18 @@ +{ + "name": "Netdata", + "available": true, + "port": 19999, + "exposable": true, + "id": "netdata", + "description": "Stream any metrics from every physical and virtual server, container and IoT device, to one dashboard, in real-time.", + "tipi_version": 3, + "version": "1.43.1", + "categories": [ + "utilities" + ], + "short_desc": "Open-source, real-time, performance and health monitoring.", + "author": "netdata", + "source": "https://github.com/netdata/netdata", + "website": "https://www.netdata.cloud/", + "form_fields": [] +} diff --git a/apps/netdata/docker-compose.yml b/apps/netdata/docker-compose.yml new file mode 100644 index 00000000..d895178d --- /dev/null +++ b/apps/netdata/docker-compose.yml @@ -0,0 +1,51 @@ +version: "3.7" +services: + netdata: + image: netdata/netdata:v1.43.1 + container_name: netdata + pid: host + restart: unless-stopped + cap_add: + - SYS_PTRACE + - SYS_ADMIN + security_opt: + - apparmor:unconfined + ports: + - ${APP_PORT}:19999 + volumes: + - ${APP_DATA_DIR}/data/config:/etc/netdata + - ${APP_DATA_DIR}/data/lib:/var/lib/netdata + - ${APP_DATA_DIR}/data/cache:/var/cache/netdata + - /etc/passwd:/host/etc/passwd:ro + - /etc/group:/host/etc/group:ro + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /etc/os-release:/host/etc/os-release:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.netdata-web-redirect.redirectscheme.scheme: https + traefik.http.services.netdata.loadbalancer.server.port: 19999 + # Web + traefik.http.routers.netdata-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.netdata-insecure.entrypoints: web + traefik.http.routers.netdata-insecure.service: netdata + traefik.http.routers.netdata-insecure.middlewares: netdata-web-redirect + # Websecure + traefik.http.routers.netdata.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.netdata.entrypoints: websecure + traefik.http.routers.netdata.service: netdata + traefik.http.routers.netdata.tls.certresolver: myresolver + # Local domain + traefik.http.routers.netdata-local-insecure.rule: Host(`netdata.${LOCAL_DOMAIN}`) + traefik.http.routers.netdata-local-insecure.entrypoints: web + traefik.http.routers.netdata-local-insecure.service: netdata + traefik.http.routers.netdata-local-insecure.middlewares: netdata-web-redirect + # Local domain secure + traefik.http.routers.netdata-local.rule: Host(`netdata.${LOCAL_DOMAIN}`) + traefik.http.routers.netdata-local.entrypoints: websecure + traefik.http.routers.netdata-local.service: netdata + traefik.http.routers.netdata-local.tls: true diff --git a/apps/netdata/metadata/description.md b/apps/netdata/metadata/description.md new file mode 100644 index 00000000..c4520591 --- /dev/null +++ b/apps/netdata/metadata/description.md @@ -0,0 +1,31 @@ +Netdata collects metrics per second and presents them in beautiful low-latency dashboards. It is designed to run on all of your physical and virtual servers, cloud deployments, Kubernetes clusters, and edge/IoT devices, to monitor your systems, containers, and applications. + +It scales nicely from just a single server to thousands of servers, even in complex multi/mixed/hybrid cloud environments, and given enough disk space it can keep your metrics for years. + +**KEY FEATURES**:
+ +- πŸ’₯ **Collects metrics from 800+ integrations**
+ Operating system metrics, container metrics, virtual machines, hardware sensors, applications metrics, OpenMetrics exporters, StatsD, and logs. + +- πŸ’ͺ **Real-Time, Low-Latency, High-Resolution**
+ All metrics are collected per second and are on the dashboard immediately after data collection. Netdata is designed to be fast. + +- πŸ˜Άβ€πŸŒ«οΈ **Unsupervised Anomaly Detection**
+ Trains multiple Machine-Learning (ML) models for each metric collected and detects anomalies based on the past behavior of each metric individually. + +- πŸ”₯ **Powerful Visualization**
+ Clear and precise visualization that allows you to quickly understand any dataset, but also to filter, slice and dice the data directly on the dashboard, without the need to learn any query language. + +- πŸ”” **Out of box Alerts**
+ Comes with hundreds of alerts out of the box to detect common issues and pitfalls, revealing issues that can easily go unnoticed. It supports several notification methods to let you know when your attention is needed. + +- πŸ“– **systemd Journal Logs Explorer** (beta, in the nightly release channel)
+ Provides a `systemd` journal logs explorer, to view, filter and analyze system and applications logs by directly accessing `systemd` journal files on individual hosts and infrastructure-wide logs centralization servers. + +- 😎 **Low Maintenance**
+ Fully automated in every aspect: automated dashboards, out-of-the-box alerts, auto-detection and auto-discovery of metrics, zero-touch machine-learning, easy scalability and high availability, and CI/CD friendly. + +- ⭐ **Open and Extensible**
+ Netdata is a modular platform that can be extended in all possible ways and it also integrates nicely with other monitoring solutions. + +--- \ No newline at end of file diff --git a/apps/netdata/metadata/logo.jpg b/apps/netdata/metadata/logo.jpg new file mode 100644 index 00000000..0e6862fb Binary files /dev/null and b/apps/netdata/metadata/logo.jpg differ diff --git a/apps/nextcloud/config.json b/apps/nextcloud/config.json index 56924ee1..4c7b020a 100644 --- a/apps/nextcloud/config.json +++ b/apps/nextcloud/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8083, "id": "nextcloud", - "tipi_version": 16, - "version": "25.0.11-apache", + "tipi_version": 18, + "version": "25.0.13-apache", "categories": [ "data" ], diff --git a/apps/nextcloud/docker-compose.yml b/apps/nextcloud/docker-compose.yml index 2e3d4124..94c121a8 100644 --- a/apps/nextcloud/docker-compose.yml +++ b/apps/nextcloud/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.7" services: nextcloud: container_name: nextcloud - image: nextcloud:25.0.11-apache + image: nextcloud:25.0.13-apache restart: unless-stopped ports: - ${APP_PORT}:80 @@ -69,7 +69,7 @@ services: - tipi_main_network cron: - image: nextcloud:25.0.11-apache + image: nextcloud:25.0.13-apache restart: on-failure volumes: - ${APP_DATA_DIR}/data/nextcloud:/var/www/html diff --git a/apps/nocodb/config.json b/apps/nocodb/config.json index 23249cc4..090fdb9e 100644 --- a/apps/nocodb/config.json +++ b/apps/nocodb/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "nocodb", - "tipi_version": 23, - "version": "0.111.4", + "tipi_version": 25, + "version": "0.202.5", "categories": [ "utilities" ], diff --git a/apps/nocodb/docker-compose.yml b/apps/nocodb/docker-compose.yml index 497ffe28..155aaa92 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.111.4" + image: "nocodb/nocodb:0.202.5" ports: - "${APP_PORT}:8080" restart: always diff --git a/apps/notemark/config.json b/apps/notemark/config.json new file mode 100644 index 00000000..8ca28438 --- /dev/null +++ b/apps/notemark/config.json @@ -0,0 +1,25 @@ +{ + "$schema": "../schema.json", + "name": "Notemark", + "available": true, + "exposable": true, + "port": 8567, + "id": "notemark", + "tipi_version": 3, + "version": "0.8.0", + "categories": [ + "utilities" + ], + "description": "Note Mark is a lighting fast and minimal web-based Markdown notes app.", + "short_desc": "Lighting fast web-based Markdown notes app.", + "author": "enchant97", + "source": "https://github.com/enchant97/note-mark/", + "website": "https://notemark.docs.enchantedcode.co.uk/", + "form_fields": [ + { + "type": "random", + "label": "Notemark secret", + "env_variable": "NOTEMARK_SERVICE_SECRET" + } + ] +} diff --git a/apps/notemark/data/proxy/nginx.conf b/apps/notemark/data/proxy/nginx.conf new file mode 100644 index 00000000..f0a1a31a --- /dev/null +++ b/apps/notemark/data/proxy/nginx.conf @@ -0,0 +1,19 @@ +upstream notemark-backend { + server notemark-backend:8000; +} + +upstream notemark { + server notemark:8000; +} + +server { + listen 80; + + location / { + proxy_pass http://notemark; + } + + location /api { + proxy_pass http://notemark-backend/api; + } +} \ No newline at end of file diff --git a/apps/notemark/docker-compose.yml b/apps/notemark/docker-compose.yml new file mode 100644 index 00000000..9f1291f2 --- /dev/null +++ b/apps/notemark/docker-compose.yml @@ -0,0 +1,58 @@ +version: "3.7" +services: + notemark-proxy: + container_name: notemark-proxy + image: nginx:alpine + ports: + - ${APP_PORT}:80 + volumes: + - ${APP_DATA_DIR}/data/proxy/nginx.conf:/etc/nginx/conf.d/default.conf:ro + restart: unless-stopped + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.notemark-web-redirect.redirectscheme.scheme: https + traefik.http.services.notemark.loadbalancer.server.port: 80 + # Web + traefik.http.routers.notemark-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.notemark-insecure.entrypoints: web + traefik.http.routers.notemark-insecure.service: notemark + traefik.http.routers.notemark-insecure.middlewares: notemark-web-redirect + # Websecure + traefik.http.routers.notemark.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.notemark.entrypoints: websecure + traefik.http.routers.notemark.service: notemark + traefik.http.routers.notemark.tls.certresolver: myresolver + # Local domain + traefik.http.routers.notemark-local-insecure.rule: Host(`notemark.${LOCAL_DOMAIN}`) + traefik.http.routers.notemark-local-insecure.entrypoints: web + traefik.http.routers.notemark-local-insecure.service: notemark + traefik.http.routers.notemark-local-insecure.middlewares: notemark-web-redirect + # Local domain secure + traefik.http.routers.notemark-local.rule: Host(`notemark.${LOCAL_DOMAIN}`) + traefik.http.routers.notemark-local.entrypoints: websecure + traefik.http.routers.notemark-local.service: notemark + traefik.http.routers.notemark-local.tls: true + + notemark-backend: + image: ghcr.io/enchant97/note-mark-backend:0.8.0 + container_name: notemark-backend + restart: unless-stopped + networks: + - tipi_main_network + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + JWT_SECRET: "${NOTEMARK_SERVICE_SECRET}" + CORS_ORIGINS: "*" + + notemark: + image: ghcr.io/enchant97/note-mark-frontend:0.8.0 + container_name: notemark + restart: unless-stopped + networks: + - tipi_main_network + + diff --git a/apps/notemark/metadata/description.md b/apps/notemark/metadata/description.md new file mode 100644 index 00000000..018bc4b2 --- /dev/null +++ b/apps/notemark/metadata/description.md @@ -0,0 +1,19 @@ +# Note Mark + +Note Mark is a lighting fast and minimal; web-based Markdown notes app. Featuring a sleek and responsive web UI. + +## Features +- Markdown (GitHub Flavored Markdown, see spec [here](https://github.github.com/gfm/)) +- HTML sanitisation, minimizing XSS attacks +- Mobile Friendly +- Friendly "Slug" based URLs for cleaner links +- Dark & Light Theme +- Notebook Sharing +- Custom flat-file based storage system (easy to backup and synchronize) +- Multiple views for a note (rendered, plain) +- Editor with shortcuts + +## Docs +Documentation is available here: [notemark.docs.enchantedcode.co.uk](https://notemark.docs.enchantedcode.co.uk/). + +> Checkout [here](https://github.com/enchant97/note-mark/issues/47) for the roadmap. diff --git a/apps/notemark/metadata/logo.jpg b/apps/notemark/metadata/logo.jpg new file mode 100644 index 00000000..44f61a28 Binary files /dev/null and b/apps/notemark/metadata/logo.jpg differ diff --git a/apps/ntfy/config.json b/apps/ntfy/config.json new file mode 100644 index 00000000..5d038ee8 --- /dev/null +++ b/apps/ntfy/config.json @@ -0,0 +1,17 @@ +{ + "$schema": "../schema.json", + "name": "Ntfy", + "available": true, + "exposable": true, + "port": 8166, + "id": "ntfy", + "tipi_version": 1, + "version": "2.7.0", + "categories": ["utilities"], + "description": "Send push notifications to any devices using a simple HTTP PUT or POST request.", + "short_desc": "Ntfy, a simple server for sending and receiving notification messages.", + "author": "https://github.com/binwiederhier", + "source": "https://github.com/binwiederhier/ntfy", + "website": "https://ntfy.sh/", + "form_fields": [] +} diff --git a/apps/ntfy/docker-compose.yml b/apps/ntfy/docker-compose.yml new file mode 100644 index 00000000..28345654 --- /dev/null +++ b/apps/ntfy/docker-compose.yml @@ -0,0 +1,43 @@ +version: '3.7' + +services: + ntfy: + container_name: ntfy + image: binwiederhier/ntfy:v2.7.0 + environment: + - NTFY_BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN} + - NTFY_UPSTREAM_BASE_URL=https://ntfy.sh + command: serve + volumes: + - '${APP_DATA_DIR}/data/cache:/var/cache/ntfy' + - '${APP_DATA_DIR}/data/config:/etc/ntfy' + ports: + - ${APP_PORT}:80 + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.ntfy-web-redirect.redirectscheme.scheme: https + traefik.http.services.ntfy.loadbalancer.passhostheader: true + traefik.http.services.ntfy.loadbalancer.server.port: 80 + # Web + traefik.http.routers.ntfy-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.ntfy-insecure.entrypoints: web + traefik.http.routers.ntfy-insecure.service: ntfy + traefik.http.routers.ntfy-insecure.middlewares: ntfy-web-redirect + # Websecure + traefik.http.routers.ntfy.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.ntfy.entrypoints: websecure + traefik.http.routers.ntfy.service: ntfy + traefik.http.routers.ntfy.tls.certresolver: myresolver + # Local domain + traefik.http.routers.ntfy-local-insecure.rule: Host(`ntfy.${LOCAL_DOMAIN}`) + traefik.http.routers.ntfy-local-insecure.entrypoints: web + traefik.http.routers.ntfy-local-insecure.service: ntfy + traefik.http.routers.ntfy-local-insecure.middlewares: ntfy-web-redirect + # Local domain secure + traefik.http.routers.ntfy-local.rule: Host(`ntfy.${LOCAL_DOMAIN}`) + traefik.http.routers.ntfy-local.entrypoints: websecure + traefik.http.routers.ntfy-local.service: ntfy + traefik.http.routers.ntfy-local.tls: true diff --git a/apps/ntfy/metadata/description.md b/apps/ntfy/metadata/description.md new file mode 100644 index 00000000..35853ce2 --- /dev/null +++ b/apps/ntfy/metadata/description.md @@ -0,0 +1,3 @@ +# Ntfy: HTTP-Based Notification Service + +ntfy (pronounced as 'notify') is a straightforward pub-sub notification service that operates over HTTP. It facilitates the seamless transmission of notifications to your phone or desktop through scripts from any machine, completely free of charge and without the requirement of registration. Furthermore, its open-source nature (as evidenced here) allows you the option to host your own instance. diff --git a/apps/ntfy/metadata/logo.jpg b/apps/ntfy/metadata/logo.jpg new file mode 100644 index 00000000..ea7b4917 Binary files /dev/null and b/apps/ntfy/metadata/logo.jpg differ diff --git a/apps/onedev/config.json b/apps/onedev/config.json index edc5f12b..fcdbf9ed 100644 --- a/apps/onedev/config.json +++ b/apps/onedev/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "onedev", - "tipi_version": 47, - "version": "8.6.13", + "tipi_version": 56, + "version": "9.2.3", "categories": [ "development" ], diff --git a/apps/onedev/docker-compose.yml b/apps/onedev/docker-compose.yml index 8bf96d2d..35ad104c 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.13 + image: 1dev/server:9.2.3 container_name: onedev environment: - hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect diff --git a/apps/owncast/metadata/description.md b/apps/owncast/metadata/description.md index 4d8d847c..e9a27f10 100755 --- a/apps/owncast/metadata/description.md +++ b/apps/owncast/metadata/description.md @@ -4,7 +4,7 @@ ### Setting Up an Exposed Instance with SSL Certs As Owncast uses the RTMP protocol for ingesting incoming streams, the typical Cloudflare Zero Access configuration will not work as it does not have RTMP as an option for routing. -You can optionally follow [this guide](https://gist.github.com/HeyOsco/6e8102d7d82ffaeaae16f41bef98b739) for setting up an exposed Owncast server with your RunTipi instance. +You can optionally follow [this guide](https://gist.github.com/oscoDOTblog/6e8102d7d82ffaeaae16f41bef98b739) for setting up an exposed Owncast server with your RunTipi instance. ### Admin Dashboard Access diff --git a/apps/owncloud/config.json b/apps/owncloud/config.json index 8eb17068..406abad9 100644 --- a/apps/owncloud/config.json +++ b/apps/owncloud/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "owncloud", - "tipi_version": 7, - "version": "10.13.1", + "tipi_version": 8, + "version": "10.13.2", "categories": [ "data" ], diff --git a/apps/owncloud/docker-compose.yml b/apps/owncloud/docker-compose.yml index f046ecf4..b463a0fa 100644 --- a/apps/owncloud/docker-compose.yml +++ b/apps/owncloud/docker-compose.yml @@ -2,7 +2,7 @@ version: "3" services: owncloud: - image: owncloud/server:10.13.1 + image: owncloud/server:10.13.2 container_name: owncloud restart: unless-stopped ports: diff --git a/apps/pairdrop/config.json b/apps/pairdrop/config.json index d0d42fff..4b6aea55 100644 --- a/apps/pairdrop/config.json +++ b/apps/pairdrop/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "pairdrop", - "tipi_version": 11, - "version": "1.8.0", + "tipi_version": 18, + "version": "1.9.4", "categories": [ "media", "data", diff --git a/apps/pairdrop/docker-compose.yml b/apps/pairdrop/docker-compose.yml index fab800e0..ee75bb8f 100644 --- a/apps/pairdrop/docker-compose.yml +++ b/apps/pairdrop/docker-compose.yml @@ -2,7 +2,7 @@ version: "3" services: pairdrop: - image: lscr.io/linuxserver/pairdrop:1.8.0 + image: lscr.io/linuxserver/pairdrop:1.9.4 container_name: pairdrop environment: - PUID=1000 diff --git a/apps/pihole/config.json b/apps/pihole/config.json index a7491b2d..249f69d4 100644 --- a/apps/pihole/config.json +++ b/apps/pihole/config.json @@ -10,8 +10,8 @@ ] }, "id": "pihole", - "tipi_version": 9, - "version": "2023.05.2", + "tipi_version": 10, + "version": "2023.10.0", "url_suffix": "/admin", "categories": [ "network", diff --git a/apps/pihole/docker-compose.yml b/apps/pihole/docker-compose.yml index d649eb55..6f7e7767 100644 --- a/apps/pihole/docker-compose.yml +++ b/apps/pihole/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.7" services: pihole: container_name: pihole - image: pihole/pihole:2023.05.2 + image: pihole/pihole:2023.10.0 restart: unless-stopped hostname: pihole dns: diff --git a/apps/planka/config.json b/apps/planka/config.json index 32b0d469..acfa92c6 100644 --- a/apps/planka/config.json +++ b/apps/planka/config.json @@ -5,9 +5,11 @@ "available": true, "exposable": true, "id": "planka", - "tipi_version": 2, - "version": "1.12.0", - "categories": ["development"], + "tipi_version": 5, + "version": "1.14.3", + "categories": [ + "development" + ], "description": "The realtime kanban board for workgroups built with React and Redux.", "short_desc": "Free open source kanban board for workgroups.", "author": "Planka", diff --git a/apps/planka/docker-compose.yml b/apps/planka/docker-compose.yml index cfcf4bd0..e007bdd8 100644 --- a/apps/planka/docker-compose.yml +++ b/apps/planka/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: planka: - image: ghcr.io/plankanban/planka:1.12.0 + image: ghcr.io/plankanban/planka:1.14.3 container_name: planka command: > bash -c diff --git a/apps/portainer/config.json b/apps/portainer/config.json index dadffbe4..10bd46f5 100644 --- a/apps/portainer/config.json +++ b/apps/portainer/config.json @@ -6,8 +6,8 @@ "exposable": true, "https": true, "id": "portainer", - "tipi_version": 13, - "version": "2.19.0-alpine", + "tipi_version": 14, + "version": "2.19.1-alpine", "categories": [ "utilities" ], diff --git a/apps/portainer/docker-compose.yml b/apps/portainer/docker-compose.yml index 12b8352f..ed408238 100644 --- a/apps/portainer/docker-compose.yml +++ b/apps/portainer/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: portainer: - image: portainer/portainer-ce:2.19.0-alpine + image: portainer/portainer-ce:2.19.1-alpine container_name: portainer restart: unless-stopped ports: diff --git a/apps/qbittorrent/config.json b/apps/qbittorrent/config.json index c24ab79c..60566e51 100644 --- a/apps/qbittorrent/config.json +++ b/apps/qbittorrent/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8133, "id": "qbittorrent", - "tipi_version": 8, - "version": "4.5.5", + "tipi_version": 9, + "version": "4.6.0", "categories": [ "utilities" ], diff --git a/apps/qbittorrent/docker-compose.yml b/apps/qbittorrent/docker-compose.yml index 6f67b001..d89b6f21 100644 --- a/apps/qbittorrent/docker-compose.yml +++ b/apps/qbittorrent/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: qbittorrent: - image: lscr.io/linuxserver/qbittorrent:4.5.5 + image: lscr.io/linuxserver/qbittorrent:4.6.0 container_name: qbittorrent dns: - ${DNS_IP} diff --git a/apps/radarr/config.json b/apps/radarr/config.json index 0fabdf4a..69737569 100644 --- a/apps/radarr/config.json +++ b/apps/radarr/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8088, "id": "radarr", - "tipi_version": 9, - "version": "4.7.5", + "tipi_version": 10, + "version": "5.0.3", "categories": [ "media", "utilities" diff --git a/apps/radarr/docker-compose.yml b/apps/radarr/docker-compose.yml index 7a2bd728..3a15eedb 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.7.5 + image: lscr.io/linuxserver/radarr:5.0.3 container_name: radarr environment: - PUID=1000 diff --git a/apps/recyclarr/config.json b/apps/recyclarr/config.json new file mode 100644 index 00000000..55121900 --- /dev/null +++ b/apps/recyclarr/config.json @@ -0,0 +1,24 @@ +{ + "$schema": "../schema.json", + "name": "Recyclarr", + "port": 1111, + "available": true, + "exposable": false, + "no_gui": true, + "uid": 1000, + "gid": 1000, + "id": "recyclarr", + "tipi_version": 11, + "version": "6.0.2", + "categories": [ + "media", + "utilities" + ], + "description": "Automatically sync TRaSH Guides to your Sonarr and Radarr instances", + "short_desc": "Sync TRaSH Guides.", + "author": "rcdailey", + "source": "https://github.com/recyclarr/recyclarr", + "website": "https://recyclarr.dev", + "form_fields": [ + ] +} diff --git a/apps/recyclarr/docker-compose.yml b/apps/recyclarr/docker-compose.yml new file mode 100644 index 00000000..6829dd6e --- /dev/null +++ b/apps/recyclarr/docker-compose.yml @@ -0,0 +1,16 @@ +services: + recyclarr: + user: ${TIPI_UID}:${TIPI_GID} + container_name: recyclarr + image: ghcr.io/recyclarr/recyclarr:6.0.2 + restart: unless-stopped + volumes: + - ${APP_DATA_DIR}/data/config:/config + environment: + - RECYCLARR_CREATE_CONFIG=${RECYCLARR_CREATE_CONFIG-true} + - TZ=${TZ} + networks: + - tipi_main_network + labels: + # Main + traefik.enable: false \ No newline at end of file diff --git a/apps/recyclarr/metadata/description.md b/apps/recyclarr/metadata/description.md new file mode 100644 index 00000000..d16ddfed --- /dev/null +++ b/apps/recyclarr/metadata/description.md @@ -0,0 +1,47 @@ +# TRaSH Guide Updater + +Automatically mirror TRaSH guides to your Sonarr/Radarr instance. + +## Sonarr Features + +### Release Profiles + +- "Preferred", "Must Not Contain", and "Must Contain" terms from guides are reflected in + corresponding release profile fields in Sonarr. +- "Include Preferred when Renaming" is properly checked/unchecked depending on explicit mention of + this in the guides. +- Profiles get created if they do not exist, or updated if they already exist. Profiles get a unique + name based on the guide and this name is used to find them in subsequent runs. +- Tags can be added to any updated or created profiles. +- Ability to convert preferred with negative scores to "Must not contain" terms. +- Terms mentioned as "optional" in the guide are not synced to Sonarr release profiles by default + (can be enabled via config). + +### Quality Definitions + +- Anime and Series (Non-Anime) quality definitions from the guide. +- "Hybrid" type supported that is a mixture of both. + +## Radarr Features + +### Quality Definitions + +- Movie quality definition from the guide + +### Custom Formats + +- A user-specified list of custom formats are synchronized to Radarr from the TRaSH guides. +- Scores from the guides can be synchronized to quality profiles of your choosing. +- User can specify their own scores for custom formats (instead of using the guide score). +- Option to enable automatic deletion custom formats in Radarr when they are removed from config or + the guide. + +--- + +*Important Notices!* + +- > **Note**: For Sonarr updates to work, you must be running version `3.0.4.1098` or greater. + +- > **Note**: Do not run Notifiarr's Trash Guides Integration in conjunction with Trash Updater's + > Custom Format synchronization. In general, you should not have two different tools updating the + > same data in Radarr. \ No newline at end of file diff --git a/apps/recyclarr/metadata/logo.jpg b/apps/recyclarr/metadata/logo.jpg new file mode 100644 index 00000000..c45e8158 Binary files /dev/null and b/apps/recyclarr/metadata/logo.jpg differ diff --git a/apps/revolt/config.json b/apps/revolt/config.json index f63ae3fa..e7b7f298 100644 --- a/apps/revolt/config.json +++ b/apps/revolt/config.json @@ -8,8 +8,8 @@ "generate_vapid_keys": true, "supported_architectures": ["amd64"], "id": "revolt", - "tipi_version": 6, - "version": "1.1.10/20230611-3", + "tipi_version": 13, + "version": "20230810-3", "categories": ["media"], "description": "Open source user-first chat platform.", "short_desc": "Open source user-first chat platform.", diff --git a/apps/rss/config.json b/apps/rss/config.json index 717e4dfc..be323619 100644 --- a/apps/rss/config.json +++ b/apps/rss/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "rss", - "tipi_version": 4, - "version": "1.4.0", + "tipi_version": 6, + "version": "1.4.2", "categories": [ "utilities", "media" diff --git a/apps/rss/docker-compose.yml b/apps/rss/docker-compose.yml index 116bba82..b4c8b0a2 100644 --- a/apps/rss/docker-compose.yml +++ b/apps/rss/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: rss: - image: ghcr.io/ssddanbrown/rss:v1.4.0 + image: ghcr.io/ssddanbrown/rss:v1.4.2 container_name: rss environment: - APP_NAME=Tipi-RSS diff --git a/apps/ryot/config.json b/apps/ryot/config.json index eee78d0b..78373844 100644 --- a/apps/ryot/config.json +++ b/apps/ryot/config.json @@ -5,9 +5,11 @@ "available": true, "exposable": true, "id": "ryot", - "tipi_version": 1, - "version": "v2.17.3", - "categories": ["media"], + "tipi_version": 25, + "version": "2.24.2", + "categories": [ + "media" + ], "description": "Roll your own tracker!", "short_desc": "Roll your own tracker!", "author": "IgnisDa", diff --git a/apps/ryot/docker-compose.yml b/apps/ryot/docker-compose.yml index 7c0871ba..8d3fb855 100644 --- a/apps/ryot/docker-compose.yml +++ b/apps/ryot/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: ryot: - image: ghcr.io/ignisda/ryot:v2.17.3 + image: ghcr.io/ignisda/ryot:v2.24.2 container_name: ryot environment: - DATABASE_URL=postgres://tipi:${RYOT_DB_PASSWORD}@ryot-db:5432/ryot diff --git a/apps/sabnzbd/config.json b/apps/sabnzbd/config.json index fea927e8..01303637 100644 --- a/apps/sabnzbd/config.json +++ b/apps/sabnzbd/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "sabnzbd", - "tipi_version": 7, - "version": "4.0.3", + "tipi_version": 8, + "version": "4.1.0", "categories": [ "media", "utilities" diff --git a/apps/sabnzbd/docker-compose.yml b/apps/sabnzbd/docker-compose.yml index e5f761be..f2b51981 100644 --- a/apps/sabnzbd/docker-compose.yml +++ b/apps/sabnzbd/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: sabnzbd: - image: lscr.io/linuxserver/sabnzbd:4.0.3 + image: lscr.io/linuxserver/sabnzbd:4.1.0 container_name: sabnzbd ports: - ${APP_PORT}:8080 diff --git a/apps/scrypted/config.json b/apps/scrypted/config.json index cb995980..80f47462 100644 --- a/apps/scrypted/config.json +++ b/apps/scrypted/config.json @@ -6,8 +6,8 @@ "exposable": false, "https": true, "id": "scrypted", - "tipi_version": 4, - "version": "18-jammy-full.s6-v0.41.0", + "tipi_version": 5, + "version": "18-jammy-full.s6-v0.57.0", "categories": ["security"], "description": "Scrypted is a high performance home video integration and automation platform", "short_desc": "High performance home video integration and automation platform", diff --git a/apps/scrypted/docker-compose.yml b/apps/scrypted/docker-compose.yml index 732127ee..35980afd 100644 --- a/apps/scrypted/docker-compose.yml +++ b/apps/scrypted/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: scrypted: container_name: scrypted - image: koush/scrypted:18-jammy-full.s6-v0.41.0 + image: koush/scrypted:18-jammy-full.s6-v0.57.0 privileged: true volumes: - ${APP_DATA_DIR}/data/scrypted/database:/server/volume diff --git a/apps/serge/config.json b/apps/serge/config.json new file mode 100644 index 00000000..94de2773 --- /dev/null +++ b/apps/serge/config.json @@ -0,0 +1,18 @@ +{ + "$schema": "../schema.json", + "name": "Serge", + "available": true, + "exposable": true, + "port": 8008, + "id": "serge", + "tipi_version": 2, + "version": "0.5.0", + "categories": [ + "ai" + ], + "description": "", + "short_desc": "LLaMA made easy", + "author": "nsarrazin", + "source": "https://github.com/serge-chat/serge", + "form_fields": [] +} diff --git a/apps/serge/docker-compose.yml b/apps/serge/docker-compose.yml new file mode 100644 index 00000000..2d727421 --- /dev/null +++ b/apps/serge/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" +services: + serge: + image: ghcr.io/serge-chat/serge:0.5.0 + container_name: serge + restart: unless-stopped + ports: + - ${APP_PORT}:8008 + networks: + - tipi_main_network + volumes: + - ${APP_DATA_DIR}/data/weights:/usr/src/app/weights + - ${APP_DATA_DIR}/data/db:/data/db/ + labels: + # Main + traefik.enable: true + traefik.http.middlewares.serge-web-redirect.redirectscheme.scheme: https + traefik.http.services.serge.loadbalancer.server.port: 8008 + # Web + traefik.http.routers.serge-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.serge-insecure.entrypoints: web + traefik.http.routers.serge-insecure.service: serge + traefik.http.routers.serge-insecure.middlewares: serge-web-redirect + # Websecure + traefik.http.routers.serge.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.serge.entrypoints: websecure + traefik.http.routers.serge.service: serge + traefik.http.routers.serge.tls.certresolver: myresolver + # Local domain + traefik.http.routers.serge-local-insecure.rule: Host(`serge.${LOCAL_DOMAIN}`) + traefik.http.routers.serge-local-insecure.entrypoints: web + traefik.http.routers.serge-local-insecure.service: serge + traefik.http.routers.serge-local-insecure.middlewares: serge-web-redirect + # Local domain secure + traefik.http.routers.serge-local.rule: Host(`serge.${LOCAL_DOMAIN}`) + traefik.http.routers.serge-local.entrypoints: websecure + traefik.http.routers.serge-local.service: serge + traefik.http.routers.serge-local.tls: true diff --git a/apps/serge/metadata/description.md b/apps/serge/metadata/description.md new file mode 100644 index 00000000..fd115f73 --- /dev/null +++ b/apps/serge/metadata/description.md @@ -0,0 +1,82 @@ +# Serge - LLaMA made easy πŸ¦™ + +Serge is a chat interface crafted with [llama.cpp](https://github.com/ggerganov/llama.cpp) for running Alpaca models. No API keys, entirely self-hosted! + +- 🌐 **SvelteKit** frontend +- πŸ’Ύ **[Redis](https://github.com/redis/redis)** for storing chat history & parameters +- βš™οΈ **FastAPI + LangChain** for the API, wrapping calls to [llama.cpp](https://github.com/ggerganov/llama.cpp) using the [python bindings](https://github.com/abetlen/llama-cpp-python) + + +## 🧠 Supported Models + +| Category | Models | +|:-------------:|:-------| +| **Alpaca πŸ¦™** | Alpaca-LoRA-65B, GPT4-Alpaca-LoRA-30B | +| **Chronos πŸŒ‘**| Chronos-13B, Chronos-33B, Chronos-Hermes-13B | +| **GPT4All 🌍**| GPT4All-13B | +| **Koala 🐨** | Koala-7B, Koala-13B | +| **LLaMA πŸ¦™** | FinLLaMA-33B, LLaMA-Supercot-30B, LLaMA2 7B, LLaMA2 13B, LLaMA2 70B | +| **Lazarus πŸ’€**| Lazarus-30B | +| **Nous 🧠** | Nous-Hermes-13B | +| **OpenAssistant πŸŽ™οΈ** | OpenAssistant-30B | +| **Orca 🐬** | Orca-Mini-v2-7B, Orca-Mini-v2-13B, OpenOrca-Preview1-13B | +| **Samantha πŸ‘©**| Samantha-7B, Samantha-13B, Samantha-33B | +| **Vicuna πŸ¦™** | Stable-Vicuna-13B, Vicuna-CoT-7B, Vicuna-CoT-13B, Vicuna-v1.1-7B, Vicuna-v1.1-13B, VicUnlocked-30B, VicUnlocked-65B | +| **Wizard πŸ§™** | Wizard-Mega-13B, WizardLM-Uncensored-7B, WizardLM-Uncensored-13B, WizardLM-Uncensored-30B, WizardCoder-Python-13B-V1.0 | + +Additional weights can be added to the `serge_weights` volume using `docker cp`: + +```bash +docker cp ./my_weight.bin serge:/usr/src/app/weights/ +``` + +## ⚠️ Memory Usage + +LLaMA will crash if you don't have enough available memory for the model: + +| Model | Max RAM Required | +|-------------|------------------| +| 7B | 4.5GB | +| 7B-q2_K | 5.37GB | +| 7B-q3_K_L | 6.10GB | +| 7B-q4_1 | 6.71GB | +| 7B-q4_K_M | 6.58GB | +| 7B-q5_1 | 7.56GB | +| 7B-q5_K_M | 7.28GB | +| 7B-q6_K | 8.03GB | +| 7B-q8_0 | 9.66GB | +| 13B | 12GB | +| 13B-q2_K | 8.01GB | +| 13B-q3_K_L | 9.43GB | +| 13B-q4_1 | 10.64GB | +| 13B-q4_K_M | 10.37GB | +| 13B-q5_1 | 12.26GB | +| 13B-q5_K_M | 11.73GB | +| 13B-q6_K | 13.18GB | +| 13B-q8_0 | 16.33GB | +| 33B | 20GB | +| 33B-q2_K | 16.21GB | +| 33B-q3_K_L | 19.78GB | +| 33B-q4_1 | 22.83GB | +| 33B-q4_K_M | 22.12GB | +| 33B-q5_1 | 26.90GB | +| 33B-q5_K_M | 25.55GB | +| 33B-q6_K | 29.19GB | +| 33B-q8_0 | 37.06GB | +| 65B | 50GB | +| 65B-q2_K | 29.95GB | +| 65B-q3_K_L | 37.15GB | +| 65B-q4_1 | 43.31GB | +| 65B-q4_K_M | 41.85GB | +| 65B-q5_1 | 51.47GB | +| 65B-q5_K_M | 48.74GB | +| 65B-q6_K | 56.06GB | +| 65B-q8_0 | 71.87GB | + +## 🧾 License + +[Nathan Sarrazin](https://github.com/nsarrazin) and [Contributors](https://github.com/serge-chat/serge/graphs/contributors). `Serge` is free and open-source software licensed under the [MIT License](https://github.com/serge-chat/serge/blob/master/LICENSE). + +## πŸ’¬ Support + +Need help? Join our [Discord](https://discord.gg/62Hc6FEYQH) diff --git a/apps/serge/metadata/logo.jpg b/apps/serge/metadata/logo.jpg new file mode 100644 index 00000000..76d07404 Binary files /dev/null and b/apps/serge/metadata/logo.jpg differ diff --git a/apps/speedtest-tracker/config.json b/apps/speedtest-tracker/config.json new file mode 100644 index 00000000..757c3119 --- /dev/null +++ b/apps/speedtest-tracker/config.json @@ -0,0 +1,23 @@ +{ + "$schema": "../schema.json", + "name": "Speedtest Tracker", + "port": 8211, + "available": true, + "exposable": true, + "id": "speedtest-tracker", + "tipi_version": 1, + "version": "v0.13.1", + "categories": ["utilities"], + "description": "Speedtest Tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla's Speedtest service.", + "short_desc": "Internet performance tracking application.", + "author": "alexjustesen", + "source": "https://github.com/alexjustesen/speedtest-tracker", + "form_fields": [ + { + "type": "random", + "label": "SPEEDTEST_TRACKER_DB_PASSWORD", + "min": 32, + "env_variable": "SPEEDTEST_TRACKER_DB_PASSWORD" + } + ] +} diff --git a/apps/speedtest-tracker/docker-compose.yml b/apps/speedtest-tracker/docker-compose.yml new file mode 100644 index 00000000..7ae8b651 --- /dev/null +++ b/apps/speedtest-tracker/docker-compose.yml @@ -0,0 +1,66 @@ +version: "3.7" + +services: + speedtest-tracker: + image: ghcr.io/alexjustesen/speedtest-tracker:v0.13.1 + container_name: speedtest-tracker + environment: + - PUID=1000 + - PGID=1000 + - DB_CONNECTION=pgsql + - DB_HOST=speedtest-tracker-db + - DB_PORT=5432 + - DB_DATABASE=speedtest-tracker + - DB_USERNAME=tipi + - DB_PASSWORD=${SPEEDTEST_TRACKER_DB_PASSWORD} + - TZ=${TZ} + restart: unless-stopped + volumes: + - ${APP_DATA_DIR}/data/speedtest-tracker/config:/config + - /etc/localtime:/etc/localtime:ro + ports: + - ${APP_PORT}:80 + - 8212:443 + depends_on: + - speedtest-tracker-db + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.speedtest-tracker-web-redirect.redirectscheme.scheme: https + traefik.http.services.speedtest-tracker.loadbalancer.server.port: 80 + #traefik.http.services.speedtest-tracker.loadbalancer.serverstransport: insecuretransport@file + # Web + traefik.http.routers.speedtest-tracker-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.speedtest-tracker-insecure.entrypoints: web + traefik.http.routers.speedtest-tracker-insecure.service: speedtest-tracker + traefik.http.routers.speedtest-tracker-insecure.middlewares: speedtest-tracker-web-redirect + # Websecure + traefik.http.routers.speedtest-tracker.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.speedtest-tracker.entrypoints: websecure + traefik.http.routers.speedtest-tracker.service: speedtest-tracker + traefik.http.routers.speedtest-tracker.tls.certresolver: myresolver + # Local domain + traefik.http.routers.speedtest-tracker-local-insecure.rule: Host(`speedtest-tracker.${LOCAL_DOMAIN}`) + traefik.http.routers.speedtest-tracker-local-insecure.entrypoints: web + traefik.http.routers.speedtest-tracker-local-insecure.service: speedtest-tracker + traefik.http.routers.speedtest-tracker-local-insecure.middlewares: speedtest-tracker-web-redirect + # Local domain secure + traefik.http.routers.speedtest-tracker-local.rule: Host(`speedtest-tracker.${LOCAL_DOMAIN}`) + traefik.http.routers.speedtest-tracker-local.entrypoints: websecure + traefik.http.routers.speedtest-tracker-local.service: speedtest-tracker + traefik.http.routers.speedtest-tracker-local.tls: true + + speedtest-tracker-db: + container_name: speedtest-tracker-db + image: postgres:15 + restart: unless-stopped + environment: + - POSTGRES_USER=tipi + - POSTGRES_PASSWORD=${SPEEDTEST_TRACKER_DB_PASSWORD} + - POSTGRES_DB=speedtest-tracker + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + networks: + - tipi_main_network diff --git a/apps/speedtest-tracker/metadata/description.md b/apps/speedtest-tracker/metadata/description.md new file mode 100644 index 00000000..d4ee7463 --- /dev/null +++ b/apps/speedtest-tracker/metadata/description.md @@ -0,0 +1,32 @@ + +## Authentication + +Speedtest Tracker uses Filament for the admin panel. During the install process an admin account is created for you. + +Default User Account +| Username | Password | +| --- | --- | +| `admin@example.com`| `password` | + +--- + +## About + +A Docker image to check your internet speed using Ookla's Speedtest service. Build using Laravel and the Speedtest CLI. +These docs are up-to-date for version: `v0.12.1` + +![](https://834071469-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvtb3s6TB12XY9iIx8YyJ%2Fuploads%2FrOKoxV0cH35wwjkbAgvE%2Fdashboard_screenshot.jpg?alt=media&token=121f5175-4008-4b26-9655-bc67d1369710) + +### + +Introduction + +Speedtest Tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla's Speedtest service. + +#### + +Why might I want this? + +The main use case for Speedtest Tracker is to build a history of your internet's performance so that you can be informed when you're not receiving your ISP's advertised rates. + +_...also some of us just like a lot of data._ \ No newline at end of file diff --git a/apps/speedtest-tracker/metadata/logo.jpg b/apps/speedtest-tracker/metadata/logo.jpg new file mode 100644 index 00000000..8ceaaef8 Binary files /dev/null and b/apps/speedtest-tracker/metadata/logo.jpg differ diff --git a/apps/sshwifty/config.json b/apps/sshwifty/config.json index ed16ac6c..d5490b09 100644 --- a/apps/sshwifty/config.json +++ b/apps/sshwifty/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "sshwifty", - "tipi_version": 5, - "version": "0.3.1-beta-release", + "tipi_version": 6, + "version": "0.3.2-beta-release", "categories": [ "development" ], diff --git a/apps/sshwifty/docker-compose.yml b/apps/sshwifty/docker-compose.yml index 700b9e52..4d724b6e 100644 --- a/apps/sshwifty/docker-compose.yml +++ b/apps/sshwifty/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.5" services: sshwifty: - image: niruix/sshwifty:0.3.1-beta-release + image: niruix/sshwifty:0.3.2-beta-release restart: unless-stopped container_name: sshwifty privileged: true diff --git a/apps/stirling-pdf/config.json b/apps/stirling-pdf/config.json index 8ab94d30..48994fb6 100644 --- a/apps/stirling-pdf/config.json +++ b/apps/stirling-pdf/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "stirling-pdf", - "tipi_version": 4, - "version": "0.14.2", + "tipi_version": 7, + "version": "0.14.5", "categories": [ "data", "utilities" diff --git a/apps/stirling-pdf/docker-compose.yml b/apps/stirling-pdf/docker-compose.yml index a3dab4e6..62d76ad7 100644 --- a/apps/stirling-pdf/docker-compose.yml +++ b/apps/stirling-pdf/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: stirling-pdf: - image: ghcr.io/frooodle/s-pdf:0.14.2 + image: ghcr.io/frooodle/s-pdf:0.14.5 restart: unless-stopped container_name: stirling-pdf privileged: true diff --git a/apps/syncthing/config.json b/apps/syncthing/config.json index b6a2256c..b8e1e6ed 100644 --- a/apps/syncthing/config.json +++ b/apps/syncthing/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8090, "id": "syncthing", - "tipi_version": 7, - "version": "1.24", + "tipi_version": 8, + "version": "1.25", "categories": [ "data", "utilities" diff --git a/apps/syncthing/docker-compose.yml b/apps/syncthing/docker-compose.yml index 79eab896..e88c972b 100644 --- a/apps/syncthing/docker-compose.yml +++ b/apps/syncthing/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.7" services: syncthing: container_name: syncthing - image: syncthing/syncthing:1.24 + image: syncthing/syncthing:1.25 stop_grace_period: 1m hostname: tipi environment: diff --git a/apps/tailscale/config.json b/apps/tailscale/config.json index d8729dba..d5b26fc4 100644 --- a/apps/tailscale/config.json +++ b/apps/tailscale/config.json @@ -4,8 +4,8 @@ "available": true, "port": 8093, "id": "tailscale", - "tipi_version": 13, - "version": "1.48.2", + "tipi_version": 15, + "version": "1.50.1", "categories": [ "network", "security" diff --git a/apps/tailscale/docker-compose.yml b/apps/tailscale/docker-compose.yml index e72803f4..ad7e05bb 100644 --- a/apps/tailscale/docker-compose.yml +++ b/apps/tailscale/docker-compose.yml @@ -4,7 +4,7 @@ services: tailscale: container_name: tailscale network_mode: "host" # TODO: Find a way to remove this - image: tailscale/tailscale:v1.48.2 + image: tailscale/tailscale:v1.50.1 privileged: true restart: on-failure stop_grace_period: 1m diff --git a/apps/tautulli/config.json b/apps/tautulli/config.json index 5f242ddb..290ec2a0 100644 --- a/apps/tautulli/config.json +++ b/apps/tautulli/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8181, "id": "tautulli", - "tipi_version": 11, - "version": "2.13.1", + "tipi_version": 12, + "version": "2.13.2", "categories": [ "media", "utilities" diff --git a/apps/tautulli/docker-compose.yml b/apps/tautulli/docker-compose.yml index 3e9b4cca..7338140b 100644 --- a/apps/tautulli/docker-compose.yml +++ b/apps/tautulli/docker-compose.yml @@ -2,7 +2,7 @@ version: "2.1" services: tautulli: container_name: tautulli - image: lscr.io/linuxserver/tautulli:2.13.1 + image: lscr.io/linuxserver/tautulli:2.13.2 environment: - PUID=1000 - PGID=1000 diff --git a/apps/tooljet/docker-compose.yml b/apps/tooljet/docker-compose.yml index c69773db..bd79f061 100644 --- a/apps/tooljet/docker-compose.yml +++ b/apps/tooljet/docker-compose.yml @@ -44,7 +44,7 @@ services: tooljet-server: container_name: tooljet-server - image: tooljet/tooljet-server-ce:v2.17.2 + image: tooljet/tooljet-server-ce:v2.22.1 tty: true stdin_open: true restart: always diff --git a/apps/trilium/config.json b/apps/trilium/config.json index 4dfc045c..55cd2d70 100644 --- a/apps/trilium/config.json +++ b/apps/trilium/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "trilium", "description": "Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases. ", - "tipi_version": 2, - "version": "0.61.6-beta", + "tipi_version": 6, + "version": "0.61.10-beta", "categories": [ "utilities" ], diff --git a/apps/trilium/docker-compose.yml b/apps/trilium/docker-compose.yml index 04e0c62f..8403a49b 100644 --- a/apps/trilium/docker-compose.yml +++ b/apps/trilium/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: trilium: - image: ghcr.io/zadam/trilium:0.61.6-beta + image: ghcr.io/zadam/trilium:0.61.10-beta container_name: trilium ports: - ${APP_PORT}:8080 diff --git a/apps/tubearchivist/config.json b/apps/tubearchivist/config.json index 60fe6aca..8bdd421a 100644 --- a/apps/tubearchivist/config.json +++ b/apps/tubearchivist/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8120, "id": "tubearchivist", - "tipi_version": 4, - "version": "latest", + "tipi_version": 7, + "version": "0.4.2", "supported_architectures": [ "amd64", "arm64" diff --git a/apps/tubearchivist/docker-compose.yml b/apps/tubearchivist/docker-compose.yml index 3be92b7a..dbe96cc9 100644 --- a/apps/tubearchivist/docker-compose.yml +++ b/apps/tubearchivist/docker-compose.yml @@ -4,7 +4,11 @@ services: tubearchivist: container_name: tubearchivist restart: unless-stopped - image: bbilly1/tubearchivist:latest + image: bbilly1/tubearchivist:v0.4.2 + ports: + - ${APP_PORT}:8000 + dns: + - ${DNS_IP} volumes: - ${ROOT_FOLDER_HOST}/media/data/youtube:/youtube - ${APP_DATA_DIR}/data/cache:/cache @@ -20,10 +24,6 @@ services: - tubearchivist-redis networks: - tipi_main_network - dns: - - ${DNS_IP} - ports: - - ${APP_PORT}:8000 labels: # Main traefik.enable: true @@ -62,7 +62,7 @@ services: - tubearchivist-es tubearchivist-es: - image: bbilly1/tubearchivist-es:latest + image: elasticsearch:8.10.2 container_name: tubearchivist-es restart: always environment: diff --git a/apps/viewtube/config.json b/apps/viewtube/config.json index 6be4953d..0e9e3303 100644 --- a/apps/viewtube/config.json +++ b/apps/viewtube/config.json @@ -5,9 +5,11 @@ "available": true, "exposable": true, "id": "viewtube", - "tipi_version": 1, - "version": "0.12.2", - "categories": ["media"], + "tipi_version": 3, + "version": "0.13.0", + "categories": [ + "media" + ], "description": "The open source, privacy-conscious way to enjoy your favorite YouTube content.", "short_desc": "The open source, privacy-conscious way to enjoy your favorite YouTube content.", "author": "ViewTube", diff --git a/apps/viewtube/docker-compose.arm64.yml b/apps/viewtube/docker-compose.arm64.yml new file mode 100644 index 00000000..a6a5df77 --- /dev/null +++ b/apps/viewtube/docker-compose.arm64.yml @@ -0,0 +1,66 @@ +version: '3' + +services: + viewtube: + restart: unless-stopped + container_name: viewtube + image: mauriceo/viewtube:0.13.0 + depends_on: + - viewtube-mongodb + - viewtube-redis + volumes: + - ${APP_DATA_DIR}/data/viewtube:/data + environment: + - VIEWTUBE_DATABASE_HOST=viewtube-mongodb + - VIEWTUBE_REDIS_HOST=viewtube-redis + - VIEWTUBE_SECURE=true + - VIEWTUBE_CORS_ORIGIN=${APP_PROTOCOL:-http}://${APP_DOMAIN} + # - VIEWTUBE_YOUTUBE_COOKIE= + # - VIEWTUBE_YOUTUBE_IDENTIFIER= + ports: + - ${APP_PORT}:8066 + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.viewtube-web-redirect.redirectscheme.scheme: https + traefik.http.services.viewtube.loadbalancer.server.port: 8066 + # Web + traefik.http.routers.viewtube-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.viewtube-insecure.entrypoints: web + traefik.http.routers.viewtube-insecure.service: viewtube + traefik.http.routers.viewtube-insecure.middlewares: viewtube-web-redirect + # Websecure + traefik.http.routers.viewtube.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.viewtube.entrypoints: websecure + traefik.http.routers.viewtube.service: viewtube + traefik.http.routers.viewtube.tls.certresolver: myresolver + # Local domain + traefik.http.routers.viewtube-local-insecure.rule: Host(`viewtube.${LOCAL_DOMAIN}`) + traefik.http.routers.viewtube-local-insecure.entrypoints: web + traefik.http.routers.viewtube-local-insecure.service: viewtube + traefik.http.routers.viewtube-local-insecure.middlewares: viewtube-web-redirect + # Local domain secure + traefik.http.routers.viewtube-local.rule: Host(`viewtube.${LOCAL_DOMAIN}`) + traefik.http.routers.viewtube-local.entrypoints: websecure + traefik.http.routers.viewtube-local.service: viewtube + traefik.http.routers.viewtube-local.tls: true + + viewtube-mongodb: + container_name: viewtube-mongodb + restart: unless-stopped + image: mongo:4.4.18 + networks: + - tipi_main_network + volumes: + - ${APP_DATA_DIR}/data/db:/data/db + + viewtube-redis: + container_name: viewtube-redis + restart: unless-stopped + image: redis:7 + networks: + - tipi_main_network + volumes: + - ${APP_DATA_DIR}/data/redis:/data diff --git a/apps/viewtube/docker-compose.yml b/apps/viewtube/docker-compose.yml index 46f386f7..5246a892 100644 --- a/apps/viewtube/docker-compose.yml +++ b/apps/viewtube/docker-compose.yml @@ -4,7 +4,7 @@ services: viewtube: restart: unless-stopped container_name: viewtube - image: mauriceo/viewtube:0.12.2 + image: mauriceo/viewtube:0.13.0 depends_on: - viewtube-mongodb - viewtube-redis diff --git a/apps/viewtube/metadata/description.md b/apps/viewtube/metadata/description.md index 429a6626..e4014365 100644 --- a/apps/viewtube/metadata/description.md +++ b/apps/viewtube/metadata/description.md @@ -2,6 +2,8 @@ ViewTube is an alternative YouTube frontend that lets you watch, search and disc You can find the documentation at [viewtube.wiki](https://viewtube.wiki) +**Warning! MongoDB version 4.4.18 will be used for arm64 devices like the raspberry pi!** + ## Features - Watch videos without ads or tracking diff --git a/apps/viewtube/metadata/optional.md b/apps/viewtube/metadata/optional.md deleted file mode 100644 index 5cb35f80..00000000 --- a/apps/viewtube/metadata/optional.md +++ /dev/null @@ -1,37 +0,0 @@ -## (Optional) Use cookies from a real account - -You can provide your own cookies to circumvent any Rate Limiting Issue. - -### YouTube cookie - -- Navigate to YouTube in a web browser -- Log in, preferrably with a separate account you don't use often -- Open up the dev tools console -- Type `document.cookie` -- Copy the entire response into the `VIEWTUBE_YOUTUBE_COOKIE` environment variable - -### YouTube identifier - -- Navigate to a video -- Right click and click "view source" -- Press CTRL+F to search for "ID\_TOKEN" -- Copy this value into the `VIEWTUBE_YOUTUBE_IDENTIFIER` environment variable - -``` - "form_fields": [ - { - "type": "text", - "label": "Youtube Cookie", - "hint": "Optional, Read below", - "required": false, - "env_variable": "VIEWTUBE_YOUTUBE_COOKIE" - }, - { - "type": "text", - "label": "Youtube Identifier", - "hint": "Optional, Read below", - "required": false, - "env_variable": "VIEWTUBE_YOUTUBE_IDENTIFIER" - } - ] -``` diff --git a/apps/wizarr/config.json b/apps/wizarr/config.json index ae45b81f..b30923d3 100644 --- a/apps/wizarr/config.json +++ b/apps/wizarr/config.json @@ -6,12 +6,12 @@ "exposable": true, "id": "wizarr", "tipi_version": 5, - "version": "2.2.0", + "version": "latest-3.4.2", "categories": [ "utilities" ], - "description": "Wizarr is a automatic user invitation system for Plex, Jellyfin and Emby. Create a unique link and share it to a user and they will automatically be invited to your Media Server! They will even be guided to download the clients and instructions on how to use your requests software!", - "short_desc": "Wizarr is an advanced user invitation and management system for Jellyfin, Plex, Emby etc.", + "description": "Wizarr is an automatic user invitation system for Plex and Jellyfin. Create a unique link and share it to a user and they will be invited to your Media Server after they complete there signup proccess! They can even be guided to download the clients and read instructions on how to use your media software!", + "short_desc": "Wizarr is an automatic user invitation system for Plex and Jellyfin.", "author": "https://github.com/Wizarrrr", "source": "https://github.com/Wizarrrr/wizarr", "website": "https://docs.wizarr.dev/", diff --git a/apps/wizarr/docker-compose.yml b/apps/wizarr/docker-compose.yml index 42e294b3..3ad8f0ca 100644 --- a/apps/wizarr/docker-compose.yml +++ b/apps/wizarr/docker-compose.yml @@ -3,15 +3,11 @@ version: "3.8" services: wizarr: container_name: wizarr - image: ghcr.io/wizarrrr/wizarr:2.2.0 + image: ghcr.io/wizarrrr/wizarr:latest-3.4.2 ports: - ${APP_PORT}:5690 volumes: - ${APP_DATA_DIR}/data/database:/data/database - environment: - - APP_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN} - - DISABLE_BUILTIN_AUTH=false #Set to true ONLY if you are using another auth provider (Authelia, Authentik, etc) - - TZ=${TZ} networks: - tipi_main_network labels: diff --git a/apps/wizarr/metadata/description.md b/apps/wizarr/metadata/description.md index 82229218..487cd1a6 100644 --- a/apps/wizarr/metadata/description.md +++ b/apps/wizarr/metadata/description.md @@ -1,35 +1,55 @@ -# Wizarr +Wizarr is an automatic user invitation system for Plex and Jellyfin. Create a unique link and share it to a user and they will be invited to your Media Server after they complete there signup proccess! They can even be guided to download the clients and read instructions on how to use your media software! -Wizarr is a automatic user invitation system for Plex, Jellyfin and Emby. Create a unique link and share it to a user and they will automatically be invited to your Media Server! They will even be guided to download the clients and instructions on how to use your requests software! +## Where is V2? -## [](https://github.com/Wizarrrr/wizarr/blob/master/README.md#major-features-include)Major Features Include +Wizarr V2 has moved to the v2 branch [here](https://github.com/Wizarrrr/wizarr/tree/v2), your still more than welcome to use v2 however it will no longer be supported, we recommend using our new version, trust us it's πŸ”₯. -- Automatic Invitation to your Media Server (Plex, Jellyfin, Emby...) -- Secured invitation environment -- Plug and Play SSO Support\* -- Multi-tiered Invitations -- Duration for membership -- Guide user on how to download Plex client -- Requests Integration: Guide users on how to request Movies (Overseerr, Ombi...) -- Discord Server Integration: Invite users to your Discord Server -- Customizable: Add any Custom HTML +## Major Features Include -## [](https://github.com/Wizarrrr/wizarr/blob/master/README.md#getting-started)Getting Started +- Automatic Invitation to your Media Server (Plex, Jellyfin) +- Support for Passkey authentication for Admin Users +- Create multiple invitations with different configurations +- Make invitations and users expire after a certain amount of time +- Automatically add users to your Request System (Ombi, Jellyseerr, Overseerr) +- Add users to your Discord Server +- Create a custom HTML page +- Multi-Language Support +- Scheduled Tasks to keep Wizarr updated with your Media Server +- Live logs directly from the Wizarr Web UI +- Multiple Admin Users with different permissions +- Notification System +- API for Developers with Swagger UI +- Light and Dark Mode Support +- Session Management for Admin Users -Check out our documentation for instructions on how to install and run Wizarr! +## Whats to come -[https://docs.wizarr.dev/getting-started/installation](https://docs.wizarr.dev/getting-started/installation) +- Added API Endpoints +- Multi-Server Support +- Mass Emailing to Client Users +- OAuth Support with custom providers +- Use your own Database +- 2FA Support for Admin Users +- Built in Update System +- Full Wizard Customization with Drag and Drop Template Editor +- Jellyfin and Plex user permissions management tool +- Invite Request System for users to request invite +- and much more! -## [](https://github.com/Wizarrrr/wizarr/blob/master/README.md#translations)Translations +## Documentation -We use Weblate to translate Wizarr, help us out by clicking [here](https://hosted.weblate.org/engage/wizarr/) +Any issues we welcome you to come onto our [Discord](https://discord.gg/XXCz7aM3ak) and ask for a member of staff, we would be happy to help. -[![Translation status](https://camo.githubusercontent.com/b0a28909b22fe4aaa3201f59b61ad2d34be9726e6a7ec024cbb5140771541042/68747470733a2f2f686f737465642e7765626c6174652e6f72672f776964676574732f77697a6172722f2d2f6170702f6d756c74692d6175746f2e737667)](https://camo.githubusercontent.com/b0a28909b22fe4aaa3201f59b61ad2d34be9726e6a7ec024cbb5140771541042/68747470733a2f2f686f737465642e7765626c6174652e6f72672f776964676574732f77697a6172722f2d2f6170702f6d756c74692d6175746f2e737667) +If you want to help contribute to Wizarr by building V3's documentation we would really appreciate it, again join the [Discord](https://discord.gg/XXCz7aM3ak) and we can get you started. -## [](https://github.com/Wizarrrr/wizarr/blob/master/README.md#thank-you)Thank you + +Chat on Discord + -A big thank you ❀️ to these amazing people for contributing to this project! [![](https://camo.githubusercontent.com/38799e01fd3b3ba00584d9d9f65141bdfe849a7c8344ceae962779d334a5c8e6/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d77697a61727272722f77697a617272)](https://github.com/wizarrrr/wizarr/graphs/contributors) +## Thank you -## [](https://github.com/Wizarrrr/wizarr/blob/master/README.md#screenshots)Screenshots +A big thank you ❀️ to these amazing people for contributing to this project! -[![alt](https://github.com/Wizarrrr/wizarr/raw/master/screenshots/invite.png)](https://github.com/Wizarrrr/wizarr/blob/master/screenshots/invite.png) [![alt](https://github.com/Wizarrrr/wizarr/raw/master/screenshots/tips.png)](https://github.com/Wizarrrr/wizarr/blob/master/screenshots/tips.png) [![alt](https://github.com/Wizarrrr/wizarr/raw/master/screenshots/join.png)](https://github.com/Wizarrrr/wizarr/blob/master/screenshots/join.png) + + + diff --git a/apps/wizarr/metadata/logo.jpg b/apps/wizarr/metadata/logo.jpg index 9c15fabb..19bc3c6c 100644 Binary files a/apps/wizarr/metadata/logo.jpg and b/apps/wizarr/metadata/logo.jpg differ diff --git a/apps/your-spotify/config.json b/apps/your-spotify/config.json index 8de186a4..aac22317 100644 --- a/apps/your-spotify/config.json +++ b/apps/your-spotify/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8103, "id": "your-spotify", - "tipi_version": 5, - "version": "1.7.0", + "tipi_version": 6, + "version": "1.7.1", "categories": [ "music", "utilities" diff --git a/apps/your-spotify/docker-compose.yml b/apps/your-spotify/docker-compose.yml index baa792c9..41935ca3 100644 --- a/apps/your-spotify/docker-compose.yml +++ b/apps/your-spotify/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: your-spotify: container_name: your-spotify - image: yooooomi/your_spotify_client:1.7.0 + image: yooooomi/your_spotify_client:1.7.1 depends_on: - your-spotify-server restart: unless-stopped diff --git a/apps/zerotier/config.json b/apps/zerotier/config.json index 06c40df3..d0ec3215 100644 --- a/apps/zerotier/config.json +++ b/apps/zerotier/config.json @@ -5,8 +5,8 @@ "no_gui": true, "port": 9993, "id": "zerotier", - "tipi_version": 4, - "version": "1.12.1", + "tipi_version": 5, + "version": "1.12.2", "categories": [ "network", "security" diff --git a/apps/zerotier/docker-compose.yml b/apps/zerotier/docker-compose.yml index 0bb594a5..c232f503 100644 --- a/apps/zerotier/docker-compose.yml +++ b/apps/zerotier/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: zerotier: container_name: zerotier - image: zerotier/zerotier:1.12.1 + image: zerotier/zerotier:1.12.2 restart: on-failure command: "${NETWORK_ID}" cap_add: diff --git a/renovate.json b/renovate.json index 3a8859ef..0a6647a8 100644 --- a/renovate.json +++ b/renovate.json @@ -11,7 +11,7 @@ "hostType": "docker", "username": "jphj", "encrypted": { - "password": "wcFMA/xDdHCJBTolAQ/9GRBMmOIIYT7vGWpjMD4UJN1zHR8O4xrmbwDFl/VXO26SoYcv34QpJsNr748f2zPVwQ77+Z22Tv9QMY1aA0sgT3t69NN1KVt9ErWa6Hctm5fFxhichrvgfb7mmjDcHr2mG2YGGHF5btZHlfxZXdEeLyBLwVXuS4tOb+9JAlyi6zvpdSqdSviPYFv2HSccMyuQxGHoQ02JT8v65K86E6BtvxCPVovs6RsBOF5SIZ4QHU4gaa0X2pDHefM61/b41QJLRNVNbR6NjROOG8Tt5JSgFxwvmO2HzT2LHzHlIXm936ElHRHkM7kaE3GMbT1tpLl2yGmQPDNHsUyAs9B8E86/I6Jatadq40jwLUWeCy2FAx4XwrBMFSNp9D+DmdFk6PcOUT4Wjyxg1gUWY67DTd6anWjivmbkDmlBqIpbIiJMIel4JlquQF1wnfqf46BKVOFSlBxIb8YZGpB2U0PdM8i4we6nInK4bwK/Ib2Ux4O+GLCEsoUHqD0gUff2+7rdE8Yi4ctui1RWRInE3WA9ix9CawZcVJImcQxKJzNRk1ZzoCe30+uN69o4bFGa/6kRFO6yAmPaOwp781CWX42fZQGZhp8gQzhRUjeDW2Wr2ygJclo9vzJ0eQPh0amdOXL1FazIa6jCtMY6VGMlfwG6Ip9t+NEBcb73GraOboPQMxXUxcTShgGiV+YzkBuH7tKGTSOhbAwhlV3OJs3PFAlvrJ4Vx40LNEinMsSAcVNxoDERi3E1JnjGNe1JlCHqLZEkNhwr9dDrr2OwSuC3RNm3r+hyl0twh97MHQonF/T6jX57aEHojASpml8rapCYUn/CUtXJRdA8zp9eV7P8BN8VpTWLgizd+fJ+Vylj" + "password": "wcFMA/xDdHCJBTolAQ/8DjCFGYoCRb08EDqxfzeYRn7ciN0Qslh22QdSIFYYLw4SffcC0uuiOkheaEKtE7F6hQRpL7tFCOdGMWYs9mbyRjxAMxSthPrkzoc7LfofXoDrE4/tKyRbKuFxtaMygaE4XSxLwihGd4RTEbDEINR2ilc9jTpkNQYzoxjwwnEMEZxQLNoDOlQtgUmdSmf2kAtqhVwE6a3NRM+mAXZzYMf3VgDu6/Rep4uO2BOKlLIaf6m4hFnCIQxTtgE/B2FrciuNYmBffjcIvE0vqDDAzbaj4KX1vr9asSWdCmGCtS5tnr9xrt7Fja6nqPph3AVVukVfhRbPhVALoMSRC/nDfTq5asGElU4HbU8bFv2Cwu28MNgor19o80oR0TIXDM4Hst+oX/HNUbQT2PSujgR4AkYASDzBmwaYbne+YgwVQrc6uCeYy9U0+F0aUbrHMvLb9fUG1bdXFcTWkGctNL6R/27QAMZvZ1At1IWBR4EGi6flEo6OGUFZSTVVzsthTFMTKzg7FMpHusGhHQ2t0v70w14yEBgOVL+pSV18239XNYA+Lw6VYUpHP+/oSKuiaJKX6klQyygaFxSx3aPjMdeaEeQECaJz75pOt1CD27WIO/lw2Uti1jnDs1S4SGbU42QSHLI5KyrVztzB2X/nVNDIe6oztja1yp/tHB7yZWDpyHkrmnDScgEJtoIx7Y/46DltouaBvauisSOtvYq5IkX4TSAQoi4tVoJURtrcLoqns+ZTDFdw943Os7CDBOLN/HIphGtVwxr+qzmTDJ/PlFN3C/Fq/IIbZlgsJWSZ+ndv+mYHwRyJFQ6LSdK4xN8AnZlp1+QB3/tOcA" } }, {