diff --git a/apps/nextgba/config.json b/apps/nextgba/config.json new file mode 100644 index 00000000..bf824a80 --- /dev/null +++ b/apps/nextgba/config.json @@ -0,0 +1,17 @@ +{ + "name": "NextGBA", + "available": true, + "port": 8435, + "exposable": true, + "id": "nextgba", + "description": "All of your favorite gameboy games in your browser", + "tipi_version": 1, + "version": "v0.0.3", + "categories": ["gaming"], + "short_desc": "Gameboy in your browser", + "author": "meienberger", + "source": "https://github.com/meienberger/nextgba", + "form_fields": [], + "supported_architectures": ["arm64", "amd64"] + } + \ No newline at end of file diff --git a/apps/nextgba/docker-compose.yml b/apps/nextgba/docker-compose.yml new file mode 100644 index 00000000..16c9b83e --- /dev/null +++ b/apps/nextgba/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.9" + +services: + nextgba: + container_name: nextgba + image: ghcr.io/meienberger/nextgba:v0.0.3 + restart: unless-stopped + ports: + - ${APP_PORT}:3000 + environment: + - NODE_ENV=production + networks: + - tipi_main_network + volumes: + - ${APP_DATA_DIR}/data/games:/data/games + labels: + # Main + traefik.enable: true + traefik.http.middlewares.nextgba-web-redirect.redirectscheme.scheme: https + traefik.http.services.nextgba.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.nextgba-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.nextgba-insecure.entrypoints: web + traefik.http.routers.nextgba-insecure.service: nextgba + traefik.http.routers.nextgba-insecure.middlewares: nextgba-web-redirect + # Websecure + traefik.http.routers.nextgba.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.nextgba.entrypoints: websecure + traefik.http.routers.nextgba.service: nextgba + traefik.http.routers.nextgba.tls.certresolver: myresolver + # Local domain + traefik.http.routers.nextgba-local-insecure.rule: Host(`nextgba.${LOCAL_DOMAIN}`) + traefik.http.routers.nextgba-local-insecure.entrypoints: web + traefik.http.routers.nextgba-local-insecure.service: nextgba + traefik.http.routers.nextgba-local-insecure.middlewares: nextgba-web-redirect + # Local domain secure + traefik.http.routers.nextgba-local.rule: Host(`nextgba.${LOCAL_DOMAIN}`) + traefik.http.routers.nextgba-local.entrypoints: websecure + traefik.http.routers.nextgba-local.service: nextgba + traefik.http.routers.nextgba-local.tls: true \ No newline at end of file diff --git a/apps/nextgba/metadata/description.md b/apps/nextgba/metadata/description.md new file mode 100644 index 00000000..1cdd6c6c --- /dev/null +++ b/apps/nextgba/metadata/description.md @@ -0,0 +1,7 @@ +# NextGBA - All you gameboy games in a browser window + +> 💡 NextGBA is built with next js, emulator js and shadcn/ui! + +Have you ever wanted to play your favorite Gameboy games in a self-hosted web app? A web app that can save the game state and is not complicated to run? NextGBA is your solution! With NextGBA, you can quickly spin it up using a Docker Compose file or through [runtipi](https://github.com/runtipi/runtipi). It features a very simple UI, based on the renowned project [Emulator.js](https://emulatorjs.org/), with all the features you could ever need. This includes support for controllers and game states directly through the UI! + +![Preview](https://raw.githubusercontent.com/meienberger/nextgba/main/screenshots/screenshot_main.png) diff --git a/apps/nextgba/metadata/logo.jpg b/apps/nextgba/metadata/logo.jpg new file mode 100644 index 00000000..c60a335a Binary files /dev/null and b/apps/nextgba/metadata/logo.jpg differ