Solução Open source para provedores de IPTV/OTT com Magoware


Magoware é uma solução de código aberto para provedores de IPTV/OTT. Para qualquer dispositivo, em qualquer lugar, a qualquer hora. Solução de middleware, proteção de conteúdo (DRM), rede de entrega de conteúdo (CDN).

Recebi um pedido de um leitor (Cleicimar) que estava tentando levantar um servidor com o projeto Magoware, solução para plataforma IPTV/OTT.

Distribuição utilizada: Debian 9 (Instalação limpa)

Antes de começar vamos ao pré-requisitos da instalação: Node.js e NPM

Vamos baixar projeto em /usr/local/src/magoware/

Entre no diretório e vamos a instalação:

Será necessário ter um banco de dados instalado, de cara fui logo tentando com mariadb, mas para minha surpresa não foi possível realizar a instalação, então vamos precisar dos repositórios do mysql e para sua isntalação.

Adicionamos então ao nosso repositório:

Faça um update do repositórios e então inicia a instalação

Durante a isntalçao será solicitado a senha para o usuario root do mysql.

Entre no terminal do mysql, e crie nosso banco de dados e um usuário para acessa-lo.

Certifique-se que está no diretório: /usr/local/src/magoware/

Agora inicie o Magaware

Na primeira vez será solicitado dados para conexão com o banco de dados mysql:

Acesse em seu navegador http://seu-servidor/admin. Usuário e senha são: admin

Será necessário criar um script de inicialização, já expliquei como fazer em vários outros tutorias, exite diversas formas.

Caso altere os dados da conexão mysql será necessários editar o arquivo /config/env/db.connection.js

Espero ter ajudado! Vale ressaltar que não tenho muito conhecimento sobre o projeto, e estou tentando entende-lo melhor.
Então quem sabe em uma outra oportunidade possa atualizar este tutorial, ou criar um novo explicando como “mexer” no nele.

Canal Magoware no Youtube: https://www.youtube.com/channel/UC7HELrblDb9peuFCFweu0HQ

FONTE: https://www.magoware.tv/knowledgebase/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

