README 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. # -*- mode: org; org-html-head-include-default-style: nil; org-html-postamble: nil; after-save-hook: org-md-export-to-markdown; -*-
  2. #+OPTIONS: toc:nil num:nil
  3. * Tubo
  4. Tubo is a streaming front-end focused on bringing the [[https://github.com/TeamNewPipe/NewPipe][NewPipe]] experience to the web. It currently supports the same platforms as NewPipe, including YouTube, SoundCloud, and more.
  5. To retrieve the data, it wraps the excellent [[https://github.com/TeamNewPipe/NewPipeExtractor][NewPipe Extractor]] library and exposes the extracted data over a REST API that is consumed by a local re-frame SPA.
  6. ** Instances
  7. | URL | Country |
  8. |-----------------------------------------+---------|
  9. | https://tubo.migalmoreno.com (Official) | 🇪🇸 |
  10. If you consider self-hosting Tubo let me know about your instance via the [[*Contributing][contribution methods]]. See [[*Installation][installation]] for ways to set up Tubo in your server.
  11. ** Installation
  12. *** Packaging
  13. **** Uberjar
  14. To bundle the whole project into a self-contained uber-jar you need to follow these build steps:
  15. #+begin_src sh
  16. npm i
  17. npm run build
  18. clojure -T:frontend:build uberjar
  19. #+end_src
  20. After the last command is completed, you'll get a path to the uber-jar, which you can run like this:
  21. #+begin_src sh
  22. java -jar target/tubo-<VERSION>.jar
  23. #+end_src
  24. **** Docker
  25. Alternatively, you can use Docker to set up Tubo. Simply invoke this:
  26. #+begin_src sh
  27. docker-compose up -d
  28. #+end_src
  29. **** Manual
  30. You can also set up Tubo manually via the [[https://guix.gnu.org/][GNU Guix]] package manager. First, download the necessary tooling:
  31. #+begin_src sh
  32. cd /path/to/tubo
  33. guix shell
  34. #+end_src
  35. Then, compile the downloader ahead-of-time:
  36. #+begin_src sh
  37. clojure -M -e "(compile 'tubo.downloader-impl)"
  38. #+end_src
  39. Fetch the front-end dependencies and build the front-end assets.
  40. #+begin_src sh
  41. npm i
  42. npm run build
  43. #+end_src
  44. Finally, compile the front-end.
  45. #+begin_src sh
  46. clojure -M:frontend release tubo
  47. #+end_src
  48. You can now start a local server that listens on port 3000 by running this:
  49. #+begin_src sh
  50. clojure -M:run
  51. #+end_src
  52. Access the front-end in your browser at =http://localhost:3000=.
  53. *** Reverse Proxy
  54. If you want to self-host Tubo and make it publicly accessible you'll need to set up a reverse proxy.
  55. **** Nginx
  56. #+begin_src nginx
  57. server {
  58. listen 443 ssl http2;
  59. server_name tubo.<YOUR_DOMAIN>;
  60. ssl_certificate /etc/letsencrypt/live/tubo.<YOUR_DOMAIN>/fullchain.pem;
  61. ssl_certificate_key /etc/letsencrypt/live/tubo.<YOUR_DOMAIN>/privkey.pem;
  62. location / {
  63. proxy_pass http://localhost:3000;
  64. proxy_set_header X-Forwarded-For $remote_addr;
  65. proxy_set_header HOST $http_host;
  66. }
  67. }
  68. #+end_src
  69. ** Road-map
  70. - [X] Basic audio player
  71. - [ ] Track queuing system
  72. - [ ] Playlists
  73. - [ ] User settings
  74. ** Screenshots
  75. [[https://files.migalmoreno.com/tubo_kiosk.jpg]]
  76. [[https://files.migalmoreno.com/tubo_channel.jpg]]
  77. [[https://files.migalmoreno.com/tubo_stream.jpg]]
  78. ** Contributing
  79. Feel free to open an issue with bug reports or feature requests. PRs are more than welcome too.