MicroTube is a video hosting and streaming service made with .NET and Angular. The out-of-the-box version of the project uses SqlServer as a database and some Azure services, but they can be easily switched out. Preview production version is available at https://microtube.dev.
- Integrated complete authentication system featuring high security and session management
- Robust video uploading and processing pipeline made with Hangfire and FFmpeg
- Extensive search with typing suggestions, sorting and filtering made with Elasticsearch
- AzureCDN for media content distribution
- Like/Dislike and Views tracking and aggregation
- Responsive UI, using Angular Material
- Completely dockerized with docker-compose.yml
- Extensive configuration
- OpenAPI docs at https://api.microtube.dev/swagger
- Make sure you have a Docker version supporting "docker compose"
- Set the following secrets in a preferable way (I use secrets.json). The values in the example below should work out of the box. REPLACE THEM WITH YOUR OWN FOR PRODUCTION.
{
"ConnectionStrings": {
"Default": "Server=tcp:sql-server,1433;Database=MicroTubeDb;User Id=sa;Password=devpassword12345++;Trusted_Connection=False;Connect Timeout=20;Encrypt=False;Trust Server Certificate=True;Command Timeout=10"
},
"JwtAccessTokens": {
"Key": "some_64_bytestring_EyTF0Zk3iMJyphaTa3j9uEeYDVdxSzuwqCePduTuP9jPA"
},
"AuthenticationEmailing": {
"SenderSMTPPassword": "no-reply-password"
},
"AzureBlobStorage": {
"ConnectionString": "UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://azurite"
},
"ElasticSearch": {
"ApiKey": "does_not_matter_in_development"
}
}
- Run "docker compose up".
- Trust the localhost certificate in Shared/Dev_Certificates/ to remove https warning in browsers.
- Run "docker compose up". All containers should be running.
Development endpoints:
- Web UI: https://localhost44466
- API: https://localhost:7146/swagger
- Dev SMTP: http://localhost:5000 (all emails will end up here)
- Kibana: http://localhost:5601
- Elasticsearch: http://localhost:9200