github Zibbp/ganymede v2.0.0

latest releases: v3.0.2, v3.0.1, v3.0.0...
9 months ago

2.0.0

Merry Christmas everyone, I hope you enjoy this update! 🎅🎄

Breaking Change!

Important

Version 2.0.0 has a change to the docker compose that must be applied. The API container will not start until this change is applied

A few environment variables need to be added to the API compose service. As well as adding a new Temporal service.

  ganymede-api:
    container_name: ganymede-api
    image: ghcr.io/zibbp/ganymede:latest
    restart: unless-stopped
    environment:
      - TZ=America/Chicago # Set to your timezone
      - DB_HOST=ganymede-db
      - DB_PORT=5432
      - DB_USER=ganymede
      - DB_PASS=PASSWORD
      - DB_NAME=ganymede-prd
      - DB_SSL=disable
      - JWT_SECRET=SECRET
      - JWT_REFRESH_SECRET=SECRET
      - TWITCH_CLIENT_ID=
      - TWITCH_CLIENT_SECRET=
      - FRONTEND_HOST=http://IP:PORT
      # OPTIONAL
      # - OAUTH_PROVIDER_URL=
      # - OAUTH_CLIENT_ID=
      # - OAUTH_CLIENT_SECRET=
      # - OAUTH_REDIRECT_URL=http://IP:PORT/api/v1/auth/oauth/callback # Points to the API service
+      - TEMPORAL_URL=ganymede-temporal:7233
+      # WORKER
+      - MAX_CHAT_DOWNLOAD_EXECUTIONS=5
+      - MAX_CHAT_RENDER_EXECUTIONS=3
+      - MAX_VIDEO_DOWNLOAD_EXECUTIONS=5
+      - MAX_VIDEO_CONVERT_EXECUTIONS=3
    volumes:
      - /path/to/vod/storage:/vods
      - ./logs:/logs
      - ./data:/data
      # Uncomment below to persist temp files
      #- ./tmp:/tmp
    ports:
      - 4800:4000
+  ganymede-temporal:
+    container_name: ganymede-temporal
+    image: ghcr.io/zibbp/ganymede-temporal:latest
+    restart: unless-stopped
+    volumes:
+      - ./temporal:/data
+    ports:
+      - 7233:7233
+      - 8233:8233 # web ui - optional

See the full docker-compose.yml for a full example (see commit history for new additions).

Features

New Workflow System

I'm now utilizing Temporal to create and run workflows. This replaces the queue system with something that will hopefully be more robust.

There is now a new "Workflows" page that shows active and closed workflows.
image

The "Queue" page is still available which provides an easy-to-see status of an archive. Workflows are still in an early stage so if you'd like to see more information about the workflows I suggest exposing the "web ui" port of the Temporal container (8233) and visiting that. Manually restarting a task is now accomplished on the workflow page for that specific execution.

Most workflows now have auto retries, currently configured up to 3 retries before the workflow errors out. You can now be more strict on the maximum number of workflow types as seen in the new environment variables for the API container.

The worker is currently bundled in the API server container and they both run at once. In the future I will probably add support to break this up and allow for distributed worker nodes.

Getting the existing code moved over to Temporal workflows has been a massive lift. It will pay off over time though as it will be significantly easier to setup new workflows in the future. This change will likely introduce some bugs that I wasn't able to catch. If you encounter any issues, please create an issue with as many logs and information as possible.

Chapters / Categories

Requested in #317, Game categories are now saved to the info.json file as well as the database if the video has categories. These chapters / categories are visible in the video player.

image

A new workflow exists to update existing videos with available categories (if the video still exists and has categories).
image

A future update will allow creating, editing, and deleting chapters in the frontend.

Frontend Updates

I've given the frontend a new color scheme and updated some components, including the landing page.

Known Issues

  • Live stream chat will not render if the channel does not have any videos.
    • TwitchDownloader now requires a video ID to render chat. I'm exploring possible workarounds for this.
  • Workflows on the "workflows" page disappear after a day.
    • Temporal auto removes old workflows. I'm hoping to have a fix for this in the next release.
  • Mobile player
    • The vertical layout for watching a video is a bit messed up right now. Rotate your device so it's in landscape and press the theater mode icon. This will play the video next to the chat player.

What's Changed

  • fix(archive): remove delete vod by @Zibbp in #309
  • build(deps): bump github.com/rs/zerolog from 1.30.0 to 1.31.0 by @dependabot in #303
  • build(deps): bump golang.org/x/net from 0.15.0 to 0.17.0 by @dependabot in #310
  • build(deps): bump github.com/go-playground/validator/v10 from 10.15.4 to 10.16.0 by @dependabot in #312
  • build(deps): bump docker/build-push-action from 5.0.0 to 5.1.0 by @dependabot in #315
  • build(deps): bump github.com/go-jose/go-jose/v3 from 3.0.0 to 3.0.1 by @dependabot in #316
  • feat: temporal queue by @Zibbp in #328
  • docs: temporal docker by @Zibbp in #330

Full Changelog: v1.4.3...v2.0.0

Don't miss a new ganymede release

NewReleases is sending notifications on new releases.