a Youtube-like (without censorship and features you don't need!) Video Sharing App
100K+
tube is a Youtube-like (without censorship and features you don't need!)
Video Sharing App written in Go which also supports automatic transcoding to
MP4 H.265 AAC, multiple collections and RSS feed.
/feed.xml)

$ brew tap prologic/tube
$ brew install tube
$ tube
Open http://127.0.0.1:8000/ in your Browser!
./tubeOpen http://127.0.0.1:8000/ in your Browser!
$ docker pull prologic/tube
$ docker run -p 8000:8000 -v /path/to/data:/data
Open http://DOCKER_MACHINE_IP:8000/ in your Browser!
Where DOCKER_MACHINE_IP is the IP Address of your Docker Node.
$ git clone https://github.com/prologic/tube
$ cd tube
$ make
$ ./tube
Open http://127.0.0.1:8000/ in your Browser!
A Production Deployment can be found at https://tube.mills.io/ -- This is run and managed via a Docker Swarm cluster with a Docker-Compose / Stack very similiar to the one you can find in the repo: docker-compose.yml
Beyond this a "Production Deployment" is out-of-scope at this time for the documentation being provided here. Please don't hesitate to file an Issue however for ask for help or advice or contact the author directly!
tube can be configured to suit your particular needs and comes by default with
a sensbile set of defaults. There is also a default configuration at the
top-level config.json that you can use as a start point and
modify to suite your needs.
To Run tube with a provided configuration just pass the -c /path/to/config
option; for example:
$ tube -c config.json
Everything in the configuration is optional as the builtin defaults are used if you do not supply anything, omit some sections or values or the configuration is invalid. Refer to the default config.json for the builtin defaults (this files matches the builtin defaults).
Here are some documentation on key configuration items:
{
"library": [
{
"path": "videos",
"prefix": ""
}
],
}
Set path to the value of the path where you want to store videos and where
tube will look for new videos.
{
"server": {
"host": "0.0.0.0",
"port": 8000,
"store_path": "tube.db",
"upload_path": "uploads",
"max_upload_size": 104857600
}
}
host to the interface you wish to bind to. If you want to only bind
your local machine (ie: localhost) set this to 127.0.0.1.port to any port you wish to bind the listening socket of the server
to. It doesn't matter what it is as long as there it doesn't collide with
a port already in use on your system.store_path to a directory where tube will store statistics on videos
viewed.upload_path to a directory that you wish to use as a temporary working
space for tube to store uploaded videos and process them. This can be a
tmpfs file system for example for faster I/O.max_upload_size to the maximum number of bytes you wish to impose on
uploaded and imported videos. Upload(s)/Import(s) that exceed this size will
by denied by the server. This is a saftey measure so as to not DoS the
Tube server instance. Set it to a sensible value you see fit.{
"thumbnailer": {
"timeout": 60
},
"transcoder": {
"timeout": 300,
"sizes": null
}
}
Set timeout to the no. of seconds to permit for thumbnail generation and
video transcoding. This value has to be large enough for thumbnail generation
and transcoding to take place depending on the max_upload_size permitted.
These values also depend on the underlying performance of the machine Tube
runs on. Use sensible values for your max_upload_size + system performance.
This is a safety measure to ensure background processed do not run away
and/or hog system resources. The thumbnailer and transcoder processes will
be killed if their execution time exceeds these values.
Set sizes to an map of size => suffix that you wish to support for
transcoding videos to lower quality on Upload/Import. This is especially
useful for serving up videos to users that have poor bandwidth or where
data charges are high for them. The following is a valid map:
{
"transcoder": {
"sizes": {
"hd720": "720p",
"hd480": "480p",
"nhd": "360p",
"film": "240p"
}
}
}
{
"feed": {
"external_url": "",
"title": "Feed Title",
"link": "http://your-url.example/about",
"description": "Feed Description",
"author": {
"name": "Author Name",
"email": "[email protected]"
},
"copyright": "Copyright Text"
}
}
{ "copyright": { "content": "All Content herein Public Domain and User Contributed." } }
Support the ongoing development of Tube!
Sponser
Thank you to all those that have contributed to this project, battle-tested it, used it in their own projects or products, fixed bugs, improved performance and even fix tiny typos in documentation! Thank you and keep contributing!
You can find an AUTHORS file where we keep a list of contributors to the project. If you contriibute a PR please consider adding your name there. There is also Github's own Contributors statistics.
tube source code is available under the MIT License.
Previously based off of tube by davy wybiral . (See LICENSE.old)
Content type
Image
Digest
sha256:ce8c283ef…
Size
54.5 MB
Last updated
over 1 year ago
docker pull prologic/tube