22 Resultados

  1. Alexandre disse:

    quando vou tentar criar um canal

    2019-10-09T20:05:23.901Z – verbose: Executing (default): SELECT count(genre.id) AS count FROM genre AS genre LEFT OUTER JOIN channels AS channels ON genre.id = channels.genre_id WHERE genre.company_id = 1 GROUP BY genre.id, genre.description;
    2019-10-09T20:05:23.906Z – verbose: Executing (default): SELECT genre.id, genre.description, genre.icon_url, genre.is_available, channels.id AS channels.id, count(channels.id) AS channels.total FROM genre AS genre LEFT OUTER JOIN channels AS channels ON genre.id = channels.genre_id WHERE genre.company_id = 1 GROUP BY genre.id, genre.description;
    error: Getting genre list failed with error: message=ER_WRONG_FIELD_WITH_GROUP: Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘magoware.channels.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by, name=SequelizeDatabaseError, stack=SequelizeDatabaseError: ER_WRONG_FIELD_WITH_GROUP: Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘magoware.channels.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    at Query.formatError (/usr/local/src/magoware/node_modules/sequelize/lib/dialects/mysql/query.js:175:14)
    at Query. (/usr/local/src/magoware/node_modules/sequelize/lib/dialects/mysql/query.js:49:21)
    at Query. (/usr/local/src/magoware/node_modules/mysql/lib/Connection.js:525:10)
    at Query._callback (/usr/local/src/magoware/node_modules/mysql/lib/Connection.js:491:16)
    at Query.Sequence.end (/usr/local/src/magoware/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
    at Query.ErrorPacket (/usr/local/src/magoware/node_modules/mysql/lib/protocol/sequences/Query.js:90:8)
    at Protocol._parsePacket (/usr/local/src/magoware/node_modules/mysql/lib/protocol/Protocol.js:291:23)
    at Parser._parsePacket (/usr/local/src/magoware/node_modules/mysql/lib/protocol/Parser.js:433:10)
    at Parser.write (/usr/local/src/magoware/node_modules/mysql/lib/protocol/Parser.js:43:10)
    at Protocol.write (/usr/local/src/magoware/node_modules/mysql/lib/protocol/Protocol.js:38:16)
    at Socket. (/usr/local/src/magoware/node_modules/mysql/lib/Connection.js:91:28)
    at Socket. (/usr/local/src/magoware/node_modules/mysql/lib/Connection.js:525:10)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:601:20)
    From previous event:
    at Query.run (/usr/local/src/magoware/node_modules/sequelize/lib/dialects/mysql/query.js:39:17)
    at /usr/local/src/magoware/node_modules/sequelize/lib/sequelize.js:849:20
    at /usr/local/src/magoware/node_modules/retry-as-promised/index.js:39:21
    From previous event:
    at retryAsPromised (/usr/local/src/magoware/node_modules/retry-as-promised/index.js:29:10)
    at /usr/local/src/magoware/node_modules/sequelize/lib/sequelize.js:848:12
    From previous event:
    at Promise.then (/usr/local/src/magoware/node_modules/sequelize/lib/promise.js:21:17)
    at Model.findAndCount (/usr/local/src/magoware/node_modules/sequelize/lib/model.js:1672:35)
    at exports.list (/usr/local/src/magoware/modules/mago/server/controllers/genre.server.controller.js:142:11)
    at Layer.handle [as handle_request] (/usr/local/src/magoware/node_modules/express/lib/router/layer.js:95:5)
    at next (/usr/local/src/magoware/node_modules/express/lib/router/route.js:137:13)
    at exports.isAllowed (/usr/local/src/magoware/modules/mago/server/policies/mago.server.policy.js:174:9)
    at Layer.handle [as handle_request] (/usr/local/src/magoware/node_modules/express/lib/router/layer.js:95:5)
    at next (/usr/local/src/magoware/node_modules/express/lib/router/route.js:137:13)
    at exports.Authenticate (/usr/local/src/magoware/modules/mago/server/policies/mago.server.policy.js:135:9)
    at Layer.handle [as handle_request] (/usr/local/src/magoware/node_modules/express/lib/router/layer.js:95:5)
    at next (/usr/local/src/magoware/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/usr/local/src/magoware/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/usr/local/src/magoware/node_modules/express/lib/router/layer.js:95:5)
    at /usr/local/src/magoware/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/usr/local/src/magoware/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/local/src/magoware/node_modules/express/lib/router/index.js:275:10)
    at SendStream.error (/usr/local/src/magoware/node_modules/serve-static/index.js:121:7)
    at emitOne (events.js:116:13)
    at SendStream.emit (events.js:211:7)
    at SendStream.error (/usr/local/src/magoware/node_modules/send/index.js:270:17)
    at SendStream.onStatError (/usr/local/src/magoware/node_modules/send/index.js:421:12)
    at next (/usr/local/src/magoware/node_modules/send/index.js:735:16)
    at onstat (/usr/local/src/magoware/node_modules/send/index.js:724:14)
    at FSReqWrap.oncomplete (fs.js:152:21), code=ER_WRONG_FIELD_WITH_GROUP, errno=1055, sqlMessage=Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘magoware.channels.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by, sqlState=42000, index=0, sql=SELECT genre.id, genre.description, genre.icon_url, genre.is_available, channels.id AS channels.id, count(channels.id) AS channels.total FROM genre AS genre LEFT OUTER JOIN channels AS channels ON genre.id = channels.genre_id WHERE genre.company_id = 1 GROUP BY genre.id, genre.description;, $ref=$[“parent”], sql=SELECT genre.id, genre.description, genre.icon_url, genre.is_available, channels.id AS channels.id, count(channels.id) AS channels.total FROM genre AS genre LEFT OUTER JOIN channels AS channels ON genre.id = channels.genre_id WHERE genre.company_id = 1 GROUP BY genre.id, genre.description;, __stackCleaned__=true
    2019-10-09T20:05:23.973Z – verbose: Executing (default): SELECT count(package.id) AS count FROM package AS package INNER JOIN package_type AS package_type ON package.package_type_id = package_type.id WHERE package.package_type_id IN (‘1’, ‘2’) AND package.company_id = 1;

  2. João Pedro disse:

    Boa tarde, consegui dar prosseguimento da instalação. Criei o stream, um canal VOD, um pacote, um plano e um usuario, mas agora nao consegui o caminho para visualizar esse canal num app iptv ou pelo navegador. Normalmente, seria uma lista “.m3u”, tentei pegar um link de outro iptv mas sem sucesso ainda. Alguém ja chegou nesse ponto?

  3. João Pedro disse:

    Eu instalei no debian 9 e nao tive dificuldades, mas na hora do login com admin vejo o erro “Company Disabled due to Payment”. No forum da github vi umas pessoas falando pra editar a coluna “billing_date” na tabela “settings”, eu acessei o banco com o Workbench mas eu nao achei. Alguem já passou por isso? Tem uma dica de como resolver?

  4. JULIERME DA SILVA PINHEIRO disse:

    Ola fiz toda instalação e na hora de logar nao entra com possiveis usuários nenhum oque poderia ser

  5. paulo ferreira disse:

    boas , a min nao arrancar no final da-me sempre erro poderia ajudar
    fatal: true },
    original: { ‘$ref’: ‘$[“parent”]’ },
    __stackCleaned__: true }
    Unhandled rejection SequelizeAccessDeniedError: ER_ACCESS_DENIED_ERROR: Access d enied for user ‘magoware’@’localhost’ (using password: YES)
    at Handshake. (/usr/local/src/magoware/node_modules/sequelize/lib /dialects/mysql/connection-manager.js:83:20)
    at Handshake. (/usr/local/src/magoware/node_modules/mysql/lib/Con nection.js:525:10)
    at Handshake._callback (/usr/local/src/magoware/node_modules/mysql/lib/Conne ction.js:491:16)
    at Handshake.Sequence.end (/usr/local/src/magoware/node_modules/mysql/lib/pr otocol/sequences/Sequence.js:83:24)
    at Handshake.ErrorPacket (/usr/local/src/magoware/node_modules/mysql/lib/pro tocol/sequences/Handshake.js:125:8)
    at Protocol._parsePacket (/usr/local/src/magoware/node_modules/mysql/lib/pro tocol/Protocol.js:291:23)
    at Parser._parsePacket (/usr/local/src/magoware/node_modules/mysql/lib/proto col/Parser.js:433:10)
    at Parser.write (/usr/local/src/magoware/node_modules/mysql/lib/protocol/Par ser.js:43:10)
    at Protocol.write (/usr/local/src/magoware/node_modules/mysql/lib/protocol/P rotocol.js:38:16)
    at Socket. (/usr/local/src/magoware/node_modules/mysql/lib/Connec tion.js:91:28)
    at Socket. (/usr/local/src/magoware/node_modules/mysql/lib/Connec tion.js:525:10)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:601:20)
    From previous event:
    at ConnectionManager.connect (/usr/local/src/magoware/node_modules/sequelize /lib/dialects/mysql/connection-manager.js:55:10)
    at ConnectionManager. (/usr/local/src/magoware/node_modules/seque lize/lib/dialects/abstract/connection-manager.js:247:43)
    at runCallback (timers.js:810:20)
    at tryOnImmediate (timers.js:768:5)
    at processImmediate [as _immediateCallback] (timers.js:745:5)
    From previous event:
    at Promise.then (/usr/local/src/magoware/node_modules/sequelize/lib/promise. js:21:17)
    at ConnectionManager.$connect (/usr/local/src/magoware/node_modules/sequeliz e/lib/dialects/abstract/connection-manager.js:246:70)
    at ConnectionManager.getConnection (/usr/local/src/magoware/node_modules/seq uelize/lib/dialects/abstract/connection-manager.js:203:44)
    at Sequelize.query (/usr/local/src/magoware/node_modules/sequelize/lib/seque lize.js:844:83)
    at Sequelize.authenticate (/usr/local/src/magoware/node_modules/sequelize/li b/sequelize.js:1085:15)
    at Object.db.connect (/usr/local/src/magoware/config/lib/sequelize.js:76:15)
    at Object. (/usr/local/src/magoware/config/lib/sequelize-connect. js:22:5)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object. (/usr/local/src/magoware/config/lib/app.js:9:15)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)

  6. Moises Fontes disse:

    Rudimar, parabéns pelo Blog. No momento de instalar o npm: -bash: npm: comando não encontrado
    Como posso resolver?

    Obrigado.

  7. EMERSON disse:

    boa noite meu amigo, instalei tudo certo eu acho não deu nenhum erro e tals mais na hora de eu entrar no painel não aparece nada ja coloquei meu ip, localhost e nada poderia me orientar?

  8. Marcelo Luiz Lubasinski disse:

    Rudimar boa noite
    Consigo depois criar uma lista e acessar via kodi?

  9. REGEANE ARIELLE DOS SANTOS disse:

    Boa tarde Rudimar Remonti!
    Pra mim não pediu senha ao instalar o mariadb, e me retorna essa mensagem quando inicializo o node server.js
    2019-03-18T17:56:56.709Z – error: error reading database settings:
    { message: ‘ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MariaDB client’,
    name: ‘SequelizeConnectionError’,
    stack: ‘SequelizeConnectionError: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MariaDB client\n at Handshake. (/usr/local/src/magoware/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:95:20)\n at Handshake. (/usr/local/src/magoware/node_modules/mysql/lib/Connection.js:502:10)\n at Handshake._callback (/usr/local/src/magoware/node_modules/mysql/lib/Connection.js:468:16)\n at Handshake.Sequence.end (/usr/local/src/magoware/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)\n at Handshake.ErrorPacket (/usr/local/src/magoware/node_modules/mysql/lib/protocol/sequences/Handshake.js:126:8)\n at Protocol._parsePacket (/usr/local/src/magoware/node_modules/mysql/lib/protocol/Protocol.js:278:23)\n at Parser.write (/usr/local/src/magoware/node_modules/mysql/lib/protocol/Parser.js:76:12)\n at Protocol.write (/usr/local/src/magoware/node_modules/mysql/lib/protocol/Protocol.js:38:16)\n at Socket. (/usr/local/src/magoware/node_modules/mysql/lib/Connection.js:91:28)\n at Socket. (/usr/local/src/magoware/node_modules/mysql/lib/Connection.js:502:10)\n at emitOne (events.js:116:13)\n at Socket.emit (events.js:211:7)\n at addChunk (_stream_readable.js:263:12)\n at readableAddChunk (_stream_readable.js:250:11)\n at Socket.Readable.push (_stream_readable.js:208:10)\n at TCP.onread (net.js:601:20)\nFrom previous event:\n at ConnectionManager.connect (/usr/local/src/magoware/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:55:10)\n at ConnectionManager. (/usr/local/src/magoware/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:247:43)\n at runCallback (timers.js:810:20)\n at tryOnImmediate (timers.js:768:5)\n at processImmediate [as _immediateCallback] (timers.js:745:5)\nFrom previous event:\n at Promise.then (/usr/local/src/magoware/node_modules/sequelize/lib/promise.js:21:17)\n at ConnectionManager.$connect (/usr/local/src/magoware/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:246:70)\n at ConnectionManager.getConnection (/usr/local/src/magoware/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:203:44)\n at Sequelize.query (/usr/local/src/magoware/node_modules/sequelize/lib/sequelize.js:844:83)\n at Sequelize.authenticate (/usr/local/src/magoware/node_modules/sequelize/lib/sequelize.js:1085:15)\n at Object.db.connect (/usr/local/src/magoware/config/lib/sequelize.js:71:15)\n at Object. (/usr/local/src/magoware/config/lib/sequelize-connect.js:22:5)\n at Module._compile (module.js:653:30)\n at Object.Module._extensions..js (module.js:664:10)\n at Module.load (module.js:566:32)\n at tryModuleLoad (module.js:506:12)\n at Function.Module._load (module.js:498:3)\n at Module.require (module.js:597:17)\n at require (internal/module.js:11:18)\n at Object. (/usr/local/src/magoware/config/lib/app.js:9:15)\n at Module._compile (module.js:653:30)\n at Object.Module._extensions..js (module.js:664:10)\n at Module.load (module.js:566:32)\n at tryModuleLoad (module.js:506:12)’,
    parent:
    { code: ‘ER_NOT_SUPPORTED_AUTH_MODE’,
    errno: 1251,
    sqlMessage: ‘Client does not support authentication protocol requested by server; consider upgrading MariaDB client’,
    sqlState: ‘08004’,
    fatal: true },

    Se puder me dar uma luz…. ficaria agradecida

    • Mariadb não pede senha a senhá tem q ser criada posteriormente, como em outros tutorial que tem no blog que explica.
      Porém no tutorial fala para usar o MYSQL, pois o Mariadb NÃO FUNCIONA.
      Esta lá: […]de cara fui logo tentando com mariadb, mas para minha surpresa não foi possível realizar a instalação[…]

  10. Baligh disse:

    Hello

    Thank you for your helping and nice job to go step by step to install Magoware IPTV system

    I install it and when try to access no action run when I click on login
    at the same time I can see

    error: Finding the user failed with error: message=groups is not associated to users!, stack=Error: groups is not associated to users!
    at Model.validateIncludedElement (/usr/local/src/magoware/node_modules/sequelize/lib/model.js:558:11)
    at /usr/local/src/magoware/node_modules/sequelize/lib/model.js:440:29
    at Array.map ()
    at Model.validateIncludedElements (/usr/local/src/magoware/node_modules/sequelize/lib/model.js:436:37)
    at Model. (/usr/local/src/magoware/node_modules/sequelize/lib/model.js:1372:32)
    at runCallback (timers.js:810:20)
    at tryOnImmediate (timers.js:768:5)
    From previous event:
    at Promise.then (/usr/local/src/magoware/node_modules/sequelize/lib/promise.js:21:17)
    at Model.findAll (/usr/local/src/magoware/node_modules/sequelize/lib/model.js:1368:6)
    at Model.findOne (/usr/local/src/magoware/node_modules/sequelize/lib/model.js:1527:34)
    at exports.authenticate (/usr/local/src/magoware/modules/mago/server/controllers/authentication.controller.js:37:13)
    at Layer.handle [as handle_request] (/usr/local/src/magoware/node_modules/express/lib/router/layer.js:95:5)
    at next (/usr/local/src/magoware/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/usr/local/src/magoware/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/usr/local/src/magoware/node_modules/express/lib/router/layer.js:95:5)
    at /usr/local/src/magoware/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/usr/local/src/magoware/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/local/src/magoware/node_modules/express/lib/router/index.js:275:10)
    at serveStatic (/usr/local/src/magoware/node_modules/serve-static/index.js:75:16)
    at Layer.handle [as handle_request] (/usr/local/src/magoware/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/usr/local/src/magoware/node_modules/express/lib/router/index.js:317:13)
    at /usr/local/src/magoware/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/usr/local/src/magoware/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/local/src/magoware/node_modules/express/lib/router/index.js:275:10)
    at hsts (/usr/local/src/magoware/node_modules/hsts/index.js:42:5)
    at Layer.handle [as handle_request] (/usr/local/src/magoware/node_modules/express/lib/router/layer.js:95:5), __stackCleaned__=true

    Can you kindly let me know how to solve this issue

    Regards

  11. Édipo Avanzo disse:

    Caso eu quiser fazer dele um servidor VOD e adicionar filmes, como fica a questão de copyright dos filmes, séries, etc?

  12. Tom disse:

    olá querido Rudimar Remontti ! tudo bem ? então eu fiz certinho e so deu erro no final do npm install, eu tenho pequeno provedor e gostaria muito de testar essa aplicação para um projeto futuro nosso de iptv dentro da nossa rede de fibra. POderia me ajudar ? o erro foi este;

    gyp ERR! stack Error: EACCES: permission denied, mkdir ‘/usr/local/src/magoware/node_modules/node-sass/.node-gyp’
    gyp ERR! System Linux 3.16.0-4-amd64
    gyp ERR! command “/usr/bin/node” “/usr/local/src/magoware/node_modules/node-gyp/bin/node-gyp.js” “rebuild” “–verbose” “–libsass_ext=” “–libsass_cflags=” “–libsass_ldflags=” “–libsass_library=”
    gyp ERR! cwd /usr/local/src/magoware/node_modules/node-sass
    gyp ERR! node -v v8.14.0
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    Build failed with error code: 1
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! node-sass@4.10.0 postinstall: node scripts/build.js
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the node-sass@4.10.0 postinstall script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

    npm ERR! A complete log of this run can be found in:
    npm ERR! /root/.npm/_logs/2018-12-09T00_24_16_403Z-debug.log

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *