1
0
mirror of https://github.com/covidpass-org/covidpass.git synced 2025-02-16 19:50:42 +01:00

Add web app to docker compose

This commit is contained in:
Marvin Sextro 2021-06-25 21:21:58 +02:00
parent c46649c28d
commit d6fc421755
6 changed files with 37 additions and 53 deletions

View File

@ -1,10 +1,10 @@
# CovidPass
Webtool for generating a wallet pass from an official EU COVID-19 Vaccination Certificate QR code
Web app for adding EU COVID-19 Vaccination Certificates to your wallets
## Debug locally
```sh
docker build . -t covidpass
docker run --env-file .env -t -i -p 3000:3000 covidpass
docker run -t -i -p 3000:3000 covidpass
```

View File

@ -91,7 +91,7 @@ function Form() {
I have read the <a href="/privacy">Privacy Policy</a>
</p>
</label>
<form id="hidden" action="http://localhost:8000/covid.pkpass" method="POST">
<form id="hidden" action="https://api.covidpass.marvinsextro.de/covid.pkpass" method="POST">
<input type="hidden" id="payload" name="payload" />
<button id="download" type="download" disabled className="shadow-inner focus:outline-none bg-green-600 py-1 px-2 text-white font-semibold rounded-md disabled:bg-gray-400">
Add to Wallet

View File

@ -6,11 +6,13 @@ services:
image: "traefik:v2.4"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--api.insecure=false"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
#- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=marvin.sextro@gmail.com"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
@ -22,16 +24,44 @@ services:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
covidpass-api:
container_name: covidpass-api
image: "marvinsxtr/covidpass-api"
image: "marvinsxtr/covidpass-api:latest"
restart: "unless-stopped"
environment:
- NODE_ENV=production
- API_URL=https://api.covidpass.marvinsextro.de/covid.pkpass
ports:
- "8000:8000"
- "8000:8000"
labels:
- "traefik.enable=true"
- "traefik.http.routers.covidpass-api.rule=Host(`api.covidpass.marvinsextro.de`)"
- "traefik.http.routers.covidpass-api.entrypoints=websecure"
- "traefik.http.routers.covidpass-api.tls.certresolver=myresolver"
- "traefik.http.routers.covidpass-api.middlewares=covidpass-api-https-only"
- "traefik.http.middlewares.covidpass-api-https-only.redirectscheme.scheme=https"
- "traefik.http.middlewares.covidpass-api-https-only.redirectscheme.permanent=true"
- "traefik.http.middlewares.covidpass-api-https-only.redirectscheme.port=443"
secrets:
- env
covidpass:
image: "marvinsxtr/covidpass:latest"
restart: "unless-stopped"
environment:
- NODE_ENV=production
ports:
- "3000:3000"
labels:
- "traefik.enable=true"
- "traefik.http.routers.covidpass.rule=Host(`covidpass.marvinsextro.de`)"
- "traefik.http.routers.covidpass.entrypoints=websecure"
- "traefik.http.routers.covidpass.tls.certresolver=myresolver"
- "traefik.http.routers.covidpass.middlewares=covidpass-https-only"
- "traefik.http.middlewares.covidpass-https-only.redirectscheme.scheme=https"
- "traefik.http.middlewares.covidpass-https-only.redirectscheme.permanent=true"
- "traefik.http.middlewares.covidpass-https-only.redirectscheme.port=443"
depends_on:
- covidpass-api
secrets:
env:
file: ./.env

View File

@ -1,6 +0,0 @@
module.exports = {
img1xblack48dp: new Buffer.from('iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABrUlEQVR4Ae3SA6iecRSA8dlWbra9tKXZ3nKzkXEzZy9jCnOYbZth5rWNc59rf/rr4n3ql+ucU6eel5eXkbpgPU7gKFajA6p1jTEX55EBKScNpzADjVBtGo69iIAE6B92YJDLF9mK1xBFz7AeHey/iALbLzYTPyGWfMM0aGkCMiGWZWA8lLsFceQmlEuEOJIA5cSlWnqAd4B3QByeI6MmHnAD7ZHXaKTWpANuoAVKd9H5AQrLN8RnhwcoLE90EOKbemkQHzahHSbhbxDLH4D4xmwN/YJU4RZK1xd/NS0PZmvopc/XoCqOUF0ezNbQFUgVcrAA5euhYXkwW0M7IT5kYC7Kp7o8mK2hGZDgj1BeHszWUFtkBX+E8vJZYLaeHkMCkIGlyKsxDkNCw0yNLYcE4T3+QBQwU1/NEQ2xJBrM1Nt2iCXM0l9nREEMiwKzzLQCYhYzDFYf9yCG3AMzzNYd4RDNwtEdVhqHFIgmKRgHqy1AJkRRJhbASZMRr7B8PCbDaQPxFRKkrxiIalF77ENmgC+zD+1R7RqAy5AqXMYAVPu6IQyfCoWhGzTn5eWVC6Pwjab6QBMNAAAAAElFTkSuQmCC', 'base64'),
img2xblack48dp: new Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAADIUlEQVR4Ae3aA6xeWxCG4XtwbRdxatu2bcWpGbthbdu2bdsIatvG9K2NX5219543eWJ1vp51+I1HsizLsizLsizL+hWV0RRNUB4/wYph36EaZuM+5B13MAFlEA8rSmVDb1yAfKGT6Ig0CCPrf7TDLkiENqAJ/kAE2RMThjCeKHtiIqDwRNkTo/NE2ROj8ETZE+P8E2VPjD1RyTES9yE+cwcD8D+crCguQ3zuAgrCqXLgNiQgbiErnOg7HIQEzHbEQb1GkICqCPXmQQJqKtQ7CwmovVDvISSg7kE9CTYbwAYINhvABgg2G8AGCDgbwAbQZwN4xHJ0x1RcsAG+ntMoiTf7F/NsgNg7jdT4UL/iqA2gcnwiam8DaB2fqL4NoHd8+whQPr59DlA8fgImQWwAneOPg0ROv0eQCNxHe2TCvyiLLR45/iOodyPCf0BxvFsihjp9fOCG1/8qYiQ+VjyGOnt84CzUOwwJUyNQGCNoHx84DPW2QsLUABTyCPrHB7ZCvamQMA0FhTSCG8cHpkK9rpAwPUS+EEbo7Mzxga5QrwUkAheQCRGkcHygBdQrAlEYQff4QBGo9yseKYygffxH+BVOtA+iMILO8YF9cKbhEIURdI4PDIcz1YIojKBzfKAWnOkPPFAYQev4D/AHnGolJMYj6B8fWAnnagmJgQsojzf7B7MgSlrCuf7GXUiMrEFPTMV5iJK7+BtONgXic1PgbGUgPlcGzhaH3RCf2o04OF0DiE81gPMl4jDEZw4jEZ6ogf3v1y0OmyA+sQlx8FT58BjicY+RD55sKMTjhsKz/YZjEI86ht/g6UrisUefnpLwRV0gHtMFvikByyAesQwJ8FX/4CjEcUfxD3xZWlyAOOoC0sLX5cR1iGOuIycCURHcgDjiBoogUOXGRYiyi8iNQJYWxyFKjiMtAl0SrFA4/gokAVkJ6ITHkBh7jE5IwDtZpXEEEiNHUBqfyPoFPfEQEiUP0RO/4AuzMmEOJEJzkAlWmOXDQkiIFiIfopSVEt1wCfIRl9ANKRGjrO9RCv1x/IX+KIXv4XSWZVmWZVmWZVlPAET6QNBhhZWqAAAAAElFTkSuQmCC', 'base64'),
img1xwhite48dp: new Buffer.from('iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAQAAAD9CzEMAAABs0lEQVRYw+2WsUsCURzHn1RDLWZgc7UI2dIQONVWEDYILs0GDULQ7l9gDUXRHxA0tTRFDeXgIhTSENhkUGQYCllgotGnxRS78957d2cQ+B3v3u/zgd/de+8nRD//KIwT54hD1hlzGz1EhBPq/KTGMWEG3YHPssMLZnlmixlnLdnkBlmuiGu3zNASWfRaxgoP2Mk9yyr4BRrYTZ15uSCFk1zKBe+OBG9ygcP0BX8qeOXauBndE1zgE4I5PnojuGCkuf60F4I2foA79wUtvBDs63+D2q+KDUZZpGCK3zOeq3LBY0dBqvk00FRY4+FRLsh2tqP1PEBBioesXHDeUfBFtPVmSoqHc7lg23DGRwxr9rr+ANtyQdjkGoko4iEsF3j5tFJY4j/xqlyaGdPLcFUIhjiw3CEZtUs/1qX8lifJFoypCYYp2zqpywyrDi5JW4Kk+uDlp6SNL+HXme3WtAVresOjh7QWPo1Hdz6dpKiMLzIp9EOIqhK+SkjYC1GFObXRPg7tKJaoWOIrLAlnIUi+Kz5PUDgPPnZNWtVgF59wK0xz1oE/Y1q4HSZIkCNHggnRzz/KN71MawEqqdc4AAAAAElFTkSuQmCC', 'base64'),
img2xwhite48dp: new Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAADKElEQVR4Ae3aM6BsZxSG4XUQ22pj27ZttTH7Il1s27Zt22iubRtPynCCOXff/c/Mevrqe2fWMFJKKaWUUkqpFWAZHIYzcDoOwpKRqoNFcSSew2x/NQMPY390R1owsCWuwxj/3VBcgvUj/X9YDRfiW333MU7H8tEHeWKalyeqghPTSJ6oGk5MnqhCTkyeqOpPTJ6okk9MniishXswW/uZgZuxWpQIe2C89jcGu0RJsDWm6xzTsEVJ725+0Xm+QlfUDafqXIdE3fCizvVE1A0jda4fom6Yq3PNirrpcBkgA3S0DJABOlsGyAAdLgNkgPJlgHK8havwBMZkgIVnOPaJ38EqeDEDVG841mv8J18DM0Dl4zeGizJA5eM3hpMyQPXj5zOgsPHzNaCA8XvwKGSAesZ/ENohwDx9MxsXYVOsggPwOeWPj3lRN0zRvHnYK/4Evbij8PFhSqv/K+KeaADduKPg8WFk1A39Ne/UaKxxhDLGh/5RN3yheSdHY40jlDE+fBF1wxOad0c01ihCKeMX88+4KzRvLnb8HxEuK2h8uCLqhrP1zRhsGn1Uw/hwdtQNu0P1EYobH3aPumEZzKs+QnHjz8MyUQL8CNVHKGZ8+DFKgbug+gjFjA93RSlwLFQfoZjx4dgoBZbHnOojFDP+HCwfJcE7UHWEAsaHd6I0OEc1xuCg+B2sjGfV55woDVbCTNV5H9fgCYxWn5lYKUqEx7W/x6NU2F/72z9KhS58p319h64oGU7Wvk6O0qEX/bWf/uiNVoCT89FfI3ThU+3jU3RFK8GOmK/1zceO0Ypwh9Z3R7QqLItBWtcgLButDPtgvtYzH/tEO8DlWs/l0S7Qgze1jjfRE+0EK2Og8g3EytGOsAHGKNcYbBDtDNtgsvJMxjbRCbA7pijHFOwenQTbYaz6jcV20YmwAQarz2BsEJ0Mq+NtC9/bWD1SBHpwKear3nxcip5If4T9MEB1BmC/aCxhaVyDuRacubgGS0f6b7Apntd3z2PTaE7CjnjF//cKdowFI2EdXIlxGhuHK7FOVCNhMeyLmzAYg3ET9sVikVJKKaWUUkqF+xW+vCJnJJaqGwAAAABJRU5ErkJggg==', 'base64')
}

View File

@ -63,7 +63,5 @@ export function decodeData(data) {
let plaintext = data[2]
let decoded = cbor.decode(typedArrayToBufferSliced(plaintext))
console.log(JSON.stringify(decoded, null, 4))
return decoded
}

View File

@ -1,38 +0,0 @@
# Configuration for Traefik v2.
global:
checkNewVersion: true
sendAnonymousUsage: false
entryPoints:
web:
address: :80
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: :443
log:
level: DEBUG
filePath: log/traefik.log
api:
dashboard: true
providers:
docker:
certificatesResolvers:
myresolver:
acme:
email: "marvin.sextro@gmail.com"
storage: "acme.json"
# Staging: "https://acme-staging-v02.api.letsencrypt.org/directory"
caServer: "https://acme-v02.api.letsencrypt.org/directory"
tlsChallenge:
httpChallenge:
entryPoint: web