From 51fef8166e90499b88362cb29b7db5619f974c3f Mon Sep 17 00:00:00 2001 From: "cori.schlegel" Date: Sat, 13 Jan 2024 14:20:52 +0000 Subject: [PATCH] add atuin --- apps/atuin/config.json | 20 +++++++++++ apps/atuin/docker-compose.yml | 56 +++++++++++++++++++++++++++++ apps/atuin/metadata/description.md | 5 +++ apps/atuin/metadata/logo.png | Bin 0 -> 21283 bytes 4 files changed, 81 insertions(+) create mode 100644 apps/atuin/config.json create mode 100644 apps/atuin/docker-compose.yml create mode 100644 apps/atuin/metadata/description.md create mode 100644 apps/atuin/metadata/logo.png diff --git a/apps/atuin/config.json b/apps/atuin/config.json new file mode 100644 index 00000000..a344fe09 --- /dev/null +++ b/apps/atuin/config.json @@ -0,0 +1,20 @@ +{ + "$schema": "../schema.json", + "name": "Atuin", + "available": true, + "exposable": true, + "port": 8888, + "id": "atuin", + "tipi_version": 2, + "version": "latest", + "categories": [ + "utilities", + "development" + ], + "description": "Making your shell magical", + "short_desc": "Magical Shell History", + "author": "atuinsh", + "source": "https://github.com/atuinsh/atuin", + "form_fields": [], + "supported_architectures": ["amd64"] +} diff --git a/apps/atuin/docker-compose.yml b/apps/atuin/docker-compose.yml new file mode 100644 index 00000000..c4cba8bf --- /dev/null +++ b/apps/atuin/docker-compose.yml @@ -0,0 +1,56 @@ +version: "3.5" +services: + atuin: + restart: always + image: ghcr.io/atuinsh/atuin:latest + command: server start + volumes: + - "./config:/config" + links: + - postgresql:db + ports: + - 8888:8888 + environment: + ATUIN_HOST: "0.0.0.0" + ATUIN_OPEN_REGISTRATION: "true" + ATUIN_DB_URI: postgres://atuin:really-insecure@db/atuin + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.atuin-web-redirect.redirectscheme.scheme: https + traefik.http.services.atuin.loadbalancer.server.port: 8888 + # Web + traefik.http.routers.atuin-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.atuin-insecure.entrypoints: web + traefik.http.routers.atuin-insecure.service: atuin + traefik.http.routers.atuin-insecure.middlewares: atuin-web-redirect + # Websecure + traefik.http.routers.atuin.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.atuin.entrypoints: websecure + traefik.http.routers.atuin.service: atuin + traefik.http.routers.atuin.tls.certresolver: myresolver + # Local domain + traefik.http.routers.atuin-local-insecure.rule: Host(`atuin.${LOCAL_DOMAIN}`) + traefik.http.routers.atuin-local-insecure.entrypoints: web + traefik.http.routers.atuin-local-insecure.service: atuin + traefik.http.routers.atuin-local-insecure.middlewares: atuin-web-redirect + # Local domain secure + traefik.http.routers.atuin-local.rule: Host(`atuin.${LOCAL_DOMAIN}`) + traefik.http.routers.atuin-local.entrypoints: websecure + traefik.http.routers.atuin-local.service: atuin + traefik.http.routers.atuin-local.tls: true + + postgresql: + image: postgres:14 + restart: unless-stopped + volumes: # Don't remove permanent storage for index database files! + - "./database:/var/lib/postgresql/data/" + environment: + POSTGRES_USER: atuin + POSTGRES_PASSWORD: really-insecure + POSTGRES_DB: atuin + networks: + - tipi_main_network + \ No newline at end of file diff --git a/apps/atuin/metadata/description.md b/apps/atuin/metadata/description.md new file mode 100644 index 00000000..95796ff0 --- /dev/null +++ b/apps/atuin/metadata/description.md @@ -0,0 +1,5 @@ +# Atuin + +## Making your shell magical + +Sync, search and backup shell history with Atuin \ No newline at end of file diff --git a/apps/atuin/metadata/logo.png b/apps/atuin/metadata/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..952e299145b4279e52ce95278bcad5ed476e4f81 GIT binary patch literal 21283 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 D^*Pz5 literal 0 HcmV?d00001