How do I set up a delivery profile and or CDN/Cloudfront?


#1

EDIT: Found this thread, following now: Configure Kaltura CE10 with S3 storage & Cloudfront CDN

I’m trying to hook up my cloudfront to Kaltura, but having a lot of issues. I’ve found several guides but I’m unable to set up my delivery settings to actually point it to Cloudfront. Any tutorial I’ve looked at reference Delivery Settings that don’t exist for me:


From this guide:
http://kaltura-install-packages.readthedocs.io/en/stable/setting-up-amazon-cloudfront-cdn-http-https/

I googled other people who had this issue, and they said they had just used the JSON pairs to point to their delivery profiles…question is, where the heck do those live? I see no config option anywhere in my publisher config…I’m at a loss and at my wit’s end.

Here was the thread detailing the missing Delivery Settings:

Can someone please help me figure out how to configure a CDN? This seems like a key feature and documentation seems sorely lacking on Kaltura’s end. The admin console page points to a broken link! “Learn more in the Kaltura.org Kaltura platform administration guides


#2

I found the API call for it…but no matter what I try it’s giving me a forbidden, even when I give it a valid KS secret that works with other things like distributionProfiles, I keep getting The access to service [deliveryProfile->add] is forbidden…

why? testing here:
http://www.kaltura.com/api_v3/testme/index.php


#3

Hi Jason,

The delivery profile/remote storage configuration was redone post the posts you reference.
Basically, you need to go to admin console->publishers->your publisher->Profiles

Then, we basically have a two parter:

  • Remote Storage
  • Delivery Profile

Remote storage is the configuration needed in order for Kaltura to store the media files onto AWS [or any other provider for that matter], delivery profile is the configuration needed in order for Kaltura to serve the files, as a result of a playManifest request by the player, usually.

As for the API, you can look at https://github.com/kaltura/platform-install-packages/blob/Kajam-11.15.0/RPM/scripts/postinst/create_remote_storage.php as reference, I believe it will help.


#5

Version: best way to determine is with:
# rpm -q kaltura-base

API: look at the code I sent, you need a -2 admin KS, and then you need to impersonate your partner.


#7

Nope. You’ll need to write code for that. Please look at the script I referred you to.


#8

It appears to me (please correct me if I’m wrong) that the script referenced is setting a lot of variables, presumably when a remote_storage profile is created. I have several remote storage profiles setup already and am successfully using Kaltura to play media from S3. However, I want it to use files from my CDN at Cloudfront. I see that the Remote Storage Profiles request delivery profile IDs in that script- but I’m unable to generate delivery profiles on my installation, since the option is unavailable on the dropdown for my config. It’s strange because I see the remote storage profile asking for my delivery profile IDs in the delivery settings, which I do not have, as far as I can tell. Is there a URL that should exist that I could try hitting to see if the page exists? I.E. for remote storage, the URL is : /admin_console/index.php/partner/external-storages/

Is there a reason why this option wouldn’t be there? I’m sorry if I’m being vague, I’m configuring the org but didn’t do the installation, so I’m not sure if the files are there or what version I’m using. But I do see the delivery settings that reflect 10.0. Despite the fact that my admin page says 9.18.


#9

Let’s start with determining which version we are working on.
What is the output for:
# rpm -q kaltura-base
?


#10

When running that command on cygwin, I get kaltura-base-9.18.0-5.noarch…so it’s weird that my remote_storage profile is requesting a delivery profile. I attached a screenshot of what my remote profile config looks like.


#11

Is there some sort of command I can run to update?


#12

Alright, finally got Kaltura updated and now see the delivery profiles…problem is when I try to configure one with my cloudfront URL, delivery profile type HTTP, Streamer type HTTP, and everything else default, I get "

An error occurred
(error code: Server:INTERNAL_SERVERL_ERROR)"

Any ideas on why this happens, or perhaps more detailed instructions to delivery profiles? The best I could do was https://knowledge.kaltura.com/kaltura-admin-console-user-manual#create_remote_storage_profile which doesn’t really explain the deliver profile.


#13

Additionally, having a few other issues now, like getting an “Internal server error occurred” whenever I try to open an asset page (then it loads fine, mostly). Other small issues I’m noticing now as well, such as being unable to download thumbnails, as well as having issues with thumbnails showing up in feeds.


