diff --git a/README.md b/README.md index cad8d57..0d17cc3 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,7 @@ The aims is to provide a ready-to-run recipes that you can just copy, paste and - [Deemix](apps/media/deemix.md) - music - [Jackett](apps/media/jackett.md) - search engine proxy/adapter - [Jellyfin](apps/media/jellyfin.md) - watch movies & shows almost everywhere! +- [Kavita](apps/media/kavita.md) - like plex for ebooks & comics - [Komga](apps/media/komga.md) - comics - [Navidrome](apps/media/navidrome.md) - music streaming server - [Plex](apps/media/plex.md) - watch movies & shows everywhere! @@ -279,6 +280,8 @@ The aims is to provide a ready-to-run recipes that you can just copy, paste and # Other services - [bitwarden_rs](apps/other/bitwarden.md) +- [budibase](apps/other/budibase.md) +- [change-detection](apps/other/change-detection.md) - [Cockpit](apps/other/cockpit.md) - [Code server](apps/other/code.md) - [Firefox sync server](apps/other/firefox-sync.md) diff --git a/apps/documents/paperless-ngx.md b/apps/documents/paperless-ngx.md index 59f5a69..67c4a16 100644 --- a/apps/documents/paperless-ngx.md +++ b/apps/documents/paperless-ngx.md @@ -87,3 +87,15 @@ services: - ./consume:/usr/src/paperless/consume - ./trash:/usr/src/paperless/trash ``` + +## First run these: +```sh +# fetch the docker image +docker-compose pull + +# create admin user +docker-compose run --rm webserver createsuperuser + +# start +docker-compose up -d +``` diff --git a/apps/media/kavita.md b/apps/media/kavita.md new file mode 100644 index 0000000..54c6789 --- /dev/null +++ b/apps/media/kavita.md @@ -0,0 +1,27 @@ +# Kavita + +Probably the best self-hosted ebook & comic reader. + +
+ +- [Homepage](http://www.kavitareader.com) +- [Github repo](https://github.com/Kareadita/Kavita) +- [Demo](https://demo.kavitareader.com) - login: demouser, pass: Demouser64 + +![screenshot](kavita.png) + + +## docker-compose.yml +```yml +--- +services: + kavita: + image: kizaing/kavita:latest + container_name: kavita + restart: unless-stopped + ports: + - "5000:5000" + volumes: + - ./data:/kavita/config + - ./books:/books +``` diff --git a/apps/media/kavita.png b/apps/media/kavita.png new file mode 100644 index 0000000..b953aa9 Binary files /dev/null and b/apps/media/kavita.png differ diff --git a/apps/media/komga.md b/apps/media/komga.md index 25b02d2..3c2b26f 100644 --- a/apps/media/komga.md +++ b/apps/media/komga.md @@ -1,6 +1,6 @@ # Komga -Probably the best self-hosted comic books reader. +A very good self-hosted comic books reader.
diff --git a/apps/other/budibase.md b/apps/other/budibase.md new file mode 100644 index 0000000..c464714 --- /dev/null +++ b/apps/other/budibase.md @@ -0,0 +1,152 @@ +# Budibase +- Build internal apps in minutes. +- This is a "meta" app, that allows to quickly create a database, fill it with data, and create a simple app that would read/write data. + +
+ +- [Homepage](https://budibase.com) +- [Github repo](https://github.com/Budibase/budibase) +- [Docs](https://docs.budibase.com/docs) + + +## .env +```ini +MAIN_PORT=10000 + +# These should be updated +JWT_SECRET=testsecret +MINIO_ACCESS_KEY=budibase +MINIO_SECRET_KEY=budibase +COUCH_DB_PASSWORD=budibase +COUCH_DB_USER=budibase +REDIS_PASSWORD=budibase +INTERNAL_API_KEY=budibase + +# This section contains variables that do not need to be altered under normal circumstances +APP_PORT=4002 +WORKER_PORT=4003 +MINIO_PORT=4004 +COUCH_DB_PORT=4005 +REDIS_PORT=6379 +BUDIBASE_ENVIRONMENT=PRODUCTION + +# An admin user can be automatically created initially if these are set +BB_ADMIN_USER_EMAIL=admin@domain.com +BB_ADMIN_USER_PASSWORD=admin +``` + +## docker-compose.yml +```yml +--- +services: + app-service: + restart: unless-stopped + image: budibase.docker.scarf.sh/budibase/apps + container_name: bbapps + environment: + SELF_HOSTED: 1 + COUCH_DB_URL: http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb-service:5984 + WORKER_URL: http://worker-service:4003 + MINIO_URL: http://minio-service:9000 + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + INTERNAL_API_KEY: ${INTERNAL_API_KEY} + BUDIBASE_ENVIRONMENT: ${BUDIBASE_ENVIRONMENT} + PORT: 4002 + JWT_SECRET: ${JWT_SECRET} + LOG_LEVEL: info + SENTRY_DSN: https://a34ae347621946bf8acded18e5b7d4b8@o420233.ingest.sentry.io/5338131 + ENABLE_ANALYTICS: "false" + REDIS_URL: redis-service:6379 + REDIS_PASSWORD: ${REDIS_PASSWORD} + BB_ADMIN_USER_EMAIL: ${BB_ADMIN_USER_EMAIL} + BB_ADMIN_USER_PASSWORD: ${BB_ADMIN_USER_PASSWORD} + depends_on: + - worker-service + - redis-service + + + worker-service: + restart: unless-stopped + image: budibase.docker.scarf.sh/budibase/worker + container_name: bbworker + environment: + SELF_HOSTED: 1 + PORT: 4003 + CLUSTER_PORT: ${MAIN_PORT} + JWT_SECRET: ${JWT_SECRET} + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + MINIO_URL: http://minio-service:9000 + APPS_URL: http://app-service:4002 + COUCH_DB_USERNAME: ${COUCH_DB_USER} + COUCH_DB_PASSWORD: ${COUCH_DB_PASSWORD} + COUCH_DB_URL: http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb-service:5984 + SENTRY_DSN: https://a34ae347621946bf8acded18e5b7d4b8@o420233.ingest.sentry.io/5338131 + INTERNAL_API_KEY: ${INTERNAL_API_KEY} + REDIS_URL: redis-service:6379 + REDIS_PASSWORD: ${REDIS_PASSWORD} + depends_on: + - redis-service + - minio-service + - couch-init + + + minio-service: + restart: unless-stopped + image: minio/minio + environment: + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + MINIO_BROWSER: "off" + command: server /data --console-address ":9001" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + volumes: + - ./minio:/data + + + proxy-service: + restart: unless-stopped + ports: + - "${MAIN_PORT}:10000" + container_name: bbproxy + image: budibase/proxy + environment: + - PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND=10 + depends_on: + - minio-service + - worker-service + - app-service + - couchdb-service + + + couchdb-service: + restart: unless-stopped + image: ibmcom/couchdb3 + environment: + - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD} + - COUCHDB_USER=${COUCH_DB_USER} + volumes: + - ./couchdb:/opt/couchdb/data + + + couch-init: + image: curlimages/curl + environment: + PUT_CALL: "curl -u ${COUCH_DB_USER}:${COUCH_DB_PASSWORD} -X PUT couchdb-service:5984" + depends_on: + - couchdb-service + command: ["sh","-c","sleep 10 && $${PUT_CALL}/_users && $${PUT_CALL}/_replicator; fg;"] + + + redis-service: + restart: unless-stopped + image: redis + command: redis-server --requirepass ${REDIS_PASSWORD} + volumes: + - ./redis:/data +``` diff --git a/apps/other/change-detection.md b/apps/other/change-detection.md new file mode 100644 index 0000000..39720cf --- /dev/null +++ b/apps/other/change-detection.md @@ -0,0 +1,47 @@ +# Change detection +Periodically monitors websites for changes and sends a notification when a change is detected. + +- can use plain http request (faster option) or playwright (headless chrome) to render websites with javascript +- can filter a site with css selectors (to e.g. only get notifications when a price changes) +- many useful options like executing javascript on a site, before detecting changes (useful to eg. login) +- uses apprise for notifications, so hundreds of options (email, slack, telegram, sms, etc.) + +
+ +- [Github repo](https://github.com/dgtlmoon/changedetection.io) +- [Non-self-hosted version](https://lemonade.changedetection.io/start) + + +## docker-compose.yml +```yml +--- +services: + playwright-chrome: + hostname: playwright-chrome + image: browserless/chrome + restart: unless-stopped + environment: + - SCREEN_WIDTH=1920 + - SCREEN_HEIGHT=1024 + - SCREEN_DEPTH=16 + - ENABLE_DEBUGGER=false + - PREBOOT_CHROME=true + - CONNECTION_TIMEOUT=300000 + - MAX_CONCURRENT_SESSIONS=10 + - CHROME_REFRESH_TIME=600000 + - DEFAULT_BLOCK_ADS=true + - DEFAULT_STEALTH=true + volumes: + - ./data:/datastore + + changedetection: + image: ghcr.io/dgtlmoon/changedetection.io + container_name: changedetection + hostname: changedetection + restart: unless-stopped + environment: + - PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000/?stealth=1&--disable-web-security=true + - BASE_URL=https://changedetection.domain.com + ports: + - 5000:5000 +```