From 97bb77d41c59fc3a93fdf0827c051d5e73db343e Mon Sep 17 00:00:00 2001 From: Avinal Kumar Date: Tue, 23 Jul 2024 00:01:56 +0530 Subject: [PATCH] [App] Shiori: Simple bookmark manager - https://github.com/go-shiori/shiori Signed-off-by: Avinal Kumar --- apps/shiori/config.json | 22 +++++++++++ apps/shiori/docker-compose.yaml | 57 ++++++++++++++++++++++++++++ apps/shiori/metadata/description.md | 21 ++++++++++ apps/shiori/metadata/logo.jpg | Bin 0 -> 8673 bytes 4 files changed, 100 insertions(+) create mode 100644 apps/shiori/config.json create mode 100644 apps/shiori/docker-compose.yaml create mode 100644 apps/shiori/metadata/description.md create mode 100644 apps/shiori/metadata/logo.jpg diff --git a/apps/shiori/config.json b/apps/shiori/config.json new file mode 100644 index 0000000000..caed2291dc --- /dev/null +++ b/apps/shiori/config.json @@ -0,0 +1,22 @@ +{ + "$schema": "../schema.json", + "name": "Shiori", + "available": true, + "exposable": true, + "force_expose": true, + "port": 8207, + "id": "shiori", + "tipi_version": 1, + "version": "1.7.0", + "categories": [ + "utilities" + ], + "description": "Shiori is a simple bookmarks manager written in the Go language. Intended as a simple clone of Pocket.", + "short_desc": "Shlink is a self-hosted bookmark manager.", + "author": "Radhi Fadlillah", + "source": "https://github.com/go-shiori/shiori", + "supported_architectures": [ + "arm64", + "amd64" + ] +} diff --git a/apps/shiori/docker-compose.yaml b/apps/shiori/docker-compose.yaml new file mode 100644 index 0000000000..2b2371a0c4 --- /dev/null +++ b/apps/shiori/docker-compose.yaml @@ -0,0 +1,57 @@ +version: "3.9" +services: + shiori_db: + container_name: shiori-db + image: postgres:15 + environment: + POSTGRES_PASSWORD: ${SHIORI_DB_PASSWORD} + POSTGRES_USER: tipi + POSTGRES_DB: shiori + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB'] + interval: 5s + timeout: 5s + retries: 5 + networks: + - tipi_main_network + labels: + runtipi.managed: true + + shiori: + container_name: shiori + image: + restart: unless-stopped + ports: + - ${APP_PORT}:8080 + networks: + - tipi_main_network + environment: + SHIORI_DATABASE_URL: "postgres://" # need help here + labels: + # Main + traefik.enable: true + traefik.http.middlewares.shlink-web-redirect.redirectscheme.scheme: https + traefik.http.services.shlink.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.shlink-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.shlink-insecure.entrypoints: web + traefik.http.routers.shlink-insecure.service: shiori + traefik.http.routers.shlink-insecure.middlewares: shiori-web-redirect + # Websecure + traefik.http.routers.shlink.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.shlink.entrypoints: websecure + traefik.http.routers.shlink.service: shiori + traefik.http.routers.shlink.tls.certresolver: myresolver + # Local domain + traefik.http.routers.shlink-local-insecure.rule: Host(`shlink.${LOCAL_DOMAIN}`) + traefik.http.routers.shlink-local-insecure.entrypoints: web + traefik.http.routers.shlink-local-insecure.service: shiori + traefik.http.routers.shlink-local-insecure.middlewares: shiori-web-redirect + # Local domain secure + traefik.http.routers.shlink-local.rule: Host(`shlink.${LOCAL_DOMAIN}`) + traefik.http.routers.shlink-local.entrypoints: websecure + traefik.http.routers.shlink-local.service: shiori + traefik.http.routers.shlink-local.tls: true + runtipi.managed: true diff --git a/apps/shiori/metadata/description.md b/apps/shiori/metadata/description.md new file mode 100644 index 0000000000..ebfcaf688e --- /dev/null +++ b/apps/shiori/metadata/description.md @@ -0,0 +1,21 @@ +# Shiori + +Shiori is a simple bookmarks manager written in the Go language. Intended as a simple clone of Pocket. + +## Features + +- Basic bookmarks management i.e. add, edit, delete and search. +- Import and export bookmarks from and to Netscape Bookmark file. +- Import bookmarks from Pocket. +- Simple and clean command line interface. +- Simple and pretty web interface for those who don't want to use a command line app. +- Portable, thanks to its single binary format. +- Support for sqlite3, PostgreSQL and MySQL as its database. +- Where possible, by default `shiori` will parse the readable content and create an offline archive of the webpage. +- [BETA] [web extension](https://github.com/go-shiori/shiori-web-ext) support for Firefox and Chrome. + +## Screenshots + +![Home Page](https://raw.githubusercontent.com/go-shiori/shiori/master/docs/readme/cover.png) + +![Reader Mode](https://raw.githubusercontent.com/go-shiori/shiori/master/docs/readme/comparison.png) diff --git a/apps/shiori/metadata/logo.jpg b/apps/shiori/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e914d20e3cbda08472f3aadd5f6c8f4f62657ad8 GIT binary patch literal 8673 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