#14

Hi,

Need to debug and understand what’s causing these errors.
The best way to start is to run:
# kaltlog
on the server’s shell while making the request, looking at the output and looking at the relevant log files checking for the flow that led to the final error/exception

Additionally, on your browser, open the dev tools and check for errors under the “network” tab. You should probably see a request which returned with HTTP 500.


#15

Oh, this is great! Here are some of the errors I’m getting. One major issue I want to resolve is why thumbnails aren’t being generated at a large size, and also aren’t even showing in Kalturas base feed.

When I try to open an entry:


2016-06-07 14:00:30 [0.000920] [45.59.236.158] [1234225618] [155] [API] [KalturaStatement->execute] DEBUG: Sql took - 0.00045013427734375 seconds
2016-06-07 14:00:30 [0.000833] [45.59.236.158] [1234225618] [156] [API] [kCoreException->__construct] ERR: exception ‘kCoreException’ with message ‘Dynamic enum not found [transcript.Transcript] for type [assetType]’ in /opt/kaltura/app/alpha/lib/kPluginableEnumsManager.php:167
Stack trace:
#0 /opt/kaltura/app/plugins/content/transcript/TranscriptPlugin.php(88): kPluginableEnumsManager::apiToCore(‘assetType’, ‘transcript.Tran…’)

#10 {main}
2016-06-07 14:00:30 [0.001150] [45.59.236.158] [1234225618] [157] [API] [KalturaFrontController->getExceptionObject] CRIT: exception ‘kCoreException’ with message ‘Dynamic enum not found [transcript.Transcript] for type [assetType]’ in /opt/kaltura/app/alpha/lib/kPluginableEnumsManager.php:167
Stack trace:
#0 /opt/kaltura/app/plugins/content/transcript/TranscriptPlugin.php(88): kPluginableEnumsManager::apiToCore(‘assetType’, ‘transcript.Tran…’)

2016-06-07 14:00:31 [0.000500] [663996134] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 14:00:31 [0.013797] [663996134] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)

When I try to access one of the smaller thumbnails:


#9 {main}
2016-06-07 15:29:29 [0.000733] [45.59.236.158] [1072939929] [319] [API] [kMrssManager::getEntryMrssXml] ERR: exception ‘Exception’ with message ‘Unable to add MRSS element for contributor [AttachmentPlugin] message [Dynamic enum not found [transcript.Transcript] for type [assetType]]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/alpha/apps/kaltura/lib/kMrssManager.php(571): KalturaLog::err(‘Unable to add M…’)

2016-06-07 15:29:29 [0.000680] [45.59.236.158] [1072939929] [342] [API] [KalturaStatement->execute] DEBUG: Sql took - 0.00020098686218262 seconds
2016-06-07 15:29:29 [0.000609] [45.59.236.158] [1072939929] [343] [API] [kCoreException->__construct] ERR: exception ‘kCoreException’ with message ‘Dynamic enum not found [transcript.Transcript] for type [assetType]’ in /opt/kaltura/app/alpha/lib/kPluginableEnumsManager.php:167
Stack trace:
#0 /opt/kaltura/app/plugins/content/transcript/TranscriptPlugin.php(88): kPluginableEnumsManager::apiToCore(‘assetType’, ‘transcript.Tran…’)

#9 {main}
2016-06-07 15:29:29 [0.000724] [45.59.236.158] [1072939929] [344] [API] [kMrssManager::getEntryMrssXml] ERR: exception ‘Exception’ with message ‘Unable to add MRSS element for contributor [AttachmentPlugin] message [Dynamic enum not found [transcript.Transcript] for type [assetType]]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/alpha/apps/kaltura/lib/kMrssManager.php(571): KalturaLog::err(‘Unable to add M…’)

2016-06-07 15:29:30 [0.000748] [45.59.236.158] [1072939929] [425] [API] [KalturaStatement->execute] DEBUG: Sql took - 0.0002589225769043 seconds
2016-06-07 15:29:30 [0.000673] [45.59.236.158] [1072939929] [426] [API] [kCoreException->__construct] ERR: exception ‘kCoreException’ with message ‘Dynamic enum not found [transcript.Transcript] for type [assetType]’ in /opt/kaltura/app/alpha/lib/kPluginableEnumsManager.php:167
Stack trace:
#0 /opt/kaltura/app/plugins/content/transcript/TranscriptPlugin.php(88): kPluginableEnumsManager::apiToCore(‘assetType’, ‘transcript.Tran…’)

