diff --git a/README.md b/README.md index 5776c112..ecd0a85f 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Peppermint](https://github.com/Peppermint-Lab/peppermint) - An open source ticket management & help desk solution. - [Photoprism](https://github.com/photoprism/photoprism) - AI-Powered Photos App for the Decentralized Web. We are on a mission to protect your freedom and privacy. - [Pihole](https://github.com/pi-hole/pi-hole) - A black hole for Internet advertisements +- [Planka](https://github.com/plankanban/planka) - Free open source kanban board for workgroups. - [Plausible](https://github.com/plausible/analytics) - Simple, open-source, lightweight (< 1 KB) and privacy-friendly web analytics alternative to Google Analytics. - [Plex](https://github.com/plexinc/pms-docker) - Stream Movies & TV Shows - [PodFetch](https://github.com/SamTV12345/PodFetch) - A sleek and efficient podcast downloader. @@ -115,6 +116,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Send](https://gitlab.com/timvisee/send) - Simple, private file sharing - [SimpleX SMP](https://github.com/simplex-chat/simplexmq) - A reference implementation of the SimpleX Messaging Protocol for simplex queues over public networks. - [Sonarr](https://github.com/Sonarr/Sonarr) - TV show manager for Usenet and BitTorrent +- [Sshwifty](https://github.com/nirui/sshwifty/) - Web SSH & Telnet (WebSSH & WebTelnet client) - [Syncthing](https://github.com/syncthing/syncthing) - Continuous File Synchronization - [Tailscale](https://github.com/tailscale/tailscale) - The easiest, most secure way to use WireGuard and 2FA - [Tautulli](https://github.com/Tautulli/Tautulli) - A Python based monitoring and tracking tool for Plex Media Server diff --git a/apps/planka/config.json b/apps/planka/config.json new file mode 100644 index 00000000..8c459e22 --- /dev/null +++ b/apps/planka/config.json @@ -0,0 +1,24 @@ +{ + "$schema": "../schema.json", + "name": "Planka", + "port": 8016, + "available": true, + "exposable": true, + "id": "planka", + "tipi_version": 1, + "version": "1.12.0", + "categories": ["development"], + "description": "The realtime kanban board for workgroups built with React and Redux.", + "short_desc": "Free open source kanban board for workgroups.", + "author": "Planka", + "source": "https://github.com/plankanban/planka", + "website": "https://docs.planka.cloud/", + "form_fields": [ + { + "type": "random", + "label": "Planka Secret Key", + "min": 32, + "env_variable": "PLANKA_SECRET_KEY" + } + ] +} diff --git a/apps/planka/docker-compose.yml b/apps/planka/docker-compose.yml new file mode 100644 index 00000000..51b60b8e --- /dev/null +++ b/apps/planka/docker-compose.yml @@ -0,0 +1,67 @@ +version: '3' + +services: + planka: + image: ghcr.io/plankanban/planka:1.12.0 + container_name: planka + command: > + bash -c + "for i in `seq 1 30`; do + ./start.sh && + s=$$? && break || s=$$?; + echo \"Tried $$i times. Waiting 5 seconds...\"; + sleep 5; + done; (exit $$s)" + restart: unless-stopped + volumes: + - ${APP_DATA_DIR}/data/user-avatars:/app/public/user-avatars + - ${APP_DATA_DIR}/data/project-background-images:/app/public/project-background-images + - ${APP_DATA_DIR}/data/attachments:/app/private/attachments + ports: + - ${APP_PORT}:1337 + environment: + BASE_URL: ${APP_PROTOCOL:-http}://${APP_DOMAIN} + TRUST_PROXY: 1 + DATABASE_URL: "postgresql://postgres@postgres/planka" + SECRET_KEY: "${PLANKA_SECRET_KEY}" + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.planka-web-redirect.redirectscheme.scheme: https + traefik.http.services.planka.loadbalancer.server.port: 8016 + # Web + traefik.http.routers.planka-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.planka-insecure.entrypoints: web + traefik.http.routers.planka-insecure.service: planka + traefik.http.routers.planka-insecure.middlewares: planka-web-redirect + # Websecure + traefik.http.routers.planka.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.planka.entrypoints: websecure + traefik.http.routers.planka.service: planka + traefik.http.routers.planka.tls.certresolver: myresolver + # Local domain + traefik.http.routers.planka-local-insecure.rule: Host(`planka.${LOCAL_DOMAIN}`) + traefik.http.routers.planka-local-insecure.entrypoints: web + traefik.http.routers.planka-local-insecure.service: planka + traefik.http.routers.planka-local-insecure.middlewares: planka-web-redirect + # Local domain secure + traefik.http.routers.planka-local.rule: Host(`planka.${LOCAL_DOMAIN}`) + traefik.http.routers.planka-local.entrypoints: websecure + traefik.http.routers.planka-local.service: planka + traefik.http.routers.planka-local.tls: true + depends_on: + - postgres + + postgres: + image: postgres:14-alpine + container_name: planka-db + restart: unless-stopped + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + environment: + POSTGRES_DB: "planka" + POSTGRES_HOST_AUTH_METHOD: "trust" + networks: + - tipi_main_network diff --git a/apps/planka/metadata/description.md b/apps/planka/metadata/description.md new file mode 100644 index 00000000..ec3af399 --- /dev/null +++ b/apps/planka/metadata/description.md @@ -0,0 +1,30 @@ +# Planka +#### Elegant open source project tracking + +![](https://raw.githubusercontent.com/plankanban/planka/master/demo.gif) + +[**Client demo**](https://plankanban.github.io/planka) (without server features). + +## Features + +- Create projects, boards, lists, cards, labels and tasks +- Add card members, track time, set a due date, add attachments, write comments +- Markdown support in a card description and comment +- Filter by members and labels +- Customize project background +- Real-time updates +- User notifications +- Internationalization + +## Tech stack + +- React, Redux, Redux-Saga, Redux-ORM, Semantic UI React, react-beautiful-dnd +- Sails.js, Knex.js +- PostgreSQL + +## Username and Password + +After installing login with these credentials: + +- Username: demo@demo.demo +- Password: demo diff --git a/apps/planka/metadata/logo.jpg b/apps/planka/metadata/logo.jpg new file mode 100644 index 00000000..f85013a4 Binary files /dev/null and b/apps/planka/metadata/logo.jpg differ diff --git a/apps/sshwifty/config.json b/apps/sshwifty/config.json new file mode 100644 index 00000000..17d5b633 --- /dev/null +++ b/apps/sshwifty/config.json @@ -0,0 +1,17 @@ +{ + "$schema": "../schema.json", + "name": "Sshwifty", + "port": 8273, + "available": true, + "exposable": true, + "id": "sshwifty", + "tipi_version": 1, + "version": "0.2.35-beta-release", + "categories": ["development"], + "description": "Sshwifty is a SSH and Telnet connector made for the Web. It can be deployed on your computer or server to provide SSH and Telnet access interface for any compatible (standard) web browser.", + "short_desc": "Web SSH & Telnet (WebSSH & WebTelnet client)", + "author": "Nirui", + "source": "https://github.com/nirui/sshwifty", + "website": "https://sshwifty-demo.nirui.org/", + "form_fields": [] +} diff --git a/apps/sshwifty/docker-compose.yml b/apps/sshwifty/docker-compose.yml new file mode 100644 index 00000000..84bcb874 --- /dev/null +++ b/apps/sshwifty/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3.5" +services: + sshwifty: + image: niruix/sshwifty:0.2.35-beta-release + restart: unless-stopped + container_name: sshwifty + privileged: true + ports: + - ${APP_PORT}:8182 + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.sshwifty-web-redirect.redirectscheme.scheme: https + traefik.http.services.sshwifty.loadbalancer.server.port: 8273 + # Web + traefik.http.routers.sshwifty-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.sshwifty-insecure.entrypoints: web + traefik.http.routers.sshwifty-insecure.service: sshwifty + traefik.http.routers.sshwifty-insecure.middlewares: sshwifty-web-redirect + # Websecure + traefik.http.routers.sshwifty.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.sshwifty.entrypoints: websecure + traefik.http.routers.sshwifty.service: sshwifty + traefik.http.routers.sshwifty.tls.certresolver: myresolver + # Local domain + traefik.http.routers.sshwifty-local-insecure.rule: Host(`sshwifty.${LOCAL_DOMAIN}`) + traefik.http.routers.sshwifty-local-insecure.entrypoints: web + traefik.http.routers.sshwifty-local-insecure.service: sshwifty + traefik.http.routers.sshwifty-local-insecure.middlewares: sshwifty-web-redirect + # Local domain secure + traefik.http.routers.sshwifty-local.rule: Host(`sshwifty.${LOCAL_DOMAIN}`) + traefik.http.routers.sshwifty-local.entrypoints: websecure + traefik.http.routers.sshwifty-local.service: sshwifty + traefik.http.routers.sshwifty-local.tls: true diff --git a/apps/sshwifty/metadata/description.md b/apps/sshwifty/metadata/description.md new file mode 100644 index 00000000..89069eca --- /dev/null +++ b/apps/sshwifty/metadata/description.md @@ -0,0 +1,8 @@ +# Sshwifty Web SSH & Telnet Client + +**Sshwifty is a SSH and Telnet connector made for the Web.** It can be deployed +on your computer or server to provide SSH and Telnet access interface for any +compatible (standard) web browser. + +![Web Interface](https://github.com/nirui/sshwifty/blob/master/Screenshot.png?raw=true) + diff --git a/apps/sshwifty/metadata/logo.jpg b/apps/sshwifty/metadata/logo.jpg new file mode 100644 index 00000000..f326e44b Binary files /dev/null and b/apps/sshwifty/metadata/logo.jpg differ