amagovpt / autenticacao.gov

Middleware Oficial de Identificação Eletrónica em Portugal - Cartão de Cidadão, da Chave Móvel Digital e Sistema de Certificação de atributos profissionais
https://www.autenticacao.gov.pt
European Union Public License 1.2
168 stars 33 forks source link

Docker Image da aplicação #64

Closed afonsocraposo closed 3 years ago

afonsocraposo commented 3 years ago

Queria partilhar a docker image que criei da aplicação e que permite correr a mesma em sistemas operativos onde normalmente não funcionaria (por exemplo: Arch Linux).

https://hub.docker.com/r/afonsocraposo/autenticacao-gov-pt

Para utilizar basta fazer:

docker pull afonsocraposo/autenticacao-gov-pt
docker run -v $HOME:/root --net=host -e DISPLAY=:0 afonsocraposo/autenticacao-gov-pt
ACamposPT commented 3 years ago

Ola Afonso, Várias questões se colocariam aqui, nomeadamente relacionadas com o acesso ao Cartão, mas parabéns pela iniciativa.

Tentei correr seguindo os teu comandos e tenho problema no carregamento do ambiente gráfico do QT em ambiente Ubuntu 20.04:

>> uname -a
Linux campos-Lenovo-ThinkBook-14-IIL 5.8.0-48-generic #54~20.04.1-Ubuntu SMP Sat Mar 20 13:40:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

>> sudo docker run -v $HOME:/root --net=host -e DISPLAY=:0 afonsocraposo/autenticacao-gov-pt
C++: Using application scaling.
C++: Application scaling:  1
C++: AppController started. App version:  "3.5.0 - 4271 [ 3b9a9429 ]"
C++: currentCpuArchitecture(): "x86_64"
C++: prettyProductName(): "Ubuntu 20.04.2 LTS"
C++: Starting App with software graphics acceleration
No protocol specified
qt.qpa.xcb: could not connect to display :0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Alguma ideia para resolver o problema?

afonsocraposo commented 3 years ago

Olá, Obrigado! Não tenho forma de experimentar com o cartão, mas suponho que seriam necessárias algumas alterações na "docker image" para funcionar. Eu costumo usar com a chave móvel digital e, nesse caso, funciona muito bem.

Sobre o problema que tiveste, não sei exatamente a solução, mas estive a investigar e supostamente o seguinte comando resolveu o problema a uma pessoa:

xhost +local:docker

https://github.com/ericspod/DicomBrowser/issues/3#issuecomment-732355357

ACamposPT commented 3 years ago

Olá, Sim este comando resolve o problema em Ubuntu relacionado com as permissões relativas ao acesso do docker ao servidor X do host. Com o comando xhost +local:docker a aplicação já arranca.

Detectei as seguintes limitações:

afonsocraposo commented 3 years ago

Olá, Sobre as limitações apontadas:

Tipicamente uso a aplicação para assinar digitalmente documentos, daí não ter testado as outras funcionalidades :)

joaopedrotaveira commented 3 years ago

Hi,

I don't know if I can take some time to test cardreader access, but I can share some links about this subject.

I found solutions for USB access on balena-os: Docker container cannot access dynamically plugged USB devices

Or using docker command in any distro, in a super-hero approach: Docker - a way to give access to a host USB or serial device? (note: this link refers to access to serial ports inside docker using usbfs or direct access to kernel device ttyUSB0)

I think that common USB card readers don't require root privileges to access to usbfs.

Best Regards, Stay Safe

afonsocraposo commented 3 years ago

Obrigado pela sugestão @joaopedrotaveira ! Parece muito interessante e uma boa forma de integrar o leitor de cartões na Docker image. Eu não tenho um leitor de cartões USB com que testar, mas se alguém tiver, sinta-se livre para colaborar no projeto :) https://github.com/Afonsocraposo/autenticacao-gov-pt