#9 {main}
2016-06-07 15:29:30 [0.000735] [45.59.236.158] [1072939929] [427] [API] [kMrssManager::getEntryMrssXml] ERR: exception ‘Exception’ with message ‘Unable to add MRSS element for contributor [AttachmentPlugin] message [Dynamic enum not found [transcript.Transcript] for type [assetType]]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/alpha/apps/kaltura/lib/kMrssManager.php(571): KalturaLog::err(‘Unable to add M…’)

2016-06-07 15:29:30 [0.000724] [45.59.236.158] [1072939929] [592] [API] [KalturaStatement->execute] DEBUG: Sql took - 0.00025582313537598 seconds
2016-06-07 15:29:30 [0.000659] [45.59.236.158] [1072939929] [593] [API] [kCoreException->__construct] ERR: exception ‘kCoreException’ with message ‘Dynamic enum not found [transcript.Transcript] for type [assetType]’ in /opt/kaltura/app/alpha/lib/kPluginableEnumsManager.php:167
Stack trace:
#0 /opt/kaltura/app/plugins/content/transcript/TranscriptPlugin.php(88): kPluginableEnumsManager::apiToCore(‘assetType’, ‘transcript.Tran…’)

#9 {main}
2016-06-07 15:29:30 [0.000754] [45.59.236.158] [1072939929] [594] [API] [kMrssManager::getEntryMrssXml] ERR: exception ‘Exception’ with message ‘Unable to add MRSS element for contributor [AttachmentPlugin] message [Dynamic enum not found [transcript.Transcript] for type [assetType]]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/alpha/apps/kaltura/lib/kMrssManager.php(571): KalturaLog::err(‘Unable to add M…’)

2016-06-07 15:30:01 [0.000441] [714234815] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 15:30:01 [0.008611] [714234815] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)


#16

Please try:
# php /opt/kaltura/app/deployment/updates/update.php -i -d >> /opt/kaltura/log/kalt_up.log 2>&1
# php /opt/kaltura/app/deployment/updates/update.php -i -s >> /opt/kaltura/log/kalt_up.log 2>&1
# php /opt/kaltura/app/deployment/base/scripts/installPlugins.php >> /opt/kaltura/log/kalt_up.log 2>&1


#17

Aha, seemed to have worked for some of the problems!

So I have more issues trying to create a generic syndication feed through the API. When I make an add call in the testme console, and try to hit a feedUrl, it takes me to an empty white page /api_v3/testme/index.php

In the errors I keep seeing drop folders that point to a local file on my machine.


2016-06-07 17:47:20 [0.000424] [1807109551] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 17:47:20 [0.008455] [1807109551] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)

]
2016-06-07 17:47:55 [0.004110] [45.59.236.158] [1469110420] [4] [API] [KalturaFrontController->getExceptionObject] ERR: exception ‘KalturaAPIException’ with message ‘Missing parameter “secret”’ in /opt/kaltura/app/api_v3/lib/KalturaRequestDeserializer.php:191
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaDispatcher.php(82): KalturaRequestDeserializer->buildActionArguments(Array)

2016-06-07 17:48:22 [0.000434] [1566629703] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 17:48:22 [0.007998] [1566629703] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)

==> /opt/kaltura/log/kaltura_api_v3.log <==
2016-06-07 17:49:04 [0.100682] [45.59.236.158] [1566896137] [4] [API] [KalturaFrontController->getExceptionObject] ERR: exception ‘KalturaAPIException’ with message ‘The object type “KalturaBaseSyndicationFeed” is abstract, use one of the object implementations’ in /opt/kaltura/app/api_v3/lib/KalturaRequestDeserializer.php:281
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaRequestDeserializer.php(181): KalturaRequestDeserializer->buildObject(Object(KalturaTypeReflector), Array, ‘syndicationFeed’)

2016-06-07 17:49:23 [0.000452] [1844775162] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 17:49:23 [0.002736] [1844775162] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)

