diff --git a/README.md b/README.md index 9c6e1427..0279d488 100644 --- a/README.md +++ b/README.md @@ -55,15 +55,15 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Jellyfin](https://github.com/jellyfin/jellyfin) - A media server for your home collection - [Jellyseerr](https://github.com/Fallenbagel/jellyseerr) - Fork of overseerr for Jellyfin support - [Joplin](https://github.com/laurent22/joplin) - Privacy focused note-taking app -- [Kanboard](https://github.com/kanboard/kanboard) - Kanboard is a free and open source Kanban project management software.- [Kapowarr](https://github.com/Casvt/Kapowarr) - Kapowarr is a software to build and manage a comic book library, fitting in the *arr suite of software. +- [Kanboard](https://github.com/kanboard/kanboard) - Kanboard is a free and open source Kanban project management software. +- [Kapowarr](https://github.com/Casvt/Kapowarr) - Kapowarr is a software to build and manage a comic book library, fitting in the \*arr suite of software. - [Kavita](https://github.com/Kareadita/Kavita) - Kavita is a fast, feature rich, cross platform reading server - [Libreddit](https://github.com/spikecodes/libreddit) - Private front-end for Reddit - [LibrePhotos](https://github.com/LibrePhotos/librephotos) - Complete photo management service - [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate) - Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup - [Lidarr](https://github.com/Lidarr/Lidarr) - Looks and smells like Sonarr but made for music. - [Lidarr On Steroids](https://github.com/youegraillot/lidarr-on-steroids) - Lidarr with some muscles thanks to deemix -- [LinkStack](https://github.com/LinkStackOrg/LinkStack) - LAbout -LinkStack - the ultimate solution for creating a personalized & professional profile page. +- [LinkStack](https://github.com/LinkStackOrg/LinkStack) - The ultimate solution for creating a personalized & professional profile page. - [Lodestone Core](https://github.com/Lodestone-Team/lodestone_core) - Server hosting tool for Minecraft and other multiplayers - [Logto](https://github.com/logto-io/logto) - Logto is a cost-effective open-source alternative to Auth0. - [Mastodon](https://github.com/mastodon/mastodon) - Your self-hosted, globally interconnected microblogging community @@ -87,6 +87,7 @@ LinkStack - the ultimate solution for creating a personalized & professional pro - [Nitter](https://github.com/zedeus/nitter) - Alternative Twitter front-end - [NocoDB](https://github.com/nocodb/nocodb) - Open Source Airtable Alternative - [Node-RED](https://github.com/node-red/node-red) - Low-code programming for event-driven applications +- [Obsidian LiveSync](https://github.com/vrtmrz/self-hosted-livesync-server) - LiveSync couchdb backend for Obsidian - [OneDev](https://code.onedev.io/onedev/server) - Self-hosted Git Server with Kanban and CI/CD - [Openbooks](https://github.com/evan-buss/openbooks) - Search and Download eBooks - [Overseerr](https://github.com/sct/overseerr) - Request management and media discovery tool for the Plex ecosystem diff --git a/apps/obsidian-livesync/config.json b/apps/obsidian-livesync/config.json new file mode 100644 index 00000000..5d9d2a0d --- /dev/null +++ b/apps/obsidian-livesync/config.json @@ -0,0 +1,43 @@ +{ + "$schema": "../schema.json", + "name": "Obsidian LiveSync", + "port": 5984, + "available": true, + "exposable": true, + "no_gui": true, + "id": "obsidian-livesync", + "tipi_version": 1, + "version": "3.1.2", + "categories": ["utilities"], + "description": "LiveSync couchdb backend for Obsidian", + "short_desc": "LiveSync couchdb backend for Obsidian", + "author": "vorotamoroz", + "source": "https://github.com/vrtmrz/self-hosted-livesync-server", + "form_fields": [ + { + "type": "text", + "label": "CouchDB username", + "min": 5, + "required": true, + "env_variable": "OBSIDIAN_LIVESYNC_USER" + }, + { + "type": "password", + "label": "CouchDB password", + "max": 50, + "min": 8, + "required": true, + "env_variable": "OBSIDIAN_LIVESYNC_PASSWORD" + }, + { + "type": "number", + "label": "CouchDB port", + "hint": "Default is 5984", + "min": 1, + "max": 65535, + "required": false, + "default": "5984", + "env_variable": "CUSTOM_PORTOBSIDIAN_LIVESYNC_PORT" + } + ] +} diff --git a/apps/obsidian-livesync/data/local.ini b/apps/obsidian-livesync/data/local.ini new file mode 100644 index 00000000..d68f1d71 --- /dev/null +++ b/apps/obsidian-livesync/data/local.ini @@ -0,0 +1,22 @@ +[couchdb] +single_node=true +max_document_size = 50000000 + +[chttpd] +require_valid_user = true +max_http_request_size = 4294967296 + +[chttpd_auth] +require_valid_user = true +authentication_redirect = /e=_/_utils/session.html + +[httpd] +WWW-Authenticate = Basic realm="couchdb" +enable_cors = true + +[cors] +origins = app://obsidian.md,capacitor://localhost,http://localhost +credentials = true +headers = accept, authorization, content-type, origin, referer +methods = GET, PUT, POST, HEAD, DELETE +max_age = 3600 diff --git a/apps/obsidian-livesync/docker-compose.yml b/apps/obsidian-livesync/docker-compose.yml new file mode 100644 index 00000000..87780eff --- /dev/null +++ b/apps/obsidian-livesync/docker-compose.yml @@ -0,0 +1,42 @@ +version: '3.7' + +services: + obsidian-livesync: + container_name: obsidian-livesync + image: couchdb:3.1.2 + ports: + - ${OBSIDIAN_LIVESYNC_PORT:-${APP_PORT}}:5984 + environment: + - COUCHDB_USER=${OBSIDIAN_LIVESYNC_USER} + - COUCHDB_PASSWORD=${OBSIDIAN_LIVESYNC_PASSWORD} + volumes: + - ${APP_DATA_DIR}/data/couchdb:/opt/couchdb/data + - ${APP_DATA_DIR}/data/local.ini:/opt/couchdb/etc/local.ini + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.obsidian-livesync-web-redirect.redirectscheme.scheme: https + traefik.http.services.obsidian-livesync.loadbalancer.passhostheader: true + traefik.http.services.obsidian-livesync.loadbalancer.server.port: 5984 + # Web + traefik.http.routers.obsidian-livesync-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.obsidian-livesync-insecure.entrypoints: web + traefik.http.routers.obsidian-livesync-insecure.service: obsidian-livesync + traefik.http.routers.obsidian-livesync-insecure.middlewares: obsidian-livesync-web-redirect + # Websecure + traefik.http.routers.obsidian-livesync.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.obsidian-livesync.entrypoints: websecure + traefik.http.routers.obsidian-livesync.service: obsidian-livesync + traefik.http.routers.obsidian-livesync.tls.certresolver: myresolver + # Local domain + traefik.http.routers.obsidian-livesync-local-insecure.rule: Host(`obsidian-livesync.${LOCAL_DOMAIN}`) + traefik.http.routers.obsidian-livesync-local-insecure.entrypoints: web + traefik.http.routers.obsidian-livesync-local-insecure.service: obsidian-livesync + traefik.http.routers.obsidian-livesync-local-insecure.middlewares: obsidian-livesync-web-redirect + # Local domain secure + traefik.http.routers.obsidian-livesync-local.rule: Host(`obsidian-livesync.${LOCAL_DOMAIN}`) + traefik.http.routers.obsidian-livesync-local.entrypoints: websecure + traefik.http.routers.obsidian-livesync-local.service: obsidian-livesync + traefik.http.routers.obsidian-livesync-local.tls: true diff --git a/apps/obsidian-livesync/metadata/description.md b/apps/obsidian-livesync/metadata/description.md new file mode 100644 index 00000000..8dc15edc --- /dev/null +++ b/apps/obsidian-livesync/metadata/description.md @@ -0,0 +1,7 @@ +## Obsidian LiveSync + +Self-hosted database for synchronizing Obsidian vaults. + +1. Install the **Self-hosted LiveSync** plugin from the [Obsidian Community Plugins](obsidian://show-plugin?id=obsidian-livesync) page. +2. Connect to your server by entering the URL in the plugin settings using a domain name or IP address. +3. If you are not exposing the app you have to use `http://:5984` as the URL. diff --git a/apps/obsidian-livesync/metadata/logo.jpg b/apps/obsidian-livesync/metadata/logo.jpg new file mode 100644 index 00000000..9d334676 Binary files /dev/null and b/apps/obsidian-livesync/metadata/logo.jpg differ