diff --git a/.gitignore b/.gitignore index 21db3dbf..9a74ed4c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules/ package-lock.json github.secrets .DS_Store -.nova \ No newline at end of file +.nova +.vscode/ diff --git a/apps/atuin/config.json b/apps/atuin/config.json new file mode 100755 index 00000000..956f86a4 --- /dev/null +++ b/apps/atuin/config.json @@ -0,0 +1,29 @@ +{ + "$schema": "../schema.json", + "name": "Atuin Server", + "available": true, + "exposable": true, + "port": 8888, + "id": "atuin", + "tipi_version": 1, + "version": "latest", + "categories": [ + "utilities", + "development" + ], + "description": "Making your shell magical", + "short_desc": "Magical Shell History", + "author": "https://github.com/atuinsh", + "source": "https://github.com/atuinsh/atuin", + "website": "https://atuin.sh", + "no_gui": true, + "form_fields": [ + { + "type": "password", + "label": "Atuin DB Password", + "required": true, + "env_variable": "ATUIN_DB_PASSWORD" + } + ], + "supported_architectures": ["amd64","arm64"] +} diff --git a/apps/atuin/docker-compose.yml b/apps/atuin/docker-compose.yml new file mode 100755 index 00000000..4566b66c --- /dev/null +++ b/apps/atuin/docker-compose.yml @@ -0,0 +1,57 @@ +version: "3.5" +services: + atuin: + container_name: atuin + restart: always + image: ghcr.io/atuinsh/atuin:latest + command: server start + volumes: + - "${APP_DATA_DIR}:/config" + links: + - postgresql:db + ports: + - 8888:8888 + environment: + ATUIN_HOST: "0.0.0.0" + ATUIN_OPEN_REGISTRATION: "true" + ATUIN_DB_URI: "postgres://atuin:${ATUIN_DB_PASSWORD}@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! + - "${APP_DATA_DIR}/data:/var/lib/postgresql/data/" + environment: + POSTGRES_USER: atuin + POSTGRES_PASSWORD: "${ATUIN_DB_PASSWORD}" + 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 100755 index 00000000..b979e289 --- /dev/null +++ b/apps/atuin/metadata/description.md @@ -0,0 +1,31 @@ +# Atuin Server + +## Making your shell magical + +Sync, search and backup shell history with Atuin + +[Atuin](https://atuin.sh) is an open-source Terminal User Interface (TUI) for your shell history. + +![Atuin TUI screenshot](https://atuin.sh/_astro/cargo-prefix.322ce063_Z3NFdB.avif) + +## Features + +1. Shell History Sync + - Sync your shell history to all of your machines, wherever they are +2. End-to-end Encryption + - All data is encrypted, and can only be read by you +3. Efficient Search + - Search decades of shell history, and recall it in an instant. Atuin offers configurable full text or fuzzy search, filterable by host, directory, etc. +4. Data Import + - Bring your existing history with you - Atuin supports importing from a wide variety of formats +5. Store Extra Context + - Atuin stores extra context with your commands - working directory, exit code, and more! + +## Self-hosted sync server + +Atuin.sh offers a free, fully-encrypted option for storing your synced shell history as well as an option to self-host a sync server of your own. This is an easy-to-use package for the Atuin sync server component; the user interface is the TUI, which can be installed using many typical package-management tools, e.g. + +- `brew install atuin` +- `apt install atuin` + +or via `bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)`. diff --git a/apps/atuin/metadata/logo.jpg b/apps/atuin/metadata/logo.jpg new file mode 100644 index 00000000..229b3c0f Binary files /dev/null and b/apps/atuin/metadata/logo.jpg differ