2016-06-07 17:50:24 [0.000487] [1762834557] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 17:50:24 [0.002754] [1762834557] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)

2016-06-07 17:51:25 [0.000444] [1593459514] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 17:51:25 [0.002743] [1593459514] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)

2016-06-07 17:52:26 [0.000419] [561953876] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 17:52:26 [0.002787] [561953876] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)

]
2016-06-07 17:52:45 [0.006003] [45.59.236.158] [982710659] [4] [API] [KalturaFrontController->getExceptionObject] ERR: exception ‘KalturaAPIException’ with message ‘The object type “KalturaBaseSyndicationFeed” is abstract, use one of the object implementations’ in /opt/kaltura/app/api_v3/lib/KalturaRequestDeserializer.php:281
Stack trace:
#0 /opt/kaltura/app/api_v3/lib/KalturaRequestDeserializer.php(181): KalturaRequestDeserializer->buildObject(Object(KalturaTypeReflector), Array, ‘syndicationFeed’)

==> /opt/kaltura/log/kaltura_api_v3.log <==
2016-06-07 17:53:11 [0.000000] [45.59.236.158] [620391692] [1] [API] [KExternalErrors::dieError] ERR: exception ‘Exception’ with message ‘exiting on error 35 - The given feed id is illegal, feedId not supplied’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/alpha/apps/kaltura/lib/KExternalErrors.class.php(128): KalturaLog::err(‘exiting on erro…’)

2016-06-07 17:53:27 [0.005751] [403320956] [47] [BATCH] [kFileTransferMgr->fileExists] DEBUG: File does not exist
2016-06-07 17:53:27 [0.002813] [403320956] [48] [BATCH] [KAsyncDropFolderWatcher->setDropFolderError] ERR: exception ‘Exception’ with message ‘Error with folder id [2] - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder]’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/plugins/drop_folder/batch/DropFolderWatcher/KAsyncDropFolderWatcher.class.php(115): KalturaLog::err(‘Error with fold…’)


#18

Syndication feed - the relevant error is:
"2016-06-07 17:49:04 [0.100682] [45.59.236.158] [1566896137] [4] [API] [KalturaFrontController->getExceptionObject] ERR: exception ‘KalturaAPIException’ with message ‘The object type “KalturaBaseSyndicationFeed” is abstract, use one of the object implementations’ in /opt/kaltura/app/api_v3/lib/KalturaRequestDeserializer.php:281"
I’ll look into it locally tomorrow before asking you to try stuff.

Dropfolder - Drop folder path not valid [\Users\castl_000\Dropbox\Drop Folder

which is indeed true. This is a Linux system so the path will never have ‘’. Linux uses ‘/’ as path separator.
Do you mean you want to mount a local directory from your own machine onto the server hosting Kaltura? if so, you can, of course but, you need to mount it and set permissions so that the ‘kaltura’ user has access to it.


#19

I was testing it out but I’m not even sure where the config lives anymore…it’s in all my publishers orgs. Maybe it’s by default using a drop folder config


#20

Hmm, no, orgs with no Drop Folder Profiles are still generating those errors. Strange.


#21

Here is the errors that show up when I try to upload content, now that I’ve (tried) to set up remote storage with s3/cloudfront.

2016-06-07 19:37:32 [0.000788] [45.59.236.158] [1119043496] [53] [PS2] [KalturaStatement->execute] DEBUG: Sql took - 0.00031495094299316 seconds
2016-06-07 19:37:32 [0.000626] [45.59.236.158] [1119043496] [54] [PS2] [KExternalErrors::dieError] ERR: exception ‘Exception’ with message ‘exiting on error 6 - requested flavor was not found’ in /opt/kaltura/app/infra/log/KalturaLog.php:83
Stack trace:
#0 /opt/kaltura/app/alpha/apps/kaltura/lib/KExternalErrors.class.php(128): KalturaLog::err(‘exiting on erro…’)

        [tmp_name] => /opt/kaltura/web/tmp/phpuONJEm
        [error] => 0
        [size] => 28059144


[tmp_name] => /opt/kaltura/web/tmp/phpuONJEm
[error] => 0
[size] => 28059144


#22

Let’s start by checking this: did the entry convert and is in ready state?