From fbb5c28e1c0eeef940ec79a479d89e6be0e411e1 Mon Sep 17 00:00:00 2001 From: hex-developer <77530549+hex-developer@users.noreply.github.com> Date: Sat, 13 Apr 2024 15:35:21 +0300 Subject: [PATCH] Add Flightlog (#3141) * Add Flightlog * Fix version error * Update apps/flightlog/metadata/description.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update apps/flightlog/metadata/description.md * Update apps/flightlog/metadata/description.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * refactor(flightlog): remove the website option from the config --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Stavros --- apps/flightlog/config.json | 23 ++++++++++++++ apps/flightlog/docker-compose.yml | 40 +++++++++++++++++++++++++ apps/flightlog/metadata/description.md | 5 ++++ apps/flightlog/metadata/logo.jpg | Bin 0 -> 15317 bytes 4 files changed, 68 insertions(+) create mode 100644 apps/flightlog/config.json create mode 100644 apps/flightlog/docker-compose.yml create mode 100644 apps/flightlog/metadata/description.md create mode 100644 apps/flightlog/metadata/logo.jpg diff --git a/apps/flightlog/config.json b/apps/flightlog/config.json new file mode 100644 index 00000000..277a3fa4 --- /dev/null +++ b/apps/flightlog/config.json @@ -0,0 +1,23 @@ +{ + "$schema": "../schema.json", + "name": "Flightlog", + "available": true, + "exposable": true, + "port": 8934, + "id": "flightlog", + "tipi_version": 1, + "version": "2.0.1", + "categories": [ + "utilities", + "data" + ], + "description": "Easily keep track of your flight history", + "short_desc": "Flightlog, a web application that keeps track of your personal flight history", + "author": "perdian", + "source": "https://github.com/perdian/flightlog/", + "form_fields": [], + "supported_architectures": [ + "arm64", + "amd64" + ] +} diff --git a/apps/flightlog/docker-compose.yml b/apps/flightlog/docker-compose.yml new file mode 100644 index 00000000..ea2a3779 --- /dev/null +++ b/apps/flightlog/docker-compose.yml @@ -0,0 +1,40 @@ +version: '3.7' + +services: + flightlog: + container_name: flightlog + image: perdian/flightlog:v2.0.1 + environment: + - FLIGHTLOG_SERVER_CONTEXT_PATH=/ + volumes: + - ${APP_DATA_DIR}/data/db:/var/flightlog/database + ports: + - ${APP_PORT}:8080 + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.flightlog-web-redirect.redirectscheme.scheme: https + traefik.http.services.flightlog.loadbalancer.passhostheader: true + traefik.http.services.flightlog.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.flightlog-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.flightlog-insecure.entrypoints: web + traefik.http.routers.flightlog-insecure.service: flightlog + traefik.http.routers.flightlog-insecure.middlewares: flightlog-web-redirect + # Websecure + traefik.http.routers.flightlog.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.flightlog.entrypoints: websecure + traefik.http.routers.flightlog.service: flightlog + traefik.http.routers.flightlog.tls.certresolver: myresolver + # Local domain + traefik.http.routers.flightlog-local-insecure.rule: Host(`flightlog.${LOCAL_DOMAIN}`) + traefik.http.routers.flightlog-local-insecure.entrypoints: web + traefik.http.routers.flightlog-local-insecure.service: flightlog + traefik.http.routers.flightlog-local-insecure.middlewares: flightlog-web-redirect + # Local domain secure + traefik.http.routers.flightlog-local.rule: Host(`flightlog.${LOCAL_DOMAIN}`) + traefik.http.routers.flightlog-local.entrypoints: websecure + traefik.http.routers.flightlog-local.service: flightlog + traefik.http.routers.flightlog-local.tls: true diff --git a/apps/flightlog/metadata/description.md b/apps/flightlog/metadata/description.md new file mode 100644 index 00000000..d5fef50c --- /dev/null +++ b/apps/flightlog/metadata/description.md @@ -0,0 +1,5 @@ +# Flightlog: Easily keep track of your personal flight history + +Flightlog is a web application inspired by [Flugstatistik](https://flugstatistik.de), with more features, a modern UI and a streamlined user experience. + +Read more on [GitHub](https://github.com/perdian/flightlog) diff --git a/apps/flightlog/metadata/logo.jpg b/apps/flightlog/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0080d9bae1604910129d6f6fe9f300241336e108 GIT binary patch literal 15317 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

5|cZ7Gf_emM$&x5sKBrJWBlo14F>oU6pG}6(s0+ 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 T>LzcoYih?fgRSYC?Lz+-?!mLn literal 0 HcmV?d00001