Add Ryot (#1233)
* Add Ryot * Add Registration Option * Add Twitch Client ID Info * Update docker-compose.yml * Update README.md
This commit is contained in:
parent
22dba10aba
commit
5883503167
|
@ -120,6 +120,7 @@ This is the official repository for the Tipi App Store. It contains all the apps
|
|||
- [Readarr](https://github.com/Readarr/Readarr) - Book Manager and Automation (Sonarr for Ebooks)
|
||||
- [Resilio Sync](https://github.com/bt-sync) - Fast, reliable, and simple file sync and share solution
|
||||
- [RSS](https://github.com/ssddanbrown/rss) - A simple, opinionated, RSS feed aggregator
|
||||
- [Ryot](https://github.com/IgnisDa/ryot) - Roll your own tracker!
|
||||
- [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
|
||||
|
|
45
apps/ryot/config.json
Normal file
45
apps/ryot/config.json
Normal file
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Ryot",
|
||||
"port": 8206,
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "ryot",
|
||||
"tipi_version": 1,
|
||||
"version": "v2.17.3",
|
||||
"categories": ["media"],
|
||||
"description": "Roll your own tracker!",
|
||||
"short_desc": "Roll your own tracker!",
|
||||
"author": "IgnisDa",
|
||||
"source": "https://github.com/IgnisDa/ryot",
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "random",
|
||||
"label": "RYOT_DB_PASSWORD",
|
||||
"min": 32,
|
||||
"env_variable": "RYOT_DB_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "boolean",
|
||||
"label": "Allow Registration",
|
||||
"hint": "First user will be admin, Needed for at least one user.",
|
||||
"required": false,
|
||||
"default": "true",
|
||||
"env_variable": "RYOT_ALLOW_REGISTRATION"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Twitch Client ID",
|
||||
"hint": "For Video Game Tracking, Read Below for more Info!",
|
||||
"required": false,
|
||||
"env_variable": "RYOT_VIDEO_GAMES_TWITCH_CLIENT_ID"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Twitch Client Secret",
|
||||
"hint": "For Video Game Tracking, Read Below for more Info!",
|
||||
"required": false,
|
||||
"env_variable": "RYOT_VIDEO_GAMES_TWITCH_CLIENT_SECRET"
|
||||
}
|
||||
]
|
||||
}
|
57
apps/ryot/docker-compose.yml
Normal file
57
apps/ryot/docker-compose.yml
Normal file
|
@ -0,0 +1,57 @@
|
|||
version: "3.7"
|
||||
|
||||
services:
|
||||
ryot:
|
||||
image: ghcr.io/ignisda/ryot:v2.17.3
|
||||
container_name: ryot
|
||||
environment:
|
||||
- DATABASE_URL=postgres://tipi:${RYOT_DB_PASSWORD}@ryot-db:5432/ryot
|
||||
- SERVER_INSECURE_COOKIE=true
|
||||
- USERS_ALLOW_REGISTRATION=${RYOT_ALLOW_REGISTRATION}
|
||||
- VIDEO_GAMES_TWITCH_CLIENT_ID=${RYOT_VIDEO_GAMES_TWITCH_CLIENT_ID}
|
||||
- VIDEO_GAMES_TWITCH_CLIENT_SECRET= ${VIDEO_GAMES_TWITCH_CLIENT_SECRET}
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- ${APP_PORT}:8000
|
||||
depends_on:
|
||||
- ryot-db
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.ryot-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.ryot.loadbalancer.server.port: 8000
|
||||
# Web
|
||||
traefik.http.routers.ryot-insecure.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.ryot-insecure.entrypoints: web
|
||||
traefik.http.routers.ryot-insecure.service: ryot
|
||||
traefik.http.routers.ryot-insecure.middlewares: ryot-web-redirect
|
||||
# Websecure
|
||||
traefik.http.routers.ryot.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.ryot.entrypoints: websecure
|
||||
traefik.http.routers.ryot.service: ryot
|
||||
traefik.http.routers.ryot.tls.certresolver: myresolver
|
||||
# Local domain
|
||||
traefik.http.routers.ryot-local-insecure.rule: Host(`ryot.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.ryot-local-insecure.entrypoints: web
|
||||
traefik.http.routers.ryot-local-insecure.service: ryot
|
||||
traefik.http.routers.ryot-local-insecure.middlewares: ryot-web-redirect
|
||||
# Local domain secure
|
||||
traefik.http.routers.ryot-local.rule: Host(`ryot.${LOCAL_DOMAIN}`)
|
||||
traefik.http.routers.ryot-local.entrypoints: websecure
|
||||
traefik.http.routers.ryot-local.service: ryot
|
||||
traefik.http.routers.ryot-local.tls: true
|
||||
|
||||
ryot-db:
|
||||
container_name: ryot-db
|
||||
image: postgres:15-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=tipi
|
||||
- POSTGRES_PASSWORD=${RYOT_DB_PASSWORD}
|
||||
- POSTGRES_DB=ryot
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data
|
||||
networks:
|
||||
- tipi_main_network
|
37
apps/ryot/metadata/description.md
Normal file
37
apps/ryot/metadata/description.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
## Install Info
|
||||
|
||||
If you want to setup Video Tracking, you need to set a Twitch Client ID and Secret. Please read the [Ryot Documentation](https://ignisda.github.io/ryot/guides/video-games.html) if you do not know how to get them
|
||||
# Ryot
|
||||
|
||||
### A self hosted platform for tracking various facets of your life - media, fitness etc.
|
||||
|
||||
Ryot (**R**oll **Y**our **O**wn **T**racker), pronounced "riot", aims to be the only self hosted tracker you will ever need!
|
||||
|
||||
## 💻 Demo
|
||||
|
||||
You can use the demo instance hosted on [Fly.io](https://ryot.fly.dev). Login and register with the username `demo` and password `demo-password`. This instance is automatically deployed from the latest release.
|
||||
|
||||
**NOTE**: The data in this instance can be deleted randomly.
|
||||
|
||||
## 📝 ELI5
|
||||
|
||||
Imagine you have a special notebook where you can write down all the media you have consumed, like books you've read, shows you have watched, video games you have played or workouts you have done. Now, imagine that instead of a physical notebook, you have a special tool on your computer or phone that lets you keep track of all these digitally.
|
||||
|
||||
## 💡 Why?
|
||||
|
||||
- Existing solutions do not have very good UI.
|
||||
- Pretty graphs and summaries make everyone happy. Ryot aims to have a lot of them.
|
||||
- There is a lack of a good self-hosted fitness and health tracking solution.
|
||||
- Ryot consumes very little memory (around 10MB idle eyeballing `docker stats`)
|
||||
|
||||
## 🚀 Features
|
||||
|
||||
- ✅ [Supports](https://github.com/IgnisDa/ryot/discussions/4) tracking media and fitness
|
||||
- ✅ Import data from Goodreads, MediaTracker, Trakt, Movary, StoryGraph, MyAnimeList
|
||||
- ✅ Integration with Jellyfin, Kodi, Plex, Audiobookshelf
|
||||
- ✅ Self-hosted
|
||||
- ✅ PWA enabled
|
||||
- ✅ Documented GraphQL API
|
||||
- ✅ Easy to understand UI
|
||||
- ✅ Lightning fast (written in Rust BTW)
|
||||
- ✅ Free and open-source
|
BIN
apps/ryot/metadata/logo.jpg
Normal file
BIN
apps/ryot/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
Loading…
Reference in New Issue
Block a user