diff --git a/activepieces/data/app/cache/.gitkeep b/activepieces/data/app/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/activepieces/data/db/.gitkeep b/activepieces/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/activepieces/data/redis/.gitkeep b/activepieces/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/activepieces/dfwebos-app.yml b/activepieces/dfwebos-app.yml new file mode 100644 index 0000000..df0d8c8 --- /dev/null +++ b/activepieces/dfwebos-app.yml @@ -0,0 +1,63 @@ +manifestVersion: 1 +id: activepieces +category: automation +name: Activepieces +version: "0.82.1" +releaseNotes: >- + Этот выпуск включает в себя новые интеграции, функции и исправления ошибок: + - Добавлено множество новых интеграций, включая Telnyx, Kustomer, Freshservice, Chargebee, Paddle, AIPrise, DocuSign и другие. + - Добавлен AWS Bedrock в качестве поставщика платформы ИИ. + - Добавлена ​​блокировка потока с баннером редактирования в реальном времени для предотвращения конфликтов. + - Добавлены улучшения MCP, включая создание потока одним вызовом, самоанализ схемы и инструменты проверки потока. + - Добавлена ​​поддержка исходящего прокси-сервера для сетевой изоляции. + - Исправлена ​​ошибка, из-за которой участникам платформы постоянно отображалось диалоговое окно «Не удалось получить данные». + - Исправлены условия гонки родительского/дочернего потока. + - Исправлены утечки памяти в песочнице и улучшена стабильность памяти. + - Исправлены различные проблемы с подключением OAuth2 в старых версиях частей. + - Безопасность: изменены axios и nodemailer для устранения уязвимостей. + + + Полные примечания к выпуску можно найти по адресу https://github.com/activepieces/activepieces/releases. +tagline: "Ваш самый дружелюбный инструмент автоматизации с открытым исходным кодом ИИ" +description: >- + 🤯 Добро пожаловать в Activepieces + + + Ваш самый удобный универсальный инструмент автоматизации с открытым исходным кодом, предназначенный для расширения с помощью типобезопасной структуры частей, написанной на Typescript. + + + + 🔥 Чем Activepieces отличается: + - 💖 Все любят: интуитивно понятный интерфейс и отличный опыт как для технических, так и для нетехнических пользователей, а также быстрое обучение. + + - 🌐 Открытая экосистема: все фрагменты имеют открытый исходный код и доступны на npmjs.com, 60% фрагментов созданы сообществом. + + - 🛠️ Части написаны на Typescript: Части — это пакеты npm в TypeScript, предлагающие полную настройку с лучшими возможностями разработчика, включая горячую перезагрузку для локальной разработки частей на вашей машине. 😎 + + - 🤖 Готовность к ИИ: встроенные части ИИ позволяют экспериментировать с различными поставщиками или создавать собственных агентов с помощью нашего ИИ SDK, а также есть Copilot, который поможет вам создавать потоки внутри конструктора. + + - 🏢 Готовность к работе на предприятиях: разработчики настраивают инструменты, и любой сотрудник организации может использовать конструктор без кода. Полная кастомизация от брендинга до управления. + + - 🔒 Задуманная безопасность: автономное размещение и подключение к сети для максимальной безопасности и контроля над вашими данными. + + - 🧠 Человек в цикле: отложить выполнение на определенный период времени или потребовать одобрения. Это всего лишь части, построенные на основе каркаса частей, и вы можете построить много таких частей. 🎨 + + - 💻Интерфейсы человеческого ввода: встроенная поддержка триггеров человеческого ввода, таких как «Интерфейс чата» 💬 и «Интерфейс формы» 📝. +developer: Activepieces +website: https://www.activepieces.com/ +dependencies: [] +repo: https://github.com/activepieces/activepieces/ +support: https://community.activepieces.com/ +port: 8146 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +backupIgnore: + - data/app/cache/* + - data/redis/* +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/2481 diff --git a/activepieces/docker-compose.yml b/activepieces/docker-compose.yml new file mode 100644 index 0000000..a70f6fd --- /dev/null +++ b/activepieces/docker-compose.yml @@ -0,0 +1,63 @@ +version: '3.0' +services: + app_proxy: + environment: + APP_HOST: activepieces_app_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + app: + ## без рута пока не работает + #user: "1000:1000" + image: ghcr.io/activepieces/activepieces:0.82.1@sha256:5fbb7df25f52c703a27b228ba9989887a7751d2aaf905182c764200f339fccb2 + restart: on-failure + environment: + AP_ENGINE_EXECUTABLE_PATH: dist/packages/engine/main.js + AP_API_KEY: ${APP_PASSWORD} + AP_ENCRYPTION_KEY: ${APP_AP_ENCRYPTION_KEY} + AP_JWT_SECRET: ${APP_PASSWORD} + AP_ENVIRONMENT: prod + AP_FRONTEND_URL: http://${DEVICE_DOMAIN_NAME}:8146 + AP_WEBHOOK_TIMEOUT_SECONDS: 30 + AP_TRIGGER_DEFAULT_POLL_INTERVAL: 5 + AP_POSTGRES_DATABASE: activepieces + AP_POSTGRES_HOST: activepieces_db_1 + AP_POSTGRES_PORT: 5432 + AP_POSTGRES_USERNAME: activepieces + AP_POSTGRES_PASSWORD: activepieces + AP_EXECUTION_MODE: UNSANDBOXED + AP_REDIS_HOST: activepieces_redis_1 + AP_REDIS_PORT: 6379 + AP_FLOW_TIMEOUT_SECONDS: 600 + AP_TELEMETRY_ENABLED: "true" + AP_TEMPLATES_SOURCE_URL: "https://cloud.activepieces.com/api/v1/flow-templates" + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + volumes: + - ${APP_DATA_DIR}/data/app/cache:/usr/src/app/cache + + db: + user: "1000:1000" + image: postgres:17.4@sha256:4aed4b0525233308fc5de1b8d47f92326460d598dc5f004d14b41f183360b4e9 + restart: on-failure + environment: + POSTGRES_DB: activepieces + POSTGRES_PASSWORD: activepieces + POSTGRES_USER: activepieces + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U activepieces"] + interval: 5s + timeout: 5s + retries: 5 + + redis: + user: "1000:1000" + image: redis:7.4.3@sha256:ee8ec723c831b815c3e2f2c6fbd1c145c68d1c04ba284f044ec1434fbca0fee8 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data diff --git a/activepieces/exports.sh b/activepieces/exports.sh new file mode 100644 index 0000000..d70bc54 --- /dev/null +++ b/activepieces/exports.sh @@ -0,0 +1 @@ +export APP_AP_ENCRYPTION_KEY=$(derive_entropy "${app_entropy_identifier}-AP_ENCRYPTION_KEY" | head -c32) diff --git a/adguard-home/data/conf/.gitkeep b/adguard-home/data/conf/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/adguard-home/data/work/.gitkeep b/adguard-home/data/work/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/adguard-home/dfwebos-app.yml b/adguard-home/dfwebos-app.yml new file mode 100644 index 0000000..451cdae --- /dev/null +++ b/adguard-home/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: adguard-home +category: networking +name: AdGuard Home +version: "0.107.74" +tagline: Общесетевое программное обеспечение для блокировки рекламы и отслеживания +description: >- + ⚠️ Ниже приведены важные инструкции по настройке. + + + AdGuard Home — комплексное решение, предназначенное для блокировки рекламы и отслеживания на всех устройствах в вашей домашней сети. Поскольку мир все больше внедряет Интернет вещей, + С ростом числа подключенных устройств сохранение контроля над всей сетью имеет решающее значение. AdGuard Home позволяет вам легко управлять этим, обеспечивая безопасность и + беспрепятственный просмотр страниц на любом устройстве под вашей крышей. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + В мастере настройки важно установить «Порт» веб-интерфейса администратора на 8095. + Это гарантирует, что приложение не будет конфликтовать с другими приложениями из DFWebOS App Store и будет доступно. + при нажатии на значок приложения на главном экране umbrelOS. +releaseNotes: >- + В этом выпуске основное внимание уделяется исправлениям ошибок и обновлениям безопасности. + + + Исправления безопасности: + — Библиотеки внешнего интерфейса обновлены для устранения известной уязвимости (CVE-2026-40175). + - Базовая версия Go обновлена ​​для устранения недавних уязвимостей безопасности Go. + + + Исправления ошибок: + - Исправлена ​​некорректная пересылка запросов корневого домена, когда настроены восходящие потоки для конкретного домена. + - Исправлена ​​ошибка, из-за которой настройка строгой проверки SNI TLS не сохранялась при изменении конфигурации TLS. + - Исправлено поведение клиентов при блокировке/разблокировке при перемещении клиентов между списками разрешенных и запрещенных. + + + Полные примечания к выпуску можно найти по адресу https://github.com/AdguardTeam/AdGuardHome/releases. +developer: Adguard +website: https://adguard.com/fr/adguard-home/overview.html +dependencies: [] +repo: https://github.com/AdguardTeam/AdGuardHome +support: https://github.com/AdguardTeam/AdGuardHome/issues +port: 8095 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Julienpeps +submission: https://github.com/getumbrel/dfwebos-apps/pull/1038 diff --git a/adguard-home/docker-compose.yml b/adguard-home/docker-compose.yml new file mode 100644 index 0000000..5d541b0 --- /dev/null +++ b/adguard-home/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + server: + image: adguard/adguardhome:v0.107.74@sha256:f29c58a91f79387cbbbb042e140814f58e830d457d44af03d662c8df43db9dea + # переопределить команду по умолчанию, чтобы установить веб-адрес на порт 8095, чтобы избежать конфликта с Thunderhub + # команда из Dockerfile: https://github.com/AdguardTeam/AdGuardHome/blob/master/docker/Dockerfile + command: ["--no-check-update", "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", "-w", "/opt/adguardhome/work", "--web-addr", "0.0.0.0:8095"] + restart: on-failure + network_mode: host + volumes: + - ${APP_DATA_DIR}/data/work:/opt/adguardhome/work + - ${APP_DATA_DIR}/data/conf:/opt/adguardhome/conf + cap_add: + - NET_ADMIN diff --git a/adventurelog/data/app/.gitkeep b/adventurelog/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/adventurelog/data/db/.gitkeep b/adventurelog/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/adventurelog/dfwebos-app.yml b/adventurelog/dfwebos-app.yml new file mode 100644 index 0000000..7eee924 --- /dev/null +++ b/adventurelog/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1.1 +id: adventurelog +category: files +name: AdventureLog +version: "v0.12.0" +tagline: Автономный трекер путешествий и планировщик поездок +description: >- + 🗺️ Начав с простой идеи отслеживания мест путешествий (так называемых приключений), AdventureLog превратился в полноценного спутника в путешествиях. С помощью AdventureLog вы можете записывать свои приключения, отслеживать, где вы были на карте мира, совместно планировать следующую поездку и делиться своими впечатлениями с друзьями и семьей. + + + AdventureLog был создан, чтобы решить проблему: отсутствие современного, удобного в использовании спутника для путешествий с открытым исходным кодом. Многие существующие приложения для путешествий либо слишком сложны, либо слишком дороги, либо слишком закрыты, чтобы быть полезными для обычного путешественника. AdventureLog стремится быть противоположным: простым, красивым и открытым для всех. +releaseNotes: >- + AdventureLog v0.12.0 — это крупное обновление, ориентированное на планирование поездок, составление маршрутов и более интеллектуальные инструменты для путешествий. Ключевые моменты включают в себя: + + + - Полностью переработанная система маршрутов с возможностью перетаскивания, изменения порядка и планирования на основе карт. + - Планирование с учетом дня недели: день недели отображается в коллекциях и представлениях маршрута. + - Примечания и контрольные списки для элементов всей поездки, которые можно просмотреть и отметить в маршруте. + - Новые инструменты бюджетирования с полями затрат для местоположений, транспорта и проживания, а также настройки валюты. + - Поддержка загрузки файлов GPX для записей о транспортировке. + - Улучшенная аутентификация OIDC с автоматическим перенаправлением, привязкой учетных записей по электронной почте и более плавными потоками. + - Обновлен дизайн коллекции интерфейс со статусами, выбором основной фотографии и улучшенным обменом фотографиями. + - Новые переключатели рекомендаций и более умное определение города/места. + - Элементы маршрута теперь включены в резервное копирование и восстановление. + - Различные исправления ошибок для часовых поясов, календарей, редактирования местоположения и рендеринга интерфейс. + + + Полные примечания к выпуску можно найти по адресу https://github.com/seanmorley15/AdventureLog/releases/. +developer: Sean Morley +website: https://adventurelog.app/ +repo: https://github.com/seanmorley15/AdventureLog +support: https://github.com/seanmorley15/AdventureLog/issues +port: 8015 +submitter: Mateo Silguero +submission: https://github.com/getumbrel/dfwebos-apps/pull/2222 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/adventurelog/docker-compose.yml b/adventurelog/docker-compose.yml new file mode 100644 index 0000000..9e4d300 --- /dev/null +++ b/adventurelog/docker-compose.yml @@ -0,0 +1,50 @@ +version: '3.7' +services: + app_proxy: + environment: + APP_HOST: adventurelog_web_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/seanmorley15/adventurelog-frontend:v0.12.0@sha256:9aa653603eb1305f3c34c61bc99b40a394295aed3fecd8c9777a9e5c04c7155e + restart: on-failure + environment: + PUBLIC_SERVER_URL: "http://adventurelogserver1:8000" + ORIGIN: "http://${DEVICE_DOMAIN_NAME}:8015" + BODY_SIZE_LIMIT: "Infinity" + depends_on: + - server + db: + image: ghcr.io/baosystems/postgis:15-3.5@sha256:ac619116c8ee81a386eb878956950d798b57c502985c12eb6e7be1598aa8d02f + restart: on-failure + environment: + POSTGRES_DB: database + POSTGRES_USER: adventure + POSTGRES_PASSWORD: adventure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data/ + + server: + image: ghcr.io/seanmorley15/adventurelog-backend:v0.12.0@sha256:68725d6a3692333e0049607f32078e865e95ebdb8a13e0c5512a01ef766770ae + container_name: adventurelogserver1 # needs to be set for the frontend to be able to connect (underline not supported) + restart: on-failure + environment: + - PGHOST=adventurelog_db_1 + - PGDATABASE=database + - PGUSER=adventure + - PGPASSWORD=adventure + - SECRET_KEY=adventure + - DJANGO_ADMIN_USERNAME=admin + - DJANGO_ADMIN_PASSWORD=admin + - DJANGO_ADMIN_EMAIL=admin@example.com + - PUBLIC_URL=http://${DEVICE_DOMAIN_NAME}:8016 + - CSRF_TRUSTED_ORIGINS=http://${DEVICE_DOMAIN_NAME}:8015 + - DEBUG=False + - FRONTEND_URL=http://${DEVICE_DOMAIN_NAME}:8015 + ports: + - '8016:80' + depends_on: + - db + volumes: + - ${APP_DATA_DIR}/data/app:/code/media/ diff --git a/adventurelog/hooks/pre-start b/adventurelog/hooks/pre-start new file mode 100755 index 0000000..007bb1a --- /dev/null +++ b/adventurelog/hooks/pre-start @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" + +# Удалите файл .gitignore из каталогов данных, если они существуют. + +[ -f "${APP_DATA_DIR}/data/app/.gitignore" ] && rm -f "${APP_DATA_DIR}/data/app/.gitignore" +[ -f "${APP_DATA_DIR}/data/db/.gitignore" ] && rm -f "${APP_DATA_DIR}/data/db/.gitignore" diff --git a/affine/data/config/.gitkeep b/affine/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/affine/data/storage/blob/.gitkeep b/affine/data/storage/blob/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/affine/data/storage/postgres/.gitkeep b/affine/data/storage/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/affine/data/storage/redis/.gitkeep b/affine/data/storage/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/affine/dfwebos-app.yml b/affine/dfwebos-app.yml new file mode 100644 index 0000000..813c4ff --- /dev/null +++ b/affine/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: affine +name: Affine +tagline: Альтернатива с открытым исходным кодом Notion, Miro и Airtable +category: files +version: "0.26.3" +port: 3013 +description: >- + Готовая к использованию альтернатива Notion & Miro с открытым исходным кодом, ориентированная на конфиденциальность, ориентированная на локальное использование. + Одна гиперфункциональная платформа для неистребимых творческих умов. + + + Формировать, а не адаптировать. Инструменты могут повлиять на ваш образ жизни. AFFiNE создан для отдельных лиц и команд, которые заботятся о своих данных, отказываются от привязки к поставщику и хотят иметь контроль над своими основными инструментами. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Чтобы сохранить данные, вам необходимо войти в свой собственный экземпляр Affine: + + + 1. Когда вы впервые открываете Affine, он поможет вам настроить учетную запись администратора. + + 2. После настройки учетной записи администратора закройте окно браузера и снова откройте приложение Affine с главного экрана umbrelOS. + + 3. В приложении Affine выберите демонстрационное рабочее пространство на боковой панели, а затем выберите «Создать облачное рабочее пространство». + + 4. Следуйте инструкциям, чтобы создать автономное облачное рабочее пространство. Теперь вы готовы использовать Affine со своим автономным экземпляром! +developer: toeverything +website: https://affine.pro +submitter: Jasper +submission: https://github.com/getumbrel/dfwebos-apps/pull/990 +repo: https://github.com/toeverything/AFFiNE +support: https://docs.affine.pro +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Ключевые моменты включают в себя: + - Улучшена плавная производительность при перетаскивании и масштабировании. + - Улучшено сопоставление клавиш для раскладок клавиатуры за пределами США. + - Улучшен фильтр базы данных, стиль выноски по умолчанию и видимость темного режима. + - Улучшена совместимость провайдера S3 для автономных установок. + - Улучшена панель администратора с улучшенной панелью управления и интерфейсом настроек. + - Исправлена ​​проблема, из-за которой история могла создаваться повторно во время одновременных операций. + + + Полные примечания к выпуску можно найти по адресу https://github.com/toeverything/AFFiNE/releases. +dependencies: [] +path: "" +defaultUsername: "" diff --git a/affine/docker-compose.yml b/affine/docker-compose.yml new file mode 100644 index 0000000..845ba0d --- /dev/null +++ b/affine/docker-compose.yml @@ -0,0 +1,71 @@ +services: + + app_proxy: + environment: + APP_HOST: affine_web_1 + APP_PORT: 3010 + + web: + image: ghcr.io/toeverything/affine:0.26.3@sha256:725aaceb0ed94d4b832ae6ef9414503291c9b2b4f60bd6f3c7eef571b6149add + restart: on-failure + environment: + - AFFINE_CONFIG_PATH=/root/.affine/config + - REDIS_SERVER_HOST=affine_redis_1 + - DATABASE_URL=postgres://affine:affine@affine_db_1:5432/affine + - NODE_ENV=production + volumes: + - ${APP_DATA_DIR}/data/config:/root/.affine/config + - ${APP_DATA_DIR}/data/storage/blob:/root/.affine/storage + depends_on: + redis: + condition: service_healthy + db: + condition: service_healthy + migration: + condition: service_completed_successfully + + migration: + image: ghcr.io/toeverything/affine:0.26.3@sha256:725aaceb0ed94d4b832ae6ef9414503291c9b2b4f60bd6f3c7eef571b6149add + restart: on-failure + command: + ['sh', '-c', 'node ./scripts/self-host-predeploy'] + environment: + - AFFINE_CONFIG_PATH=/root/.affine/config + - REDIS_SERVER_HOST=affine_redis_1 + - DATABASE_URL=postgres://affine:affine@affine_db_1:5432/affine + - NODE_ENV=production + volumes: + - ${APP_DATA_DIR}/data/config:/root/.affine/config + - ${APP_DATA_DIR}/data/storage/blob:/root/.affine/storage + depends_on: + redis: + condition: service_healthy + db: + condition: service_healthy + + redis: + image: redis:7.2.4@sha256:e647cfe134bf5e8e74e620f66346f93418acfc240b71dd85640325cb7cd01402 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/storage/redis:/data + healthcheck: + test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping'] + interval: 10s + timeout: 5s + retries: 5 + + db: + image: postgres:16.2@sha256:f58300ac8d393b2e3b09d36ea12d7d24ee9440440e421472a300e929ddb63460 + restart: on-failure + environment: + POSTGRES_USER: affine + POSTGRES_PASSWORD: affine + POSTGRES_DB: affine + PGDATA: /var/lib/postgresql/data/pgdata + volumes: + - ${APP_DATA_DIR}/data/storage/postgres:/var/lib/postgresql/data + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U affine'] + interval: 10s + timeout: 5s + retries: 5 diff --git a/agent-zero/data/.gitkeep b/agent-zero/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/agent-zero/dfwebos-app.yml b/agent-zero/dfwebos-app.yml new file mode 100644 index 0000000..e624025 --- /dev/null +++ b/agent-zero/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1 +id: agent-zero +name: Agent Zero +tagline: Персональная, органичная агентная структура, которая растет и учится вместе с вами. +category: ai +version: "v1.9" +port: 3005 +description: >- + «Агент Ноль» — это персональная, органичная агентная структура, которая растет и учится вместе с вами. + Он полностью Dockerized и включает в себя такие функции, как преобразование речи в текст и TTS. + + + **Основные особенности:** + - **Помощник общего назначения**: может выполнять различные задачи. + - **Использование компьютера:** Можно использовать компьютер (в контейнере). + – **Кодирование:** Может писать и выполнять код. + - **Память:** учится на основе взаимодействия. + + + **Начиная:** + 1. Запустите Агент Ноль. + 2. Настройте свои модели в настройках. + + + ⚠️ **Внимание:** Агент Зеро может выполнять код. Бегите осторожно. +developer: Agent Zero AI +website: https://github.com/agent0ai/agent-zero +submitter: slimatic +submission: https://github.com/getumbrel/dfwebos-apps/pull/4115 +repo: https://github.com/agent0ai/agent-zero +support: https://github.com/agent0ai/agent-zero/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: "" +path: "" diff --git a/agent-zero/docker-compose.yml b/agent-zero/docker-compose.yml new file mode 100644 index 0000000..bb8d852 --- /dev/null +++ b/agent-zero/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: agent-zero_web_1 + APP_PORT: 80 + + web: + image: agent0ai/agent-zero:v1.9@sha256:a18a33c0e3dcc2f111979d6c874ead4be4a820513d3d3bfb931c5b47fcb301a9 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/a0 + environment: + - ALLOWED_ORIGINS=http://${DEVICE_DOMAIN_NAME}:${APP_AGENTZERO_PORT},http://${DEVICE_HOSTNAME}:${APP_AGENTZERO_PORT},${APP_AGENTZERO_LOCAL_URLS} diff --git a/agent-zero/exports.sh b/agent-zero/exports.sh new file mode 100644 index 0000000..2e6df1b --- /dev/null +++ b/agent-zero/exports.sh @@ -0,0 +1,16 @@ +export APP_AGENTZERO_PORT="3005" + +local_ips=$(hostname --all-ip-addresses 2> /dev/null) || local_ips="" +export APP_AGENTZERO_LOCAL_IPS="${local_ips}" + +# Создайте URLs с http:// и портом, разделенными запятыми. +ips_with_port=$(for ip in $local_ips; do + # Оберните адреса IPv6 в [] + if [[ "$ip" == *:* ]]; then + echo -n "http://[$ip]:$APP_AGENTZERO_PORT," + else + echo -n "http://$ip:$APP_AGENTZERO_PORT," + fi +done | sed 's/,$//') + +export APP_AGENTZERO_LOCAL_URLS="${ips_with_port}" diff --git a/agora/data/entrypoint.sh b/agora/data/entrypoint.sh new file mode 100755 index 0000000..2eaac8e --- /dev/null +++ b/agora/data/entrypoint.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +# Обновить конфиги +/filebrowser config init +/filebrowser config set --branding.name "Agora Admin File Browser" +/filebrowser users add dfwebos ${APP_PASSWORD} + +exec /filebrowser -p 8080 --baseurl "/admin/files" diff --git a/agora/data/www/admin/index.html b/agora/data/www/admin/index.html new file mode 100644 index 0000000..f39c7f0 --- /dev/null +++ b/agora/data/www/admin/index.html @@ -0,0 +1,16 @@ + + + + + Панель администратора Agora + + +

Добро пожаловать в панель администратора Agora!

+ + + diff --git a/agora/database/filebrowser.db b/agora/database/filebrowser.db new file mode 100644 index 0000000..e69de29 diff --git a/agora/dfwebos-app.yml b/agora/dfwebos-app.yml new file mode 100644 index 0000000..a021c94 --- /dev/null +++ b/agora/dfwebos-app.yml @@ -0,0 +1,30 @@ +manifestVersion: 1 +id: agora +category: files +name: Agora +version: "0.1.2" +tagline: Продайте свои файлы за Bitcoin +description: >- + Agora — это проект, который позволяет каждому продавать файлы в Интернете за + биткойн с использованием сети Lightning. + + + Agora обслуживает содержимое локального каталога, предоставляя списки файлов и загружая их через HTTP. Например, вы можете указать ему каталог, полный PDF-файлов, что позволит пользователям просматривать PDF-файлы в своем веб-браузере. Если агора подключена к узлу LND, ее можно настроить так, чтобы за загрузку требовались сетевые платежи Lightning. +developer: Casey Rodarmor & Sönke Hahn +website: https://agora-org.github.io/agora/ +dependencies: + - lightning +repo: https://github.com/agora-org/agora +support: https://t.me/agoradiscussion +port: 12080 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: /admin/ +deterministicPassword: true +defaultUsername: dfwebos +torOnly: false +submitter: Jonathan Zernik +submission: https://github.com/getumbrel/umbrel/pull/1282 +releaseNotes: "" \ No newline at end of file diff --git a/agora/docker-compose.yml b/agora/docker-compose.yml new file mode 100644 index 0000000..65350d1 --- /dev/null +++ b/agora/docker-compose.yml @@ -0,0 +1,65 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_AGORA_IP + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + filebrowser: + image: filebrowser/filebrowser:v2.21.1@sha256:e1f43b1b8a1acb1d7cd5f934454e7a2ef571ea3bab48b0e1ed0fa97ef9df8d69 + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/files:/srv + - ${APP_DATA_DIR}/database/filebrowser.db:/database.db + - ${APP_DATA_DIR}/data:/data + environment: + APP_PASSWORD: "$APP_PASSWORD" + entrypoint: /data/entrypoint.sh + networks: + default: + ipv4_address: $APP_AGORA_FILEBROWSER_IP + + agora: + image: ghcr.io/agora-org/agora:sha-48d3205@sha256:35eda120a8d868c7fa3b9cbdcad7cc2245b9fe7e0c5356c8091bb0bf9a65222d + restart: on-failure + init: true + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/files:/files + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + user: "1000:1000" + environment: + # Переменные среды LND + LND_RPC_AUTHORITY: "$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT" + TLS_CERT_PATH: "/lnd/tls.cert" + INVOICES_MACAROON_PATH: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/invoice.macaroon" + + # Переменные среды приложения + FILES_DIR: "/files" + AGORA_PORT: 8080 + networks: + default: + ipv4_address: $APP_AGORA_SERVER_IP + + nginx: + image: nginx:1.19-alpine@sha256:07ab71a2c8e4ecb19a5a5abcfb3a4f175946c001c8af288b1aa766d67b0d05d2 + init: true + restart: on-failure + volumes: + - ${APP_DATA_DIR}/nginx/nginx.conf.template:/etc/nginx/templates/nginx.conf.template + - ${APP_DATA_DIR}/data/www:/usr/share/nginx/html + environment: + NGINX_ENVSUBST_OUTPUT_DIR: /etc/nginx/ + APP_AGORA_SERVER_IP: $APP_AGORA_SERVER_IP + APP_AGORA_FILEBROWSER_IP: $APP_AGORA_FILEBROWSER_IP + APP_HIDDEN_SERVICE: $APP_HIDDEN_SERVICE + depends_on: + - agora + - filebrowser + networks: + default: + ipv4_address: $APP_AGORA_IP diff --git a/agora/exports.sh b/agora/exports.sh new file mode 100644 index 0000000..55346a0 --- /dev/null +++ b/agora/exports.sh @@ -0,0 +1,4 @@ +export APP_AGORA_IP="10.21.21.87" +export APP_AGORA_PORT="12080" +export APP_AGORA_SERVER_IP="10.21.21.88" +export APP_AGORA_FILEBROWSER_IP="10.21.21.89" \ No newline at end of file diff --git a/agora/files/.gitkeep b/agora/files/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/agora/nginx/nginx.conf.template b/agora/nginx/nginx.conf.template new file mode 100644 index 0000000..f98a83d --- /dev/null +++ b/agora/nginx/nginx.conf.template @@ -0,0 +1,28 @@ +events { } + +http { + + +server { + listen 80; + server_name _; + + location / { + proxy_pass http://${APP_AGORA_SERVER_IP}:8080; + } + + location /admin { + root /usr/share/nginx/html; + ssi on; + set $ssihiddenservice "${APP_HIDDEN_SERVICE}"; + index index.html; + } + + location /admin/files { + client_max_body_size 0; + proxy_pass http://${APP_AGORA_FILEBROWSER_IP}:8080; + } + + } + +} diff --git a/airtrail/data/db/.gitkeep b/airtrail/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/airtrail/data/uploads/.gitkeep b/airtrail/data/uploads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/airtrail/dfwebos-app.yml b/airtrail/dfwebos-app.yml new file mode 100644 index 0000000..1131371 --- /dev/null +++ b/airtrail/dfwebos-app.yml @@ -0,0 +1,41 @@ +manifestVersion: 1 +id: airtrail +category: files +name: AirTrail +version: "3.9.0" +tagline: Современная персональная система отслеживания рейсов с открытым исходным кодом. +description: >- + Веб-приложение, которое позволяет пользователям отслеживать свои рейсы и просматривать историю полетов. + + + Функции: + + - **Карта мира**: просматривайте все свои рейсы на интерактивной карте мира. + + - **История полетов**: отслеживайте все свои рейсы в одном месте. + + - **Статистика**: получите представление об истории полетов с помощью статистики. + + - **Несколько пользователей**: управляйте несколькими пользователями, делитесь между ними рейсами, защищайте свои данные с помощью аутентификации пользователей и интегрируйтесь с вашим провайдером OAuth. + + - **Адаптивный дизайн**: используйте приложение на любом устройстве с адаптивным дизайном. + + - **Темный режим**: переключение между светлым и темным режимом. + + - **Импорт рейсов**: импортируйте рейсы из различных источников, включая MyFlightRadar24, App in the Air и JetLog. +releaseNotes: "" +developer: Johan Ohly +website: https://airtrail.johan.ohly.dk +dependencies: [] +repo: https://github.com/johanohly/AirTrail +support: https://github.com/johanohly/AirTrail/issues +port: 3256 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: cergmin +submission: https://github.com/getumbrel/dfwebos-apps/pull/4199 diff --git a/airtrail/docker-compose.yml b/airtrail/docker-compose.yml new file mode 100644 index 0000000..5607d7d --- /dev/null +++ b/airtrail/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: airtrail_app_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + app: + image: johly/airtrail:v3.9.0@sha256:8e909ac815046b0eefa773c33e69fd0aeaad84398ed49dd34f926e7f5daa3fdf + user: "1000:1000" + restart: on-failure + depends_on: + postgres: + condition: service_healthy + environment: + UPLOAD_LOCATION: /app/uploads + DB_URL: postgres://airtrail:itworkslocally@airtrail_postgres_1:5432/airtrail + volumes: + - ${APP_DATA_DIR}/data/uploads:/app/uploads + + postgres: + image: postgres:18.3-alpine@sha256:52098013b4b64a746626437d38afc03cabff6cdeb4d3d92e2342aa95f0ce56ea + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + POSTGRES_DB: airtrail + POSTGRES_USER: airtrail + POSTGRES_PASSWORD: itworkslocally + PGDATA: /data/pgdata + healthcheck: + test: "pg_isready -U airtrail -h localhost -d airtrail" + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + volumes: + - ${APP_DATA_DIR}/data/db:/data diff --git a/akaunting/db/.gitkeep b/akaunting/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/akaunting/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/akaunting/dfwebos-app.yml b/akaunting/dfwebos-app.yml new file mode 100644 index 0000000..98f0b9a --- /dev/null +++ b/akaunting/dfwebos-app.yml @@ -0,0 +1,67 @@ +manifestVersion: 1 +id: akaunting +name: Akaunting +tagline: Интуитивное бухгалтерское решение для малого бизнеса и фрилансеров +category: finance +version: "3.1.21" +port: 8773 +description: >- + 📊 Акаунтинг — мощное бухгалтерское программное обеспечение с открытым исходным кодом, которое упрощает управление финансами для малого бизнеса, фрилансеров и предпринимателей. Он предлагает комплексное решение для управления доходами, расходами, счетами и финансовыми отчетами, что упрощает поддержание организованного и прозрачного обзора ваших финансов. Благодаря интуитивно понятному дизайну и гибким функциям Akaunting помогает вам сэкономить время на административных задачах, одновременно повышая точность и эффективность. + + + Akaunting создан для оптимизации ваших повседневных бухгалтерских операций: от создания профессиональных счетов до управления клиентами, поставщиками и регулярными платежами. Он также включает в себя надежные функции, такие как мультивалютная поддержка международных транзакций, интеграция онлайн-платежей для более быстрого движения денежных средств и отслеживание запасов для обеспечения согласованности запасов и продаж. Для тех, кому требуется еще больше функциональности, встроенный магазин приложений предлагает широкий выбор дополнений для расширения программного обеспечения в соответствии с вашими потребностями. + + + ℹ Для доступа к большинству функций приложения вам понадобится ключ API. Создать его можно на сайте разработчика: https://akaunting.com. + + + Ключевые особенности: + + + 💰 Выставление счетов. С легкостью создавайте, настраивайте и отправляйте профессиональные счета. + + + 📥 Отслеживание расходов. Записывайте, классифицируйте и отслеживайте расходы, чтобы поддерживать полный контроль над своим бюджетом. + + + 📊 Финансовые отчеты. Создавайте подробные отчеты о прибылях и убытках, балансовые отчеты и другую информацию, позволяющую понять ваше финансовое состояние. + + + 👥 Управление клиентами и поставщиками. Держите все контакты и историю их транзакций организованными и легко доступными. + + + 💳 Онлайн-платежи. Принимайте клиентские платежи через PayPal, Stripe и другие популярные шлюзы. + + + 🌍 Поддержка мультивалютности. Обрабатывайте транзакции в нескольких валютах с автоматическим обновлением обменного курса. + + + 🧾 Регулярное выставление счетов. Автоматизируйте повторяющиеся счета и платежи по подпискам или долгосрочным контрактам. + + + 📦 Управление запасами. Отслеживайте наличие товаров, продажи и покупки в режиме реального времени. + + + 🔧 Расширения App Store. Расширьте функциональность с помощью надстроек, таких как расчет заработной платы, расширенные отчеты или управление проектами. +developer: Akaunting Inc. +website: https://akaunting.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3290 +repo: https://github.com/akaunting/akaunting +support: https://github.com/akaunting/akaunting/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Это обновление включает важное исправление: + - Исправлена ​​проблема с версией модуля кэша. + + + Полные примечания к выпуску можно найти по адресу https://github.com/akaunting/akaunting/releases. +dependencies: [] +path: "" +defaultUsername: dfwebos@dfwebos.local +deterministicPassword: true diff --git a/akaunting/docker-compose.yml b/akaunting/docker-compose.yml new file mode 100644 index 0000000..8f5feb1 --- /dev/null +++ b/akaunting/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" + +services: + + app_proxy: + environment: + APP_HOST: akaunting_app_1 + APP_PORT: 80 + + app: + image: akaunting/akaunting:3.1.21@sha256:918bbc77981e5b96ab6aa6838491cfa7c98cb4ee7bbf9532ee083e7e66d04255 + # без рута не работает + #user: "1000:1000" + restart: on-failure + environment: + AKAUNTING_SETUP: "true" + LOCALE: en-US + DB_HOST: akaunting_db_1 + DB_PORT: 3306 + DB_NAME: akaunting + DB_USERNAME: admin + DB_PASSWORD: akaunting_password + DB_PREFIX: asd_ + COMPANY_NAME: "My Company" + COMPANY_EMAIL: my@company.com + ADMIN_EMAIL: dfwebos@dfwebos.local + ADMIN_PASSWORD: ${APP_PASSWORD} + depends_on: + - db + + db: + image: mariadb:11.8.2@sha256:2bcbaec92bd9d4f6591bc8103d3a8e6d0512ee2235506e47a2e129d190444405 + user: "1000:1000" + restart: on-failure + environment: + MYSQL_DATABASE: akaunting + MYSQL_USER: admin + MYSQL_PASSWORD: akaunting_password + MYSQL_RANDOM_ROOT_PASSWORD: "yes" + volumes: + - ${APP_DATA_DIR}/db:/var/lib/mysql diff --git a/alby-nostr-wallet-connect/data/.gitkeep b/alby-nostr-wallet-connect/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/alby-nostr-wallet-connect/dfwebos-app.yml b/alby-nostr-wallet-connect/dfwebos-app.yml new file mode 100644 index 0000000..4961451 --- /dev/null +++ b/alby-nostr-wallet-connect/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1.2 +id: alby-nostr-wallet-connect +name: Nostr Wallet Connect +tagline: Сила зарядов на кончиках ваших пальцев +category: bitcoin +version: "0.4.2" +port: 58000 +description: >- + ⚠️ Уведомление об устаревании: разработчики проекта объявили это приложение устаревшим и поэтому больше не будут получать обновления. + Приложение Alby Hub в магазине приложений является развитием этого приложения от тех же разработчиков, и его следует использовать вместо него. + + + Подключите свой узел LND через Nostr, чтобы выполнять запись напрямую из поддерживаемых приложений, таких как Damus & Amethyst. + + + 🛠️Инструкция + + - Пошаговое руководство по аметисту: https://blog.getalby.com/native-zapping-in-amethyst + + - Видеогид Damus: https://streamable.com/bareih +developer: Alby +website: http://getalby.com/ +submitter: Alby +submission: https://github.com/getumbrel/dfwebos-apps/pull/636 +repo: https://github.com/getAlby/nostr-wallet-connect +support: https://github.com/getAlby/nostr-wallet-connect/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + - В этом выпуске исправлен ряд проблем с производительностью: высокая загрузка ЦП и медленная загрузка для пользователей с большим количеством приложений. + + - Также исправлено несоответствие формата временной метки в ответах методов расширения. +dependencies: + - lightning +path: "" +defaultUsername: "" +defaultPassword: "" +disabled: true diff --git a/alby-nostr-wallet-connect/docker-compose.yml b/alby-nostr-wallet-connect/docker-compose.yml new file mode 100644 index 0000000..0ccc043 --- /dev/null +++ b/alby-nostr-wallet-connect/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: alby-nostr-wallet-connect_server_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + server: + image: ghcr.io/getalby/nostr-wallet-connect:0.4.2@sha256:8e75c28eba2155ab1ad605e8d9c8de7e601dcc55d497e8641d37ae4cb3a4e433 + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + LN_BACKEND_TYPE: "LND" + LND_ADDRESS: $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT + LND_CERT_FILE: "/lnd/tls.cert" + LND_MACAROON_FILE: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" + DATABASE_URI: "/data/nostr-wallet-connect.db" + COOKIE_SECRET: "666" + restart: on-failure + stop_grace_period: 1m diff --git a/albyhub/data/.gitkeep b/albyhub/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/albyhub/dfwebos-app.yml b/albyhub/dfwebos-app.yml new file mode 100644 index 0000000..2979c33 --- /dev/null +++ b/albyhub/dfwebos-app.yml @@ -0,0 +1,57 @@ +manifestVersion: 1 +id: albyhub +name: Alby Hub ✨ +tagline: Самостоятельный кошелек Lightning со встроенными узлами и подключениями к приложениям +category: bitcoin +version: "1.21.6" +port: 59000 +description: >- + Alby Hub — это самостоятельный кошелек Bitcoin Lightning с открытым исходным кодом и самым простым в использовании сетевым узлом Lightning, доступным каждому. + Независимо от того, являетесь ли вы частным лицом, создателем или разработчиком, Alby Hub — это ваш центр беспрепятственных платежей Bitcoin. + + + Легко подключайтесь к различным приложениям, таким как расширение браузера Alby или мобильное приложение Alby Go, создавайте дополнительные кошельки для семьи и друзей и получайте полный контроль над своими средствами — и все это с помощью интуитивно понятного интерфейса и готовых для разработчиков API. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + + Alby Hub можно настроить двумя способами: + + 1) В качестве автономного приложения без установленного узла Lightning (LND): при установке выберите «Начать (LDK)», чтобы начать использовать встроенный узел Lightning на основе LDK. + + 2) Подключено к приложению Lightning Node (LND), работающему на вашем DFWebOS: обязательно сначала установите и настройте Lightning Node на вашем DFWebOS. Затем установите Alby Hub, который автоматически настроится на подключение к приложению Lightning Node, работающему на вашем DFWebOS. + + + ПОЛЕЗНЫЕ ССЫЛКИ + - Запросы функций, отчеты об ошибках, доска отзывов - https://feedback.getalby.com/-alby-hub-request-a-feature + - Сообщество пользователей и разработчиков - https://discord.getalby.com/ + - Список приложений и проектов, использующих протокол NWC - https://github.com/getAlby/awesome-nwc +developer: Alby +website: https://albyhub.com +submitter: Alby +submission: https://github.com/getumbrel/dfwebos-apps/pull/1409 +repo: https://github.com/getAlby/hub +support: https://support.getalby.com +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Ключевые изменения в этом выпуске: + - Обновлена ​​зависимость Boltz для улучшенной функциональности обмена. + - Обмены (Lightning на ончейн) теперь требуют только 1 ончейн подтверждения вместо 2 + - На страницу заработка добавлена ​​реферальная программа Алби. + - Добавлен Castamatic в магазин приложений. + - Увеличен бюджет аккаунта Alby по умолчанию со 150 тыс. до 250 тыс. сат. + - Удален макси-режим Bitcoin. + - Добавлена ​​страница 404. + - Различные исправления ошибок и мелкие улучшения. + + + Полные примечания к выпуску можно найти по адресу https://github.com/getAlby/hub/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/albyhub/docker-compose.yml b/albyhub/docker-compose.yml new file mode 100644 index 0000000..b93166d --- /dev/null +++ b/albyhub/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: albyhub_server_1 + APP_PORT: 8080 + server: + image: ghcr.io/getalby/hub:v1.21.6@sha256:dc05806a3384f57ded8aca2ba58d47ec93a0aeb213539b5faf32e7a3c71b5c32 + user: 1000:1000 + volumes: + - ${APP_DATA_DIR}/data:/data + - ${DFWEBOS_ROOT}/app-data/lightning/data/lnd:/lnd:ro + environment: + LN_BACKEND_TYPE: ${APP_ALBYHUB_LN_BACKEND:-LDK} + LND_ADDRESS: ${APP_ALBYHUB_LND_ADDRESS} + LND_CERT_FILE: ${APP_ALBYHUB_LND_CERT_FILE} + LND_MACAROON_FILE: ${APP_ALBYHUB_LND_MACAROON_FILE} + WORK_DIR: "/data/albyhub" + COOKIE_SECRET: ${APP_SEED} + LOG_EVENTS: "true" + restart: on-failure + stop_grace_period: 3m diff --git a/albyhub/exports.sh b/albyhub/exports.sh new file mode 100644 index 0000000..043efef --- /dev/null +++ b/albyhub/exports.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# Проверьте, установлено ли приложение Lightning Node, и если да, экспортируйте необходимые переменные. +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +if echo "$installed_apps" | grep --quiet -x 'lightning'; then + export APP_ALBYHUB_LN_BACKEND="LND" + export APP_ALBYHUB_LND_ADDRESS="10.21.21.9:10009" + export APP_ALBYHUB_LND_CERT_FILE="/lnd/tls.cert" + # Без `lightning` в качестве зависимости нам необходимо жестко запрограммировать путь к файлу макарон LND. + # Это означает, что Alby Hub в настоящее время работает только с основной сетью. + # Когда в DFWebOS будут поддерживаться дополнительные зависимости, мы сможем вернуться к этому вопросу. + export APP_ALBYHUB_LND_MACAROON_FILE="/lnd/data/chain/bitcoin/mainnet/admin.macaroon" +fi diff --git a/appsmith/data/app/.gitkeep b/appsmith/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/appsmith/dfwebos-app.yml b/appsmith/dfwebos-app.yml new file mode 100644 index 0000000..63da46b --- /dev/null +++ b/appsmith/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1 +id: appsmith +name: Appsmith +tagline: Платформа для создания панелей администратора, внутренних инструментов и информационных панелей. +category: developer +version: "v1.99" +port: 8654 +description: >- + Appsmith — это платформа разработки с открытым исходным кодом и низким уровнем написания кода, призванная помочь разработчикам и командам быстро и эффективно создавать внутренние инструменты и бизнес-приложения. Если вам нужны информационные панели, панели администратора, графические интерфейсы баз данных или рабочие процессы утверждения, Appsmith предоставляет мощную, но гибкую среду для создания надежных приложений без затрат на разработку традиционного программного обеспечения. + + + По своей сути Appsmith предлагает интерфейс перетаскивания с более чем 45 настраиваемыми виджетами, бесшовную интеграцию с более чем 18 источниками данных, включая API PostgreSQL, MongoDB, REST и GraphQL, а также встроенный редактор JavaScript для расширенной логики и интерактивности. Эта комбинация позволяет разработчикам и нетехническим пользователям с легкостью создавать динамические приложения, управляемые данными. + + + Appsmith поддерживает контроль версий на основе Git, что позволяет командам эффективно управлять изменениями приложений. Его архитектура основана на шаблоне модель-представление-контроллер (MVC), обеспечивающем чистую организацию кода и масштабируемость. Кроме того, Appsmith предлагает варианты развертывания как в облаке, так и на собственном хостинге, обеспечивая гибкость и контроль над вашими приложениями. + + + Appsmith, которому доверяют более 10 000 команд в 150 странах, включая такие организации, как Dropbox, Twilio и GSK, представляет собой проверенное решение для создания внутренних инструментов, повышающих производительность и оптимизирующих операции. + + + Являетесь ли вы стартапом, стремящимся ускорить разработку, или предприятием, которое ищет настраиваемые внутренние решения, Appsmith предлагает инструменты и гибкость для удовлетворения ваших потребностей. +developer: Appsmith +website: https://www.appsmith.com/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/2634 +repo: https://github.com/appsmithorg/appsmith +support: https://discord.com/invite/rBTTVJp +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: >- + В этом выпуске основное внимание уделяется исправлениям безопасности и улучшениям стабильности: + - 🚨 Исправлено множество уязвимостей безопасности, включая защиту SSRF, предотвращение XSS и принудительное применение разрешений ACL. + - Исправлена ​​проблема, из-за которой импорт мог повредить действия опубликованного макета. + - Исправлена ​​автоматическая вставка точки с запятой, приводившая к сбоям рефакторинга. + - Исправлены проблемы со стилем виджетов выбора полосы прокрутки. + - Предотвращено состояние гонки при создании суперпользователя. + - Исправлена ​​проблема, из-за которой запросы к источнику данных не завершались неудачно, если необходимое поле отсутствовало. + - Нормализованы электронные письма пользователей для удаления невидимых символов Юникода. + - Различные другие исправления ошибок и улучшения стабильности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/appsmithorg/appsmith/releases. +path: "" diff --git a/appsmith/docker-compose.yml b/appsmith/docker-compose.yml new file mode 100644 index 0000000..2be3e75 --- /dev/null +++ b/appsmith/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: appsmith_app_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + app: + image: appsmith/appsmith-ce:v1.99@sha256:eb9c41524a4be8103666b38b437d5496cb62ead292d9642ba130d8ed37a28aca + environment: + APPSMITH_ENCRYPTION_PASSWORD: ${APP_PASSWORD} + APPSMITH_ENCRYPTION_SALT: ${APP_PASSWORD} + volumes: + - ${APP_DATA_DIR}/data/app:/appsmith-stacks diff --git a/arcane/data/app_data/.gitkeep b/arcane/data/app_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/arcane/data/app_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/arcane/data/docker/.gitkeep b/arcane/data/docker/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/arcane/data/docker/.gitkeep @@ -0,0 +1 @@ + diff --git a/arcane/data/projects/.gitkeep b/arcane/data/projects/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/arcane/data/projects/.gitkeep @@ -0,0 +1 @@ + diff --git a/arcane/dfwebos-app.yml b/arcane/dfwebos-app.yml new file mode 100644 index 0000000..9166581 --- /dev/null +++ b/arcane/dfwebos-app.yml @@ -0,0 +1,60 @@ +manifestVersion: 1.1 +id: arcane +category: developer +name: Arcane +version: "1.18.1" +tagline: Простая и современная платформа управления Docker. +description: >- + ⚠️ Обязательно используйте для своих контейнеров и проектов только тома с именем Docker. Данные в томах, подключенных по привязке, будут потеряны при перезапуске или обновлении приложения Arcane. + + + ⚠️ Следите за конфликтами портов между вашими пользовательскими контейнерами Docker и вашими приложениями DFWebOS. + + + Arcane — это мощная и современная платформа управления контейнерами, предназначенная для упрощения взаимодействия разработчиков со средами Docker. Он обеспечивает цельный и визуально привлекательный интерфейс, который объединяет все аспекты управления контейнерами в одном месте. Пользователи могут создавать, запускать, останавливать и проверять контейнеры, исследовать сети, управлять образами и обрабатывать тома с точностью и контролем. + + + Помимо базового управления, Arcane повышает производительность, предлагая интегрированные инструменты, на которые разработчики обычно полагаются в своих ежедневных рабочих процессах. Его встроенный терминал позволяет напрямую взаимодействовать с запущенными контейнерами, а встроенный редактор кода обеспечивает быструю настройку или настройку сценариев без переключения на внешние приложения. Анализ системы в режиме реального времени и подробное ведение журналов дают пользователям четкое представление о производительности их инфраструктуры и использовании ресурсов. + + + Платформа призвана преодолеть разрыв между простотой и расширенным контролем. Он сочетает в себе чистый современный дизайн с мощными серверными возможностями, что делает его одинаково подходящим как для разработчиков, экспериментирующих локально, так и для профессионалов, управляющих более крупными установками. С помощью Arcane управление контейнерами больше похоже на использование хорошо продуманной среды разработки, чем на административной панели, что позволяет пользователям сосредоточиться на создании и запуске приложений, а не на выполнении сложных команд Docker. + + + 🧩 Arcane on DFWebOS предназначен для опытных пользователей, которым нужен полный контроль над своими контейнерами. Следуйте этим рекомендациям, чтобы обеспечить надежную и стабильную работу. + + + 1. Постоянные данные. Всегда используйте именованные тома Docker для своих контейнеров и проектов. Любые данные, хранящиеся в привязках, будут потеряны при обновлении или перезапуске приложения Arcane. + + + 2. Использование портов. Помните о конфликтах портов между вашими контейнерами, системными службами DFWebOS и другими установленными или будущими приложениями. Назначайте уникальные номера портов, чтобы предотвратить конфликты. + + + 3. Поведение при перезапуске. Настройте для контейнеров политику перезапуска, если она не остановлена ​​или всегда. Это гарантирует их автоматический перезапуск после перезапуска или обновления Arcane. + + + 4. Веб-доступ. Вы можете получить доступ к любому контейнеру, предоставляющему веб-интерфейс, по адресу `dfwebos.local:PORT_NUMBER`. Например, если ваше приложение работает на порту 5050, откройте http://dfwebos.local:5050` в своем браузере. +website: https://getarcane.app/ +dependencies: [] +repo: https://github.com/getarcaneapp/arcane +support: https://github.com/getarcaneapp/arcane/issues +port: 3552 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultUsername: "arcane" +defaultPassword: "arcane-admin" +releaseNotes: >- + Исправления ошибок в этом выпуске: + - Исправлен сбой проверки при создании конфигурации синхронизации Git. + + + Полные примечания к выпуску можно найти по адресу https://github.com/getarcaneapp/arcane/releases. +permissions: + - GPU +developer: Arcane +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/4017 diff --git a/arcane/docker-compose.yml b/arcane/docker-compose.yml new file mode 100644 index 0000000..4998ab7 --- /dev/null +++ b/arcane/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: arcane_arcane_1 + APP_PORT: 3552 + + docker: + image: docker:27.2.0-dind@sha256:f9f72ad901a78f27be922b2d320bbc263174f12919c1b37e6a01f828fa904565 + privileged: true + network_mode: host + stop_grace_period: 1m + restart: on-failure + environment: + DOCKER_ENSURE_BRIDGE: "dind0:10.32.0.1/16" + entrypoint: /entrypoint.sh + command: > + dockerd + --bridge dind0 + --data-root /data/data + --exec-root /data/exec + --host unix:///data/docker.sock + --pidfile /data/docker.pid + volumes: + - ${APP_DATA_DIR}/entrypoint.sh:/entrypoint.sh + - ${APP_DATA_DIR}/data/docker:/data + + arcane: + image: ghcr.io/getarcaneapp/arcane:v1.18.1@sha256:6d8a51ddca2399106ea20da9db17271a91dd97150cada449aba4edce2ae682c2 + depends_on: + - docker + restart: on-failure + environment: + APP_URL: http://${DEVICE_DOMAIN_NAME}:3552 + PUID: 1000 + PGID: 1000 + ENCRYPTION_KEY: ${APP_PASSWORD} + JWT_SECRET: ${APP_PASSWORD} + volumes: + - ${APP_DATA_DIR}/data/app_data:/app/data + - ${APP_DATA_DIR}/data/projects:/app/data/projects + - ${APP_DATA_DIR}/data/docker:/var/run diff --git a/arcane/entrypoint.sh b/arcane/entrypoint.sh new file mode 100755 index 0000000..9e29bdf --- /dev/null +++ b/arcane/entrypoint.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +pidfile="/var/run/docker.pid" +if [[ -f "${pidfile}" ]] +then + rm -f "${pidfile}" +fi + +for command in iptables iptables-restore iptables-restore-translate iptables-save iptables-translate +do + ln -sf /sbin/xtables-nft-multi /sbin/$command +done + +ensure_bridge_exists() { + local name="${1}" + local ip_range="${2}" + if ip link show "${name}" &>/dev/null + then + echo "Bridge '${name}' already exists. Skipping creation." + ip addr show "${name}" + return + fi + echo "Bridge '${name}' does not exist. Creating..." + ip link add "${name}" type bridge + ip addr add "${ip_range}" dev "${name}" + ip link set "${name}" up + echo "Bridge '${name}' is now up with IP range '${ip_range}'." + ip addr show "${name}" +} + +if [[ "${DOCKER_ENSURE_BRIDGE}" != "" ]] +then + bridge="${DOCKER_ENSURE_BRIDGE%%:*}" + ip_range="${DOCKER_ENSURE_BRIDGE#*:}" + ensure_bridge_exists "${bridge}" "${ip_range}" +fi + +exec dockerd-entrypoint.sh $@ diff --git a/arcane/hooks/pre-start b/arcane/hooks/pre-start new file mode 100755 index 0000000..199a463 --- /dev/null +++ b/arcane/hooks/pre-start @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" + +# Удалите устаревший файл docker.pid, который может вызвать проблемы после перебоев в подаче электроэнергии или сбоев. +rm -f "${APP_DATA_DIR}/docker/docker.pid" diff --git a/audiobookshelf/data/config/.gitkeep b/audiobookshelf/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/audiobookshelf/data/metadata/.gitkeep b/audiobookshelf/data/metadata/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/audiobookshelf/dfwebos-app.yml b/audiobookshelf/dfwebos-app.yml new file mode 100644 index 0000000..d44bbea --- /dev/null +++ b/audiobookshelf/dfwebos-app.yml @@ -0,0 +1,76 @@ +manifestVersion: 1 +id: audiobookshelf +name: Audiobookshelf +tagline: Сервер аудиокниг и подкастов +category: media +version: "2.34.0" +port: 13378 +description: >- + Функции: + + + - Полностью открытый исходный код, включая приложения для Android и iOS (в бета-версии) + + - Потоковая передача всех аудиоформатов на лету + + - Ищите и добавляйте подкасты для загрузки эпизодов с автоматической загрузкой. + + - Многопользовательская поддержка с настраиваемыми разрешениями + + - Сохраняет прогресс каждого пользователя и синхронизируется между устройствами. + + - Автоматически обнаруживает обновления библиотеки, нет необходимости повторно сканировать + + - Загружайте книги и подкасты с помощью массовой загрузки папок с помощью перетаскивания. + + - Резервное копирование метаданных + автоматическое ежедневное резервное копирование. + + - Прогрессивное веб-приложение (PWA) + + - Поддержка Chromecast в веб-приложении и приложении для Android. + + - Получить метаданные и обложки из нескольких источников. + + - Редактор глав и поиск глав (с использованием Audnexus API) + + - Объедините ваши аудиофайлы в один m4b + + - Встраивайте метаданные и изображения обложки в ваши аудиофайлы (с помощью Tone) + + - Базовая поддержка электронных книг и электронных книг (экспериментальная) + + + Приложение для Android (бета-версия) + + - Попробуйте в магазине Google Play. + + + Приложение iOS (ранняя бета-версия) + + - Доступно при использовании тестового полета: https://testflight.apple.com/join/wiic7QIW. +developer: advplyr +website: https://audiobookshelf.org +repo: https://github.com/advplyr/audiobookshelf +support: https://discord.gg/pJsjuNCKRq +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Новые возможности: + - Добавлен японский язык и Япония в качестве региона поиска подкастов. + - Добавлена ​​поддержка автозаполнения в полях входа и настройки для совместимости с менеджером паролей. + + + Исправления ошибок: + - Исправлены недавние эпизоды, которые не обновлялись из кеша при изменении прогресса мультимедиа. + - Исправлено протоколирование ошибок, когда в расписании автоматической загрузки подкаста указано недопустимое выражение cron. + + + Полные примечания к выпуску можно найти по адресу https://github.com/advplyr/audiobookshelf/releases. +submitter: Jasper +submission: https://github.com/getumbrel/dfwebos-apps/pull/302 diff --git a/audiobookshelf/docker-compose.yml b/audiobookshelf/docker-compose.yml new file mode 100644 index 0000000..9c2caab --- /dev/null +++ b/audiobookshelf/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: audiobookshelf_web_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/advplyr/audiobookshelf:2.34.0@sha256:4143292c530f6ac6700afd13360c04f477e4f1a81c1c97c4224b1c7e4330c5c4 + user: 1000:1000 + init: true + restart: on-failure + stop_grace_period: 1m + healthcheck: + disable: true + environment: + - CONFIG_PATH=/home/node/config + - METADATA_PATH=/home/node/metadata + - AUDIOBOOKSHELF_UID=1000 + - AUDIOBOOKSHELF_GID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/home/node/config + - ${APP_DATA_DIR}/data/metadata:/home/node/metadata + - ${DFWEBOS_ROOT}/data/storage/downloads/audiobooks:/audiobooks + - ${DFWEBOS_ROOT}/data/storage/downloads/podcasts:/podcasts diff --git a/audiobookshelf/exports.sh b/audiobookshelf/exports.sh new file mode 100644 index 0000000..d85e2b3 --- /dev/null +++ b/audiobookshelf/exports.sh @@ -0,0 +1,16 @@ +DFWEBOS_DATA_DIR="${DFWEBOS_ROOT}/data" +DFWEBOS_DATA_STORAGE_AUDIOBOOKS_DIR="${DFWEBOS_DATA_DIR}/storage/downloads/audiobooks" +DFWEBOS_DATA_STORAGE_PODCASTS_DIR="${DFWEBOS_DATA_DIR}/storage/downloads/podcasts" +DESIRED_OWNER="1000:1000" + +if [[ ! -d "${DFWEBOS_DATA_STORAGE_AUDIOBOOKS_DIR}" ]]; then + mkdir -p "${DFWEBOS_DATA_STORAGE_AUDIOBOOKS_DIR}" + + chown "${DESIRED_OWNER}" "${DFWEBOS_DATA_STORAGE_AUDIOBOOKS_DIR}" +fi + +if [[ ! -d "${DFWEBOS_DATA_STORAGE_PODCASTS_DIR}" ]]; then + mkdir -p "${DFWEBOS_DATA_STORAGE_PODCASTS_DIR}" + + chown "${DESIRED_OWNER}" "${DFWEBOS_DATA_STORAGE_PODCASTS_DIR}" +fi \ No newline at end of file diff --git a/autobrr/data/.gitkeep b/autobrr/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/autobrr/dfwebos-app.yml b/autobrr/dfwebos-app.yml new file mode 100644 index 0000000..e81a1e5 --- /dev/null +++ b/autobrr/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: autobrr +category: media +name: autobrr +version: "1.76.0" +tagline: Современная, простая в использовании автоматизация загрузки через торренты и Usenet. +description: >- + autobrr — современный инструмент автоматизации загрузок через торренты и usenet. + Вдохновляясь идеями таких инструментов, как trackarr, autodl-irssi и flexget, мы создали один инструмент, который может делать все это, а затем и еще несколько. + + + Многие индексаторы анонсируют новые торренты на своих IRC-каналах сразу после их загрузки на сайт. + + + autobrr отслеживает такие каналы в режиме реального времени и захватывает торрент-файл сразу после его загрузки на основе определенных условий, которые вы установили в autobrr. + + + Затем он отправляет этот торрент-файл в клиент загрузки по вашему выбору. Клиентом загрузки может быть что угодно: qBittorrent, Deluge, Radarr, Sonarr, папка просмотра и многое другое. +releaseNotes: >- + Этот выпуск включает в себя новые функции и улучшения: + - Добавлена ​​поддержка PKCE для аутентификации OIDC. + - Добавлена ​​поддержка типа загрузки NZB для RSS-каналов. + - Добавлена ​​поддержка индексатора InfinityHD. + - Добавлена ​​поддержка индексатора Retro Movies Club. + - Добавлена ​​поддержка индексатора Samaritano. + - Добавлена ​​поддержка индексатора SeedPool (Music). + - Добавлена ​​поддержка `/sleep` в командах подключения IRC. + - Добавлена ​​поддержка французского, немецкого, русского и испанского языков. + - Добавлена ​​поддержка интернационализации (i18n) для языков английского языка и упрощенного китайского языка. + + + Исправления ошибок: + - Исправлено неправильное удаление выпусков, если PUSH_APPROVED отсутствует в списке очистки. + - Исправлено переполнение кнопки прокси-сервера индексатора в веб-версии интерфейс. + + + Полные примечания к выпуску доступны по адресу https://autobrr.com/release-notes. +developer: autobrr +website: https://autobrr.com/ +dependencies: [] +repo: https://github.com/autobrr/autobrr +support: https://autobrr.com/introduction +port: 7474 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: fabricionaweb +submission: https://github.com/getumbrel/dfwebos-apps/pull/731 diff --git a/autobrr/docker-compose.yml b/autobrr/docker-compose.yml new file mode 100644 index 0000000..c256816 --- /dev/null +++ b/autobrr/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: autobrr_web_1 + APP_PORT: 7474 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/autobrr/autobrr:v1.76.0@sha256:f0f4d73fcd77700b1c98233562cd94a78b9bf685a7594a0aac4f8a9436b5044d + restart: on-failure + stop_grace_period: 1m + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data:/config diff --git a/back-that-mac-up/data/opt-timemachine/.gitkeep b/back-that-mac-up/data/opt-timemachine/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/back-that-mac-up/data/run-samba/.gitkeep b/back-that-mac-up/data/run-samba/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/back-that-mac-up/data/var-cache-samba/.gitkeep b/back-that-mac-up/data/var-cache-samba/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/back-that-mac-up/data/var-lib-samba/.gitkeep b/back-that-mac-up/data/var-lib-samba/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/back-that-mac-up/dfwebos-app.yml b/back-that-mac-up/dfwebos-app.yml new file mode 100644 index 0000000..7228f6e --- /dev/null +++ b/back-that-mac-up/dfwebos-app.yml @@ -0,0 +1,58 @@ +manifestVersion: 1.2 +id: back-that-mac-up +category: files +name: Back That Mac Up +version: "1.1.0" +tagline: Сделайте резервную копию вашего Mac на DFWebOS с помощью Time Machine +description: > + ⚠️ Уведомление об удалении: это приложение было удалено из магазина приложений DFWebOS. Было бы действительно разумно интегрировать это непосредственно в DFWebOSOS... хммммммм. + + + Представляем Back That Mac Up — официальное приложение от DFWebOS. + + + С легкостью создайте резервную копию вашего Mac на DFWebOS с помощью Time Machine. Просто следуйте инструкциям в приложении, чтобы настроить DFWebOS в качестве места резервного копирования Time Machine, и все готово! + + + Обязательно следуйте инструкциям в приложении, чтобы правильно распределить размер резервной копии. Time Machine выполняет резервное копирование вашего Mac, сохраняя ежечасные резервные копии за последние 24 часа, ежедневные резервные копии за последний месяц и еженедельные резервные копии за все предыдущие месяцы. + Со временем он, вероятно, будет использовать все выделенное пространство на вашем DFWebOS, автоматически удаляя самые старые резервные копии, чтобы освободить место по мере необходимости. + + + Для бесперебойного резервного копирования, даже если ваш Mac не подключен к той же сети, что и ваш DFWebOS, просто установите Tailscale на свой DFWebOS и свой Mac и используйте smb://DFWebOS в качестве адреса сервера. +releaseNotes: >- + 🎉 Виджеты доступны для DFWebOSOS 1.0. + + + В этом обновлении появился новый виджет для Back That Mac Up, позволяющий сразу увидеть использование Time Machine прямо с главного экрана вашего DFWebOS. + + + После обновления до DFWebOSOS 1.0 вы можете добавлять виджеты, щелкнув правой кнопкой мыши на главном экране и выбрав «Редактировать виджеты» или нажав «Виджеты» в Dock. +developer: DFWebOS +website: https://DFWebOS.com +dependencies: [] +repo: https://github.com/getDFWebOS/DFWebOS-back-that-mac-up +support: https://community.getDFWebOS.com +port: 3012 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +widgets: + - id: "disk-usage" + type: "text-with-progress" + refresh: "1m" + endpoint: "server:80/api/widgets/disk-usage" + link: "" + example: + type: "text-with-progress" + link: "" + title: "Time Machine Usage" + text: "420 GB" + progressLabel: "580 GB left" + progress: 0.42 +submitter: DFWebOS +submission: https://github.com/getDFWebOS/dfwebos-apps/pull/929 +disabled: true diff --git a/back-that-mac-up/docker-compose.yml b/back-that-mac-up/docker-compose.yml new file mode 100644 index 0000000..974ef75 --- /dev/null +++ b/back-that-mac-up/docker-compose.yml @@ -0,0 +1,53 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: back-that-mac-up_server_1 + APP_PORT: 80 + + server: + image: getwebos/dfwebos-back-that-mac-up:1.0.1@sha256:d9561eebd791fcaaddb9885b9ace25dec42374c4ab0fe17035493a264081688c + restart: on-failure + environment: + TIME_MACHINE_DIR: "/timemachine" + volumes: + # это весь каталог данных back-that-mac-up (вместо этого можно рассмотреть возможность установки только подкаталога opt-timemachine) + - ${APP_DATA_DIR}/data:/timemachine + + timemachine: + image: mbentley/timemachine:smb-20231122@sha256:861560184a5c9f3b4f2a8bef4549ef4168d80c57a9de81b16bc5e6eead24ff3f + hostname: dfwebos + environment: + ADVERTISED_HOSTNAME: "dfwebos" + CUSTOM_SMB_CONF: "false" + CUSTOM_USER: "false" + DEBUG_LEVEL: "1" + HIDE_SHARES: "no" + EXTERNAL_CONF: "" + MIMIC_MODEL: "TimeCapsule8,119" + TM_USERNAME: "timemachine" + TM_GROUPNAME: "timemachine" + TM_UID: "1000" + TM_GID: "1000" + PASSWORD: "timemachine" + SET_PERMISSIONS: "false" + SHARE_NAME: "DFWebOS - Time Machine" + SMB_INHERIT_PERMISSIONS: "no" + SMB_NFS_ACES: "no" + SMB_METADATA: "stream" + SMB_PORT: "445" + SMB_VFS_OBJECTS: "acl_xattr fruit streams_xattr" + VOLUME_SIZE_LIMIT: "0" + WORKGROUP: "WORKGROUP" + restart: unless-stopped + ports: + - "137:137/udp" + - "138:138/udp" + - "139:139" + - "445:445" + volumes: + - ${APP_DATA_DIR}/data/opt-timemachine:/opt/timemachine + - ${APP_DATA_DIR}/data/var-lib-samba:/var/lib/samba + - ${APP_DATA_DIR}/data/var-cache-samba:/var/cache/samba + - ${APP_DATA_DIR}/data/run-samba:/run/samba \ No newline at end of file diff --git a/baikal/data/Specific/.gitkeep b/baikal/data/Specific/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/baikal/data/Specific/.gitkeep @@ -0,0 +1 @@ + diff --git a/baikal/data/config/.gitkeep b/baikal/data/config/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/baikal/data/config/.gitkeep @@ -0,0 +1 @@ + diff --git a/baikal/dfwebos-app.yml b/baikal/dfwebos-app.yml new file mode 100644 index 0000000..a00ea16 --- /dev/null +++ b/baikal/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: baikal +name: Baikal +tagline: Легкий сервер календаря и контактов +category: networking +version: "0.10.1" +port: 8890 +description: >- + 🪆 Baikal Server — это легкий сервер CalDAV и CardDAV, предназначенный для пользователей, которые хотят безопасно управлять своим календарем и контактной информацией на собственном сервере. Это надежное приложение предлагает обширный веб-интерфейс, который упрощает управление пользователями, адресными книгами и календарями, что делает его доступным как для начинающих, так и для опытных пользователей. + + + Одной из ключевых особенностей Байкала является простота установки и настройки. Для этого требуется только базовый сервер с поддержкой PHP, а это значит, что вам не нужны обширные технические знания для начала работы. Сервер поддерживает базы данных MySQL и SQLite для хранения данных, обеспечивая гибкость в зависимости от ваших предпочтений и потребностей. + + + Baikal позволяет пользователям легко получать доступ к своим контактам и календарям с любого устройства. Он совместим с широким спектром приложений, включая iOS, macOS, DAVx5 на Android, Mozilla Thunderbird и многими другими приложениями с поддержкой CalDAV и CardDAV. Эта совместимость гарантирует, что вы сможете без проблем синхронизировать свои данные на нескольких платформах. + + + Помимо удобных для пользователя функций, Baikal уделяет особое внимание конфиденциальности и безопасности данных. Размещая свои календари и контакты самостоятельно, вы сохраняете полный контроль над своей личной информацией, защищая ее от потенциальных нарушений и несанкционированного доступа. Это особенно важно в эпоху, когда конфиденциальность данных вызывает растущую озабоченность. + + + Независимо от того, являетесь ли вы человеком, ищущим надежного личного органайзера, или небольшой командой, нуждающейся в решении для совместной работы, Baikal Server предоставляет практичный и эффективный способ управления вашим расписанием и потребностями в контактах, обеспечивая при этом конфиденциальность и безопасность ваших данных. Благодаря высокой производительности и простому интерфейсу Baikal является отличным выбором для тех, кто ищет автономное решение для управления календарем и контактами. + +developer: fruux GmbH +website: https://sabre.io/baikal/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/1606 +repo: https://github.com/sabre-io/Baikal +support: https://github.com/sabre-io/Baikal/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск включает в себя следующие улучшения: + - Исправлены проблемы с аутентификацией при использовании обратных прокси. + - Добавлена ​​поддержка базы данных PostgreSQL. + - Новые параметры конфигурации переменных среды. + - Исправлен экран настройки базы данных в мастере установки. + - Обновлено до sabre/dav 4.7.0. + + + Полные примечания к выпуску можно найти по адресу https://github.com/sabre-io/Baikal/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/baikal/docker-compose.yml b/baikal/docker-compose.yml new file mode 100644 index 0000000..3c0e53c --- /dev/null +++ b/baikal/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: baikal_web_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + web: + image: ckulka/baikal:0.10.1@sha256:2385faeb7cc165d2b080c0ed8c84cc59e84d03107f814ad897ab62684c792f7b + # Этот контейнер запускается от имени пользователя 33:33 и не может быть изменен при создании (https://github.com/ckulka/baikal-docker/blob/master/examples/docker-compose.localvolumes.yaml) + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/config:/var/www/baikal/config + - ${APP_DATA_DIR}/data/Specific:/var/www/baikal/Specific diff --git a/bassin/data/config/ckpool.conf.template b/bassin/data/config/ckpool.conf.template new file mode 100644 index 0000000..4d48dad --- /dev/null +++ b/bassin/data/config/ckpool.conf.template @@ -0,0 +1,16 @@ +{ +"btcd" : [ + { + "url": "${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}", + "auth": "${APP_BITCOIN_RPC_USER}", + "pass": "${APP_BITCOIN_RPC_PASS}", + "notify" : true + } +], +"btcsig" : "/mined by Bassin on DFWebOS/", +"mindiff": 1, +"startdiff": 42, +"maxdiff" : 0, +"logdir" : "/www", +"zmqblock" : "tcp://${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_ZMQ_HASHBLOCK_PORT}" +} diff --git a/bassin/data/www/.gitkeep b/bassin/data/www/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bassin/dfwebos-app.yml b/bassin/dfwebos-app.yml new file mode 100644 index 0000000..1e4b877 --- /dev/null +++ b/bassin/dfwebos-app.yml @@ -0,0 +1,62 @@ +manifestVersion: 1.1 +version: "2.1.0-hotfix" +id: bassin +name: Bassin +tagline: Соло-пул для майнинга Bitcoin (ckPool) +description: >- + Пул для индивидуального майнинга Bitcoin с нулевой комиссией для DFWebOS. Запустите свой собственный ckPool дома. + + + Никаких настроек, никаких проблем. + - Убедитесь, что ваш узел Bitcoin полностью синхронизирован и работает. + - Установите приложение и следуйте инструкциям на экране. + - Станьте частью децентрализованного майнинга + + + Посетите страницу часто задаваемых вопросов: https://github.com/duckaxe/bassin/wiki/FAQ. + + + Только для академических и исследовательских целей. +category: bitcoin +dependencies: + - bitcoin +releaseNotes: >- + 🚨 КРИТИЧЕСКОЕ ОБНОВЛЕНИЕ БЕЗОПАСНОСТИ. Пожалуйста, обновите немедленно. + + + Была обнаружена проблема безопасности в предыдущем программном обеспечении ckpool, используемом этим приложением. Он был заменен новой версией, созданной из проверенного источника: https://github.com/getumbrel/docker-ckpool-solo. +port: 5008 +submitter: duckaxe +developer: duckaxe +website: https://github.com/duckaxe +repo: https://github.com/duckaxe/bassin +support: https://github.com/duckaxe/bassin/issues +submission: https://github.com/getumbrel/dfwebos-apps/pull/3375 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +widgets: + - id: "stats" + type: "four-stats" + refresh: "30s" + endpoint: "widget-server:3000/widgets/pool" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "Hashrate" + text: "2.10" + subtext: "Th/s" + - title: "Workers" + text: "2" + - title: "Best Share" + text: "21" + subtext: "G" + - title: "Total Shares" + text: "210" + subtext: "M" diff --git a/bassin/docker-compose.yml b/bassin/docker-compose.yml new file mode 100644 index 0000000..79a71ac --- /dev/null +++ b/bassin/docker-compose.yml @@ -0,0 +1,69 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bassin_www_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + init: + image: alpine:3.22.1@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1 + entrypoint: >- + /bin/sh -c ' + apk add --no-cache envsubst && + if [ ! -f /config/ckpool.conf ]; then + envsubst < /config/ckpool.conf.template > /config/ckpool.conf && + chown 1000:1000 /config/ckpool.conf + fi + ' + volumes: + - ${APP_DATA_DIR}/data/config:/config + environment: + - APP_BITCOIN_NODE_IP=${APP_BITCOIN_NODE_IP} + - APP_BITCOIN_RPC_PORT=${APP_BITCOIN_RPC_PORT} + - APP_BITCOIN_RPC_USER=${APP_BITCOIN_RPC_USER} + - APP_BITCOIN_RPC_PASS=${APP_BITCOIN_RPC_PASS} + - APP_BITCOIN_ZMQ_HASHBLOCK_PORT=${APP_BITCOIN_ZMQ_HASHBLOCK_PORT} + + ckpool: + image: ghcr.io/getumbrel/docker-ckpool-solo:590fb2a@sha256:4e6b8f4f9c7d74c2111a6e082a2bbdc936fa510989a81e7cef714d1da944336b + command: '-k -B -c /config/ckpool.conf' + user: "1000:1000" + depends_on: + init: + condition: service_completed_successfully + restart: on-failure + stop_grace_period: 30s + ports: + - "3456:3333/tcp" + volumes: + - ${APP_DATA_DIR}/data/config:/config:ro + - ${APP_DATA_DIR}/data/www:/www + + ui: + image: ghcr.io/duckaxe/bassin-ui:580689d@sha256:ece16d859295c01f3c7bdaf78679f5b3477073af93937c367ae6174191c0de19 + entrypoint: /bin/sh -c "cp -r /ui/* /www/" + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/www:/www + restart: on-failure + + www: + image: halverneus/static-file-server:v1.8.11@sha256:2e91ce7ffb8519eeb882ba52d75c191ca6c921c16438447362128ef73ee2ea7e + user: "1000:1000" + environment: + - FOLDER=/www + - PORT=80 + volumes: + - ${APP_DATA_DIR}/data/www:/www:ro + depends_on: + - ui + restart: on-failure + + widget-server: + image: ghcr.io/duckaxe/umbrel-bassin-widget:main@sha256:293d4a17579bbef339c3f4595ed2dc36bef70699d34909bfa3ac20bba8facb7c + user: "1000:1000" + environment: + - BASSIN_API_POOL_URL=http://bassin_www_1/pool/pool.status + restart: on-failure diff --git a/bassin/hooks/pre-start b/bassin/hooks/pre-start new file mode 100755 index 0000000..c7cf915 --- /dev/null +++ b/bassin/hooks/pre-start @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +# Этот скрипт обновляет btcsig в ​​ckpool.conf для существующих пользователей. +# кто устанавливал, когда по умолчанию было "/mined by Bassin/" +# Запускается только один раз, чтобы избежать отмены преднамеренных изменений пользователя. + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +CKPOOL_CONFIG_FILE="${APP_DATA_DIR}/data/config/ckpool.conf" +BTCSIG_MIGRATION_FLAG="${APP_DATA_DIR}/BTCSIG_MIGRATED" + +# Пропустить, если миграция уже запущена +if [[ -f "${BTCSIG_MIGRATION_FLAG}" ]]; then + exit +fi + +# Проверьте, существует ли файл конфигурации +if [[ ! -f "${CKPOOL_CONFIG_FILE}" ]]; then + touch "${BTCSIG_MIGRATION_FLAG}" + exit +fi + +OLD_BTCSIG='"btcsig" : "/mined by Bassin/",' +NEW_BTCSIG='"btcsig" : "/mined by Bassin on DFWebOS/",' + +# Проверьте, существует ли точная старая строка btcsig. +if grep -qF "${OLD_BTCSIG}" "${CKPOOL_CONFIG_FILE}"; then + echo "App: ${APP_ID} - Updating btcsig in ckpool.conf" + sed -i "s|${OLD_BTCSIG}|${NEW_BTCSIG}|" "${CKPOOL_CONFIG_FILE}" +fi + +# Отметить миграцию как завершенную +touch "${BTCSIG_MIGRATION_FLAG}" diff --git a/bazarr/data/config/.gitkeep b/bazarr/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bazarr/dfwebos-app.yml b/bazarr/dfwebos-app.yml new file mode 100644 index 0000000..fe5b3b4 --- /dev/null +++ b/bazarr/dfwebos-app.yml @@ -0,0 +1,54 @@ +manifestVersion: 1 +id: bazarr +category: media +name: Bazarr +version: "1.5.6" +tagline: Управляйте и загружайте субтитры для Sonarr и Radarr +description: >- + Bazarr — это приложение-компаньон для Sonarr и Radarr, которое управляет субтитрами и загружает их в соответствии с вашими требованиями. + Вы определяете свои предпочтения по телешоу или фильму, а Bazarr позаботится обо всем за вас. + + + Bazarr не сканирует ваш диск на предмет сериалов и фильмов. Он заботится только о сериалах и фильмах, которые проиндексированы в Sonarr и Radarr. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Во время первоначальной настройки вам нужно будет ввести IP-адрес вашего устройства DFWebOS для подключения к Sonarr и/или Radarr. + Вы можете узнать IP-адрес вашего устройства, посетив панель администратора вашего маршрутизатора или используя инструмент сканирования IP, например Angry IP Scanner. + Вам также потребуется ввести ключ API для Sonarr и/или Radarr. Ключи API вы можете найти в настройках приложений Sonarr и Radarr. +releaseNotes: >- + Ключевые улучшения в этом выпуске включают в себя: + - Добавлено обнаружение испанского языка в Испании и Латинской Америке для провайдера SubX. + - Добавлен прокси-сервер субтитров SubX для испанского провайдера Subdivx Latam. + - Удален поставщик subdivx, поскольку он больше не поддерживается. + - Добавлена ​​настройка имени хоста в разделе «Общие» для безопасности веб-перехватчика, чтобы предотвратить отравление имени хоста. + - Добавлено обнаружение задержки звука в заголовках MKV для WhisperAI с использованием FFprobe. + - Добавлено обновление библиотеки Plex после удаления или изменения субтитров. + - Улучшен провайдер субдл с поиском по идентификатору TMDB и улучшенной обработкой ошибок. + - Улучшено сопоставление выпусков поставщика Gestdown. + - Исправлен поставщик Assrt, пропускающий субтитры сезонных пакетов при поиске эпизодов. + - Исправлена ​​отсутствующая миграция audio_exclude при обновлении языкового профиля. + - Исправлен сбой постобработки в неанглоязычных системах Windows. + - Исправлен поиск subssabbz, диакритические знаки, сравнение языков и обработка ошибок загрузки. + - Улучшена обработка очереди заданий, чтобы предотвратить высокую загрузку ЦП из-за ожидания занятости. + - Улучшена производительность за счет замены блокировки мониторинга хода выполнения заданий асинхронной реализацией. + + + Полные примечания к выпуску можно найти по адресу https://github.com/morpheus65535/bazarr/releases. +developer: morpheus65535 +website: https://www.bazarr.media/ +dependencies: [] +repo: https://github.com/morpheus65535/bazarr +support: https://github.com/morpheus65535/bazarr/issues +port: 6767 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/610 diff --git a/bazarr/docker-compose.yml b/bazarr/docker-compose.yml new file mode 100644 index 0000000..12e86e8 --- /dev/null +++ b/bazarr/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bazarr_server_1 + APP_PORT: 6767 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: linuxserver/bazarr:1.5.6@sha256:b0bc617664dbca25845ac3b1bb6411b145b6a44a6d173071c9d2f426524fdd9f + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + restart: on-failure diff --git a/bentopdf/dfwebos-app.yml b/bentopdf/dfwebos-app.yml new file mode 100644 index 0000000..0e05ea1 --- /dev/null +++ b/bentopdf/dfwebos-app.yml @@ -0,0 +1,45 @@ +manifestVersion: 1 +id: bentopdf +name: BentoPDF +tagline: Набор инструментов Privacy First PDF +category: files +version: "2.8.4" +port: 8730 +description: >- + 📄 BentoPDF — это усовершенствованное приложение, ориентированное на конфиденциальность, позволяющее пользователям полностью контролировать свои документы PDF непосредственно в браузере. Это устраняет необходимость во внешних загрузках или онлайн-сервисах конвертации, гарантируя, что каждое действие происходит локально и конфиденциально. Такое внимание к конфиденциальности делает BentoPDF безопасной альтернативой традиционным облачным инструментам PDF. + + + По своей сути BentoPDF предоставляет обширный набор функций для работы с цифровыми документами. Пользователи могут объединить несколько PDF-файлов в один файл, разделить их на отдельные разделы или реорганизовать отдельные страницы всего за несколько кликов. Приложение позволяет легко вращать, дублировать или удалять страницы, обеспечивая полную гибкость при редактировании сложных документов. Визуальные настройки, такие как изменение цвета фона, водяные знаки, верхние и нижние колонтитулы, также можно применять для улучшения внешнего вида профессиональных документов. + + + BentoPDF включает в себя надежный механизм преобразования, который поддерживает преобразование изображений в PDF-файлы и экспорт отдельных страниц обратно в распространенные форматы изображений. Это также позволяет сжимать файлы для оптимизации пространства для хранения без ущерба для качества. В целях безопасности документов пользователи могут применять пароли, шифровать конфиденциальную информацию или снимать существующие ограничения, чтобы восстановить доступ к редактированию. Эти инструменты делают его пригодным как для личного использования, так и для профессиональной подготовки документов. + + + Еще одним преимуществом является встроенная функция OCR, которая сканирует и распознает текст из PDF-файлов на основе изображений, превращая их в документы с возможностью полного поиска. Параметры редактирования метаданных позволяют пользователям уточнять свойства документа и улучшать организацию. Сочетая все эти возможности, BentoPDF предлагает комплексную, удобную среду для эффективного создания, редактирования и управления PDF-файлами — и все это при сохранении высочайшего уровня конфиденциальности и контроля. +developer: BentoPDF +website: https://bentopdf.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3843 +repo: https://github.com/alam00000/bentopdf +support: https://github.com/alam00000/bentopdf/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + 🚨 В версии 2.8.3 устранена уязвимость безопасности (GHSA-6vh8-4frx-647f), затрагивающая все версии до версии 2.8.2 включительно. Это обновление настоятельно рекомендуется для всех пользователей. + + + Это обновление исправляет ошибки CSP, появившиеся в версии 2.8.3, и включает улучшения последних выпусков: + - Исправлены ошибки политики безопасности контента, появившиеся в версии 2.8.3. + - Добавлены украинский, японский и белорусский переводы. + - Обновлены переводы на голландский язык. + - Усиление безопасности и обновления зависимостей. + + + Полные примечания к выпуску можно найти по адресу https://github.com/alam00000/bentopdf/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/bentopdf/docker-compose.yml b/bentopdf/docker-compose.yml new file mode 100644 index 0000000..71f1f01 --- /dev/null +++ b/bentopdf/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bentopdf_web_1 + APP_PORT: 8080 + + web: + image: ghcr.io/alam00000/bentopdf:v2.8.4@sha256:f54b9ed9c56b767e0098b525468206689b666323c2b500b9686c3cf41cdfa348 + restart: on-failure diff --git a/bffless/data/config/domain.txt.example b/bffless/data/config/domain.txt.example new file mode 100644 index 0000000..a93391b --- /dev/null +++ b/bffless/data/config/domain.txt.example @@ -0,0 +1,13 @@ +# Конфигурация домена без Bffless +# +# Чтобы настроить свой домен, скопируйте этот файл в domain.txt и замените +# пример ниже с вашим фактическим доменом. +# +# Шаги: +# 1. Настройте туннель Cloudflare, указывающий на http://localhost:5537. +# 2. Скопируйте этот файл: cp domain.txt.example domain.txt +# 3. Отредактируйте domain.txt, указав свой домен (только домен, без https://)). +# 4. Перезапустите приложение Bffless из DFWebOS. +# +# Пример: +bffless.yourdomain.com diff --git a/bffless/data/db/init-databases.sql b/bffless/data/db/init-databases.sql new file mode 100644 index 0000000..4a1df05 --- /dev/null +++ b/bffless/data/db/init-databases.sql @@ -0,0 +1,9 @@ +-- Create separate database for SuperTokens +-- This runs on first postgres container startup +-- (assethost database is created by POSTGRES_DB env var) + +-- Create supertokens database +CREATE DATABASE supertokens; + +-- Grant permissions to default postgres user +GRANT ALL PRIVILEGES ON DATABASE supertokens TO postgres; diff --git a/bffless/data/frontend/.gitkeep b/bffless/data/frontend/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bffless/data/frontend/.gitkeep @@ -0,0 +1 @@ + diff --git a/bffless/data/nginx/.gitkeep b/bffless/data/nginx/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bffless/data/nginx/.gitkeep @@ -0,0 +1 @@ + diff --git a/bffless/data/postgres/.gitkeep b/bffless/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bffless/data/uploads/.gitkeep b/bffless/data/uploads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bffless/dfwebos-app.yml b/bffless/dfwebos-app.yml new file mode 100644 index 0000000..889ece6 --- /dev/null +++ b/bffless/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1.1 +id: bffless +category: developer +name: BFFless +version: '0.1.1' +tagline: Платформа для хостинга статических сайтов с собственным хостингом +description: >- + BFFless — это автономная платформа для размещения статических веб-сайтов и создания артефактов из конвейеров CI/CD. + + + Ключевые особенности: + - Загружайте статические сайты с помощью действий CLI, API или GitHub. + - Мгновенное развертывание с уникальными URL-адресами для каждого коммита. + - Псевдонимы развертывания для промежуточных, производственных и пользовательских сред. + - Поддержка индивидуального домена с маршрутизацией поддоменов. + - Встроенная панель администратора для управления развертываниями. + - Конфиденциальность: все данные остаются на вашем DFWebOS. + + + Идеально подходит для разработчиков, которым нужен полный контроль над хостингом своих статических сайтов, не полагаясь на внешние сервисы. + + + Примечание. Этому приложению требуется туннель Cloudflare для доступа к внешнему домену. Внутренний доступ показывает инструкции по настройке. +developer: BFFless +website: https://docs.bffless.app/deployment/umbrel/ +dependencies: + - cloudflared +repo: https://github.com/bffless/ce +support: https://github.com/bffless/ce/issues +port: 5537 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: '' +path: '' +defaultUsername: '' +deterministicPassword: false +submitter: Bffless +submission: https://github.com/getumbrel/dfwebos-apps/pull/4784 diff --git a/bffless/docker-compose.yml b/bffless/docker-compose.yml new file mode 100644 index 0000000..1880671 --- /dev/null +++ b/bffless/docker-compose.yml @@ -0,0 +1,145 @@ +services: + # Прокси-сервер приложения DFWebOS — направляет внешний трафик на наш nginx. + app_proxy: + environment: + APP_HOST: bffless_nginx_1 + APP_PORT: 5537 + PROXY_AUTH_ADD: 'false' + + # Обратный прокси-сервер Nginx — обслуживает интерфейс, маршрутизирует вызовы API. + # Использует собственное изображение зонтика со встроенным шаблоном конфигурации и страницей настройки. + nginx: + image: ghcr.io/bffless/ce-nginx:dfwebos@sha256:40b8f8dd37dd1483a08e687b1f0efe6061c62fcd73013fb46749c74407dbdf84 + restart: on-failure + stop_grace_period: 30s + environment: + DEVICE_DOMAIN_NAME: ${DEVICE_DOMAIN_NAME:-dfwebos.local} + volumes: + # Конфигурация пользователя (domain.txt) — доступна для записи пользователем + - ${APP_DATA_DIR}/data/config:/app/config:ro + # Статические файлы внешнего интерфейса из контейнера внешнего интерфейса + - ${APP_DATA_DIR}/data/frontend:/usr/share/nginx/html/app:ro + # Конфигурации динамического домена, написанные серверной частью + - ${APP_DATA_DIR}/data/nginx:/etc/nginx/sites-enabled + depends_on: + - backend + - frontend + + # База данных PostgreSQL + postgres: + image: pgvector/pgvector:0.8.2-pg17@sha256:494dff7e67e7bc2c826b94c331364978d145ebb86fd338154138b084223b7f67 + restart: on-failure + stop_grace_period: 30s + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: staticfilesgobrrrr + POSTGRES_DB: assethost + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + - ${APP_DATA_DIR}/data/db/init-databases.sql:/docker-entrypoint-initdb.d/init.sql:ro + command: > + postgres + -c shared_buffers=64MB + -c effective_cache_size=128MB + -c work_mem=4MB + -c maintenance_work_mem=32MB + -c max_connections=20 + -c wal_buffers=4MB + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U postgres'] + interval: 10s + timeout: 5s + retries: 5 + + # Служба аутентификации SuperTokens + supertokens: + image: supertokens/supertokens-postgresql:9.3@sha256:39c36693b19c4e231684c9e614422c1c95751c346c6fc3ffd74980161d0b041c + restart: on-failure + stop_grace_period: 30s + depends_on: + postgres: + condition: service_healthy + environment: + # Используйте отдельные параметры вместо соединения URI (более надежно) + POSTGRESQL_HOST: bffless_postgres_1 + POSTGRESQL_PORT: '5432' + POSTGRESQL_USER: postgres + POSTGRESQL_PASSWORD: staticfilesgobrrrr + POSTGRESQL_DATABASE_NAME: supertokens + # Увеличена память для запуска JVM на ARM64. + JAVA_OPTS: '-Xmx192m -Xms96m -XX:+UseSerialGC -XX:MaxMetaspaceSize=64m' + POSTGRESQL_CONNECTION_POOL_SIZE: '3' + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:3567/hello'] + interval: 15s + timeout: 10s + retries: 8 + start_period: 45s + + # NestJS серверная часть API + # Использует собственное изображение зонтика со встроенной точкой входа, которая извлекает ключи из APP_SEED. + backend: + image: ghcr.io/bffless/ce-backend:dfwebos@sha256:7c4d4c15a186d5bb3b9e916aaadbe9602a0701db1ff2e3c47b9e7f3814967e61 + restart: on-failure + stop_grace_period: 30s + depends_on: + postgres: + condition: service_healthy + supertokens: + condition: service_healthy + environment: + NODE_OPTIONS: '--max-old-space-size=128' + NODE_ENV: production + PORT: '3000' + LOG_LEVEL: 'error,warn,log' + # DFWebOS предоставляет APP_SEED — точка входа наследует ENCRYPTION_KEY, JWT_SECRET, API_KEY_SALT + APP_SEED: ${APP_SEED:-} + APP_DATA_DIR: ${APP_DATA_DIR:-/data} + # База данных + DATABASE_URL: postgresql://postgres:staticfilesgobrrrr@bffless_postgres_1:5432/assethost + # Хранилище — локальная файловая система (без MinIO) + STORAGE_TYPE: local + ENABLE_MINIO: 'false' + # Кэш — в памяти (без Redis) + CACHE_TYPE: memory + ENABLE_REDIS: 'false' + # Супертокены + SUPERTOKENS_MODE: local + SUPERTOKENS_CONNECTION_URI: http://bffless_supertokens_1:3567 + SUPERTOKENS_API_KEY: '' + # По умолчанию URLs — переопределяется точкой входа, если domain.txt существует. + PRIMARY_DOMAIN: localhost + FRONTEND_URL: http://localhost:5537 + API_DOMAIN: http://localhost:5537 + ADMIN_DOMAIN: localhost + # Настройки файлов cookie – переопределяются точкой входа для реальных доменов. + COOKIE_SECURE: 'false' + COOKIE_DOMAIN: 'dfwebos.local' + # Конфигурация Nginx + NGINX_SITES_PATH: /etc/nginx/sites-enabled + NGINX_RELOAD_WAIT_MS: '3000' + NGINX_LISTEN_PORT: '5537' + BACKEND_HOST: backend + # SSL обрабатывается Cloudflare Tunnel — nginx генерирует конфигурации, отличные от SSL. + PROXY_MODE: 'cloudflare-tunnel' + # Флаги функций (интерфейс-related) + FEATURE_WILDCARD_SSL: 'false' + FEATURE_WILDCARD_SSL_BANNER: 'false' + FEATURE_DOMAIN_SSL_TOGGLE: 'false' + volumes: + # Пользовательские загрузки + - ${APP_DATA_DIR}/data/uploads:/app/apps/backend/uploads + # Конфигурация пользователя (domain.txt) + - ${APP_DATA_DIR}/data/config:/app/config:ro + # Динамические конфигурации nginx, написанные бэкэндом + - ${APP_DATA_DIR}/data/nginx:/etc/nginx/sites-enabled + + # Интерфейс React (обслуживает статические файлы) + frontend: + image: ghcr.io/bffless/ce-frontend:dfwebos@sha256:9b02e77aec76a5abeaa45f07f64ec6add565b124bbb37a639fb4d633a774f1d9 + restart: on-failure + stop_grace_period: 30s + volumes: + - ${APP_DATA_DIR}/data/frontend:/app/dist + depends_on: + - backend diff --git a/bitaxe-sentry/data/sentry/.gitkeep b/bitaxe-sentry/data/sentry/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitaxe-sentry/dfwebos-app.yml b/bitaxe-sentry/dfwebos-app.yml new file mode 100644 index 0000000..8b573fb --- /dev/null +++ b/bitaxe-sentry/dfwebos-app.yml @@ -0,0 +1,33 @@ +manifestVersion: 1 +id: bitaxe-sentry +category: bitcoin +name: Bitaxe Sentry +version: "0.6.1" +tagline: "Статистика и оповещения Bitaxe — все в одном" +description: >- + Bitaxe Sentry — это решение для мониторинга и управления ASIC-майнерам Bitaxe. + Отслеживайте производительность, температуру и состояние ваших майнеров с помощью единой панели управления. Получайте оповещения, когда ваши майнеры достигают новой лучшей сложности или когда превышаются пороговые значения температуры или напряжения. + + + Включенные функции: + - 📊 Централизованная панель управления для всех майнеров Bitaxe + - 🌡️ Мониторинг температуры и хэшрейта + - 🚨 Уведомления Discord о критических событиях +releaseNotes: >- + Этот выпуск включает в себя незначительное исправление ошибок: + - Изменено мх/с на гх/с, чтобы отразить правильную единицу хэшрейта. +developer: Zach Price +website: https://github.com/zachchan105/bitaxe-sentry +repo: https://github.com/zachchan105/bitaxe-sentry +support: https://github.com/zachchan105/bitaxe-sentry/issues +port: 7070 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Zach Price +submission: https://github.com/getumbrel/dfwebos-apps/pull/3122 +dependencies: [] diff --git a/bitaxe-sentry/docker-compose.yml b/bitaxe-sentry/docker-compose.yml new file mode 100644 index 0000000..887b9e5 --- /dev/null +++ b/bitaxe-sentry/docker-compose.yml @@ -0,0 +1,30 @@ +services: + app_proxy: + environment: + APP_HOST: bitaxe-sentry_web_1 + APP_PORT: 7070 + + sentry: + image: zachprice105/bitaxe-sentry:v0.6.1@sha256:2326e3ea1f7e054da41768a4648277cd523d19a235490a2c0ae364315abbc8ee + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/sentry:/var/lib/bitaxe + environment: + DB_PATH: "/var/lib/bitaxe/bitaxe_sentry.db" + DB_DATA_DIR: "/var/lib/bitaxe" + + web: + image: zachprice105/bitaxe-sentry:v0.6.1@sha256:2326e3ea1f7e054da41768a4648277cd523d19a235490a2c0ae364315abbc8ee + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/sentry:/var/lib/bitaxe + environment: + DB_PATH: "/var/lib/bitaxe/bitaxe_sentry.db" + DB_DATA_DIR: "/var/lib/bitaxe" + command: uvicorn bitaxe_sentry.sentry.webapp:app --host 0.0.0.0 --port 7070 + depends_on: + - sentry diff --git a/bitbalance/data/.gitkeep b/bitbalance/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bitbalance/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/bitbalance/dfwebos-app.yml b/bitbalance/dfwebos-app.yml new file mode 100644 index 0000000..f30d5e7 --- /dev/null +++ b/bitbalance/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1.1 +id: bitbalance +name: bitBalance +tagline: Отслеживайте свои кошельки Bitcoin конфиденциально +category: bitcoin +version: "1.0.18" +port: 3710 +description: >- + Отслеживайте свои кошельки Bitcoin конфиденциально с помощью собственного DFWebOS. + + + Контролируйте баланс кошелька Bitcoin конфиденциально с помощью XPUB, YPUB или ZPUB. + + + Подключается к вашему локальному серверу Electrs для максимальной конфиденциальности, не полагаясь на сторонние API. + + + Прекратите проверять балансы в обозревателях блоков. Ваши кошельки. Ваш узел. Ваша конфиденциальность. + + + Поддерживает несколько кошельков, автоматическое сканирование лимита гэпов и обновление баланса в реальном времени непосредственно с вашего узла DFWebOS. +developer: egzola +website: https://github.com/egzola/bitbalance +repo: https://github.com/egzola/bitbalance +support: https://github.com/egzola/bitbalance/issues +submitter: egzola +submission: https://github.com/getumbrel/dfwebos-apps/pull/5082 +path: "" +dependencies: + - electrs +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Это обновление включает в себя усовершенствования интерфейс, улучшения отзывчивости, очистку нижнего колонтитула и общую доработку. + \ No newline at end of file diff --git a/bitbalance/docker-compose.yml b/bitbalance/docker-compose.yml new file mode 100644 index 0000000..379272a --- /dev/null +++ b/bitbalance/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bitbalance_app_1 + APP_PORT: 3710 + + app: + image: ghcr.io/egzola/bitbalance:1.0.18@sha256:9d390c1aa9025a49c37604239700662236b8fc84138ae582fa66710ac4a82bf7 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + PORT: 3710 + ELECTRUM_HOST: $APP_ELECTRS_NODE_IP + ELECTRUM_PORT: $APP_ELECTRS_NODE_PORT + volumes: + - ${APP_DATA_DIR}/data:/data diff --git a/bitcoin-knots/data/app/.gitkeep b/bitcoin-knots/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitcoin-knots/data/bitcoin/.gitkeep b/bitcoin-knots/data/bitcoin/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitcoin-knots/data/i2pd/.gitkeep b/bitcoin-knots/data/i2pd/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitcoin-knots/dfwebos-app.yml b/bitcoin-knots/dfwebos-app.yml new file mode 100644 index 0000000..6e76421 --- /dev/null +++ b/bitcoin-knots/dfwebos-app.yml @@ -0,0 +1,91 @@ +manifestVersion: 1.1 +id: bitcoin-knots +implements: + - bitcoin +category: bitcoin +name: Bitcoin Knots +version: "1.2.10" +tagline: Запустите свой личный узел на базе Bitcoin Knots +description: >- + Возьмите под контроль свой цифровой суверенитет, выбрав Bitcoin Knots для запуска своего узла! Используя Knots, вы поддерживаете версию Bitcoin, в которой приоритет отдается эффективности, безопасности и гибкости. Благодаря расширенным параметрам конфигурации Bitcoin Knots вы можете точно настроить свой узел, чтобы поддерживать чистоту и отказоустойчивость сети, активно снижая ненужную нагрузку от спама или паразитных транзакций. + + + Каждый узел усиливает сеть Bitcoin, и ваше решение использовать узлы Bitcoin напрямую способствует созданию более децентрализованной и устойчивой к спаму экосистемы. Ваш узел не только проверяет и защищает транзакции, но и подает пример более устойчивой, ориентированной на пользователя сети Bitcoin. + + + Добро пожаловать в сообщество пользователей Bitcoin Knots и спасибо за то, что помогаете Bitcoin становиться сильнее! + + + Вот руководство о том, как перенести блокчейн из ядра биткойна в узлы: https://docs.mempool.guide/page/migrationumbrel.html + + + Чтобы перенаправить входящий одноранговый трафик на ваше устройство, настройте следующую конфигурацию: (маршрутизатор) 9333 -> (устройство) 9333 + + + При поддержке Bitcoin Узлы: https://bitcoinknots.org/ +developer: Léo Haf +website: https://bitcoinknots.org +dependencies: [] +repo: https://github.com/bitcoinknots/bitcoin.git +support: https://github.com/bitcoinknots/bitcoin/issues +port: 2105 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +releaseNotes: >- + Внутренние изменения +widgets: + - id: "stats" + type: "four-stats" + refresh: "5s" + endpoint: "app:3000/api/widget/stats" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "Connections" + text: "11" + subtext: "peers" + - title: "Mempool" + text: "257" + subtext: "MB" + - title: "Hashrate" + text: "590" + subtext: "EH/s" + - title: "Blockchain size" + text: "600" + subtext: "GB" + - id: "sync" + type: "text-with-progress" + refresh: "2s" + endpoint: "app:3000/api/widget/sync" + link: "" + example: + type: "text-with-progress" + link: "" + title: "Blockchain sync" + text: "83%" + progressLabel: "In progress" + progress: 0.83 +backupIgnore: + - data/bitcoin/blocks + - data/bitcoin/chainstate + - data/bitcoin/indexes + - data/bitcoin/testnet3/blocks + - data/bitcoin/testnet3/chainstate + - data/bitcoin/testnet3/indexes + - data/bitcoin/testnet4/blocks + - data/bitcoin/testnet4/chainstate + - data/bitcoin/testnet4/indexes + - data/bitcoin/signet/blocks + - data/bitcoin/signet/chainstate + - data/bitcoin/signet/indexes + - data/bitcoin/regtest/blocks + - data/bitcoin/regtest/chainstate + - data/bitcoin/regtest/indexes +submitter: Léo Haf +submission: https://github.com/getumbrel/dfwebos-apps/pull/953 diff --git a/bitcoin-knots/docker-compose.yml b/bitcoin-knots/docker-compose.yml new file mode 100644 index 0000000..73d65e1 --- /dev/null +++ b/bitcoin-knots/docker-compose.yml @@ -0,0 +1,83 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_BITCOIN_KNOTS_NODE_IP + APP_PORT: 3000 + + app: + image: ghcr.io/retropex/umbrel-bitcoin-knots:1.2.10@sha256:4dc37d9014eb29d47898d512422736ad2eed89bf31d321fc27b27547f04d0866 + user: "1000:1000" + restart: on-failure + stop_grace_period: 15m30s + # эти порты доступны для внешних подключений к bitcoind + ports: + - "${APP_BITCOIN_KNOTS_P2P_PORT}:${APP_BITCOIN_KNOTS_P2P_PORT}" + - "${APP_BITCOIN_KNOTS_RPC_PORT}:${APP_BITCOIN_KNOTS_RPC_PORT}" + volumes: + - ${APP_DATA_DIR}/data:/data # data/app and data/bitcoin + environment: + # НАСТРОЙКИ КАТАЛОГ ДАННЫХ + # BITCOIN_DIR: bitcoin-dir-override + # APP_STATE_DIR: app-state-dir-override + + # БИНАРНЫЕ НАСТРОЙКИ БИТКОИНДА + # BITCOIND_BIN: bitcoind-binary-path-override + # разделенный запятыми список дополнительных флагов запуска для передачи в bitcoind + BITCOIND_EXTRA_ARGS: '-deprecatedrpc=create_bdb' # We can remove depratedrpc=create_bdb in a future update once Jam (JoinMarket) implements descriptor wallet support + + # НАСТРОЙКИ КОНФ-ФАЙЛА БИТКОИНДА + APPS_SUBNET: "${NETWORK_IP}/16" # used for rpcallowip + P2P_PORT: "${APP_BITCOIN_KNOTS_P2P_PORT}" # port, bind (also used for connect details) + P2P_WHITEBIND_PORT: "${APP_BITCOIN_KNOTS_P2P_WHITEBIND_PORT}" # Additional inbound P2P listener granting whitelisted permissions (whitebind) to this port; for trusted internal apps only; do not publish externally + RPC_PORT: "${APP_BITCOIN_KNOTS_RPC_PORT}" # rpcport (also used for rpc client and connect details) + TOR_PORT: "${APP_BITCOIN_KNOTS_TOR_PORT}" # bind=onion + ZMQ_RAWBLOCK_PORT: "${APP_BITCOIN_KNOTS_ZMQ_RAWBLOCK_PORT}" # zmqpubrawblock + ZMQ_RAWTX_PORT: "${APP_BITCOIN_KNOTS_ZMQ_RAWTX_PORT}" # zmqpubrawtx + ZMQ_HASHBLOCK_PORT: "${APP_BITCOIN_KNOTS_ZMQ_HASHBLOCK_PORT}" # zmqpubhashblock + ZMQ_SEQUENCE_PORT: "${APP_BITCOIN_KNOTS_ZMQ_SEQUENCE_PORT}" # zmqpubsequence + ZMQ_HASHTX_PORT: "${APP_BITCOIN_KNOTS_ZMQ_HASHTX_PORT}" # zmqpubhashtx + TOR_HOST: "${APP_BITCOIN_KNOTS_TOR_PROXY_IP}" # proxy, onion, torcontrol + TOR_SOCKS_PORT: "9050" # proxy, onion + TOR_CONTROL_PORT: "9051" # torcontrol + TOR_CONTROL_PASSWORD: "moneyprintergobrrr" # torpassword + I2P_HOST: "${APP_BITCOIN_KNOTS_I2P_DAEMON_IP}" # i2psam + I2P_SAM_PORT: "7656" # i2psam + + # НАСТРОЙКИ КЛИЕНТА RPC + BITCOIND_IP: "${APP_BITCOIN_KNOTS_NODE_IP}" # host for the rpc client. Also used for bitcoind conf file rpcbind & bind. + RPC_USER: "${APP_BITCOIN_KNOTS_RPC_USER}" # also shown in the connect modal + RPC_PASS: "${APP_BITCOIN_KNOTS_RPC_PASS}" # also shown in the connect modal + + # CONNECTION DETAILS (отображается пользователю в модальном окне подключения) + DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}" + P2P_HIDDEN_SERVICE: "${APP_BITCOIN_KNOTS_P2P_HIDDEN_SERVICE}" + RPC_HIDDEN_SERVICE: "${APP_BITCOIN_KNOTS_RPC_HIDDEN_SERVICE}" + networks: + default: + ipv4_address: $APP_BITCOIN_KNOTS_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" + networks: + default: + ipv4_address: "${APP_BITCOIN_KNOTS_TOR_PROXY_IP}" + + i2pd_daemon: + image: purplei2p/i2pd:release-2.44.0@sha256:d154a599793c393cf9c91f8549ba7ece0bb40e5728e1813aa6dd4c210aa606f6 + user: "root" + command: --sam.enabled=true --sam.address=0.0.0.0 --sam.port=7656 --loglevel=error + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/i2pd:/home/i2pd/data + networks: + default: + ipv4_address: "${APP_BITCOIN_KNOTS_I2P_DAEMON_IP}" diff --git a/bitcoin-knots/exports.sh b/bitcoin-knots/exports.sh new file mode 100644 index 0000000..da2b43c --- /dev/null +++ b/bitcoin-knots/exports.sh @@ -0,0 +1,105 @@ +export APP_BITCOIN_KNOTS_NODE_IP="10.21.21.7" +export APP_BITCOIN_KNOTS_TOR_PROXY_IP="10.21.22.12" +export APP_BITCOIN_KNOTS_I2P_DAEMON_IP="10.21.22.13" + +export APP_BITCOIN_KNOTS_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin" +export APP_BITCOIN_KNOTS_RPC_PORT="9332" +export APP_BITCOIN_KNOTS_P2P_PORT="9333" +# Дополнительный входящий прослушиватель P2P, предоставляющий разрешения из белого списка (whitebind) этому порту; только для доверенных внутренних приложений; не публиковать на внешних ресурсах +export APP_BITCOIN_KNOTS_P2P_WHITEBIND_PORT="9335" +export APP_BITCOIN_KNOTS_TOR_PORT="8334" +export APP_BITCOIN_KNOTS_ZMQ_RAWBLOCK_PORT="48332" +export APP_BITCOIN_KNOTS_ZMQ_RAWTX_PORT="48333" +export APP_BITCOIN_KNOTS_ZMQ_HASHBLOCK_PORT="48334" +export APP_BITCOIN_KNOTS_ZMQ_SEQUENCE_PORT="48335" +export APP_BITCOIN_KNOTS_ZMQ_HASHTX_PORT="48336" + +# Это устаревшие переменные окружения, которые нам нужно сохранить для совместимости с DATUM. +export APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT="9332" +export APP_BITCOIN_KNOTS_INTERNAL_P2P_PORT="9333" + +export APP_BITCOIN_KNOTS_NETWORK="mainnet" + +# Проверьте наличие существующего файла settings.json, чтобы переопределить APP_BITCOIN_NETWORK по выбору пользователя. +{ + BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/settings.json" + if [[ -f "${BITCOIN_APP_CONFIG_FILE}" ]] + then + bitcoin_app_network=$(jq -r '.chain' "${BITCOIN_APP_CONFIG_FILE}") + case $bitcoin_app_network in + "main") + APP_BITCOIN_KNOTS_NETWORK="mainnet";; + "test") + APP_BITCOIN_KNOTS_NETWORK="testnet";; + "testnet4") + APP_BITCOIN_KNOTS_NETWORK="testnet4";; + "signet") + APP_BITCOIN_KNOTS_NETWORK="signet";; + "regtest") + APP_BITCOIN_KNOTS_NETWORK="regtest";; + *) + if [[ -n "$bitcoin_app_network" ]] && [[ "$bitcoin_app_network" != "null" ]]; then + echo "Warning (${EXPORTS_APP_ID}): Invalid network '${bitcoin_app_network}' in settings.json. Exporting APP_BITCOIN_NETWORK as default 'mainnet'." + fi;; + esac + fi +} > /dev/null || true + +BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env" + +if [[ ! -f "${BITCOIN_ENV_FILE}" ]]; then + + if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]]; then + BITCOIN_RPC_USER="dfwebos" + BITCOIN_RPC_DETAILS=$("${EXPORTS_APP_DIR}/scripts/rpcauth.py" "${BITCOIN_RPC_USER}") + BITCOIN_RPC_PASS=$(echo "$BITCOIN_RPC_DETAILS" | tail -1) + fi + + echo "export APP_BITCOIN_KNOTS_RPC_USER='${BITCOIN_RPC_USER}'" >> "${BITCOIN_ENV_FILE}" + echo "export APP_BITCOIN_KNOTS_RPC_PASS='${BITCOIN_RPC_PASS}'" >> "${BITCOIN_ENV_FILE}" +fi + +. "${BITCOIN_ENV_FILE}" + +# эхо "${APP_BITCOIN_KNOTS_COMMAND}" + +rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname" +p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname" +export APP_BITCOIN_KNOTS_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" +export APP_BITCOIN_KNOTS_P2P_HIDDEN_SERVICE="$(cat "${p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" + +# параметр сети, совместимый с lectrs +export APP_BITCOIN_KNOTS_NETWORK_ELECTRS=$APP_BITCOIN_KNOTS_NETWORK +if [[ "${APP_BITCOIN_KNOTS_NETWORK_ELECTRS}" = "mainnet" ]]; then + APP_BITCOIN_KNOTS_NETWORK_ELECTRS="bitcoin" +fi + +for var in \ + NODE_IP \ + TOR_PROXY_IP \ + I2P_DAEMON_IP \ + DATA_DIR \ + RPC_PORT \ + P2P_PORT \ + P2P_WHITEBIND_PORT \ + TOR_PORT \ + ZMQ_RAWBLOCK_PORT \ + ZMQ_RAWTX_PORT \ + ZMQ_HASHBLOCK_PORT \ + ZMQ_SEQUENCE_PORT \ + ZMQ_HASHTX_PORT \ + NETWORK \ + RPC_USER \ + RPC_PASS \ + RPC_HIDDEN_SERVICE \ + P2P_HIDDEN_SERVICE \ + NETWORK_ELECTRS +do + bitcoin_var="APP_BITCOIN_${var}" + knots_var="APP_BITCOIN_KNOTS_${var}" + if [ -n "${!knots_var-}" ]; then + export "$bitcoin_var"="${!bitcoin_var:=${!knots_var}}" + else + echo "Warning: $knots_var is unset or empty" + fi +done \ No newline at end of file diff --git a/bitcoin-knots/hooks/pre-start b/bitcoin-knots/hooks/pre-start new file mode 100755 index 0000000..66673dd --- /dev/null +++ b/bitcoin-knots/hooks/pre-start @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../data)" +DESIRED_OWNER="1000:1000" + +set_correct_permissions() { + local -r path="${1}" + + # Проверьте, существует ли файл + if [[ -f "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + echo "Changed ownership of ${path} to ${DESIRED_OWNER}" + fi + else + echo "Skipping ${path} - file does not exist" + fi +} + +# Мы устанавливаем правильные разрешения для любых файлов, которые могли быть созданы предыдущим приложением, работающим с правами root: +set_correct_permissions "${APP_DATA_DIR}/bitcoin/umbrel-bitcoin.conf" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf.save" +# settings.json для любой сети могло быть исправлено самим старым приложением, работающим под root. +set_correct_permissions "${APP_DATA_DIR}/bitcoin/settings.json" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/regtest/settings.json" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/signet/settings.json" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet3/settings.json" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet4/settings.json" + +# Устанавливайте разрешения рекурсивно для всего каталога привязки /app. +if [[ -d "${APP_DATA_DIR}/app" ]]; then + chown -R "${DESIRED_OWNER}" "${APP_DATA_DIR}/app" +fi + +# Отложите загрузку полной версии приложения до тех пор, пока не будут готовы скрытые службы Tor RPC и P2P. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach app +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/bitcoin-knots/scripts/rpcauth.py b/bitcoin-knots/scripts/rpcauth.py new file mode 100755 index 0000000..f59b4dd --- /dev/null +++ b/bitcoin-knots/scripts/rpcauth.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# Copyright (c) 2015-2018 Разработчики Bitcoin Core +# Распространяется по лицензии на программное обеспечение MIT, см. прилагаемый документ. +# файл COPYING или http://www.opensource.org/licenses/mit-license.php. + +from argparse import ArgumentParser +from base64 import urlsafe_b64encode +from binascii import hexlify +from getpass import getpass +from os import urandom + +import hmac + +def generate_salt(size): + """Create size byte hex salt""" + return hexlify(urandom(size)).decode() + +def generate_password(): + """Create 32 byte b64 password""" + return urlsafe_b64encode(urandom(32)).decode('utf-8') + +def password_to_hmac(salt, password): + m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), 'SHA256') + return m.hexdigest() + +def main(): + parser = ArgumentParser(description='Create login credentials for a JSON-RPC user') + parser.add_argument('username', help='the username for authentication') + parser.add_argument('password', help='leave empty to generate a random password or specify "-" to prompt for password', nargs='?') + args = parser.parse_args() + + if not args.password: + args.password = generate_password() + elif args.password == '-': + args.password = getpass() + + # Создать 16-байтовую шестнадцатеричную соль + salt = generate_salt(16) + password_hmac = password_to_hmac(salt, args.password) + + print('String to be appended to bitcoin.conf:') + print('rpcauth={0}:{1}${2}'.format(args.username, salt, password_hmac)) + print('Your password:\n{0}'.format(args.password)) + +if __name__ == '__main__': + main() diff --git a/bitcoin-knots/torrc.template b/bitcoin-knots/torrc.template new file mode 100644 index 0000000..65dc009 --- /dev/null +++ b/bitcoin-knots/torrc.template @@ -0,0 +1,13 @@ +SocksPort 0.0.0.0:9050 +ControlPort 0.0.0.0:9051 +CookieAuthentication 1 +CookieAuthFileGroupReadable 1 +HashedControlPassword 16:39AF5EEFA4FC1D986022FDFB13663669FE50FB6DE9A3B4FE4FC7D82010 # moneyprintergobrrr + +# Биткойн-узлы P2P Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-p2p +HiddenServicePort $APP_BITCOIN_KNOTS_P2P_PORT $APP_BITCOIN_KNOTS_NODE_IP:$APP_BITCOIN_KNOTS_TOR_PORT + +# Биткойн-узлы RPC Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-rpc +HiddenServicePort $APP_BITCOIN_KNOTS_RPC_PORT $APP_BITCOIN_KNOTS_NODE_IP:$APP_BITCOIN_KNOTS_RPC_PORT \ No newline at end of file diff --git a/bitcoin-regtest-dashboard/data/bitcoin/.gitkeep b/bitcoin-regtest-dashboard/data/bitcoin/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitcoin-regtest-dashboard/data/electrs/.gitkeep b/bitcoin-regtest-dashboard/data/electrs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitcoin-regtest-dashboard/dfwebos-app.yml b/bitcoin-regtest-dashboard/dfwebos-app.yml new file mode 100644 index 0000000..4f269a1 --- /dev/null +++ b/bitcoin-regtest-dashboard/dfwebos-app.yml @@ -0,0 +1,45 @@ +manifestVersion: 1 +id: bitcoin-regtest-dashboard +category: bitcoin +name: Bitcoin Regtest Dashboard +version: "1.0.3" +tagline: Инструментарий разработки для регтеста Bitcoin +description: >- + Автономная панель разработки с собственным узлом регистрации ядра Bitcoin и экземпляром Electrs. Никаких внешних зависимостей не требуется. + + + Особенности включают в себя: + - Мгновенно добывайте блоки одним щелчком мыши + - Генерировать новые адреса (поддерживаются все типы) + - Отправьте Bitcoin на любой адрес + - Просмотр и управление UTXO + - Транзакции RBF (замена по комиссии) + - Отмена неподтвержденных транзакций + - Просмотр мемпула и блоков + - Декодирование и трансляция необработанных транзакций + - Полная консоль RPC для расширенных команд. + + + Идеально подходит для разработчиков Bitcoin, которым нужен быстрый доступ к функциям узла регистрации. + для тестирования кошельков, приложений и интеграций Bitcoin. +releaseNotes: >- + Это обновление содержит различные небольшие улучшения: + - Обновлен значок приложения. + - Теперь указан в категории Bitcoin в магазине DFWebOS. + - Обновлено ядро ​​Bitcoin до версии 30.2. +developer: Corey Phillips +website: https://github.com/coreyphillips/bitcoin-regtest-dashboard +dependencies: [] +repo: https://github.com/coreyphillips/bitcoin-regtest-dashboard +support: https://github.com/coreyphillips/bitcoin-regtest-dashboard/issues +port: 3009 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Corey Phillips +submission: https://github.com/getumbrel/dfwebos-apps/pull/4264 diff --git a/bitcoin-regtest-dashboard/docker-compose.yml b/bitcoin-regtest-dashboard/docker-compose.yml new file mode 100644 index 0000000..96e30b0 --- /dev/null +++ b/bitcoin-regtest-dashboard/docker-compose.yml @@ -0,0 +1,89 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bitcoin-regtest-dashboard_dashboard_1 + APP_PORT: 3000 + + # Bitcoin Core в режиме регистрации (автономный, без зависимостей) + bitcoin: + image: ghcr.io/getumbrel/docker-bitcoind:v30.2@sha256:75ad7da4eaa2a56b92e5703ff39fa86aa7b9012c50749ca082f018a761d136cd + user: "1000:1000" + restart: on-failure + entrypoint: ["/bin/sh", "-c"] + command: + - | + rm -f /data/.bitcoin/regtest/.ready + bitcoind -regtest \ + -server=1 \ + -rpcbind=0.0.0.0 \ + -rpcallowip=0.0.0.0/0 \ + -rpcport=18443 \ + -txindex=1 \ + -fallbackfee=0.00001 \ + -disablewallet=0 \ + -zmqpubrawblock=tcp://0.0.0.0:28332 \ + -zmqpubrawtx=tcp://0.0.0.0:28333 & + BITCOIND_PID=$$! + while [ ! -f /data/.bitcoin/regtest/.cookie ]; do sleep 1; done + chmod 755 /data/.bitcoin/regtest + chmod 644 /data/.bitcoin/regtest/.cookie + sleep 2 + bitcoin-cli -regtest -rpccookiefile=/data/.bitcoin/regtest/.cookie createwallet "regtest_wallet" 2>/dev/null || \ + bitcoin-cli -regtest -rpccookiefile=/data/.bitcoin/regtest/.cookie loadwallet "regtest_wallet" 2>/dev/null || true + bitcoin-cli -regtest -rpccookiefile=/data/.bitcoin/regtest/.cookie -rpcwallet=regtest_wallet -generate 1 >/dev/null 2>&1 || true + touch /data/.bitcoin/regtest/.ready + while kill -0 $$BITCOIND_PID 2>/dev/null; do + chmod 755 /data/.bitcoin/regtest 2>/dev/null + chmod 644 /data/.bitcoin/regtest/.cookie 2>/dev/null + sleep 5 + done & + wait $$BITCOIND_PID + volumes: + - ${APP_DATA_DIR}/data/bitcoin:/data/.bitcoin + healthcheck: + test: ["CMD-SHELL", "test -f /data/.bitcoin/regtest/.ready && chmod 644 /data/.bitcoin/regtest/.cookie && bitcoin-cli -regtest -rpccookiefile=/data/.bitcoin/regtest/.cookie getblockchaininfo"] + interval: 5s + timeout: 5s + retries: 10 + start_period: 10s + + # Electrs — реализация Electrum Server + electrs: + image: getumbrel/electrs:v0.11.0@sha256:0a2c6f573abfd8d724651c6ba1c1f3a9c740219c1cf0f4468043c3342170d8a5 + user: "1000:1000" + restart: on-failure + ports: + - "60401:50001" + environment: + ELECTRS_ELECTRUM_RPC_ADDR: "0.0.0.0:50001" + ELECTRS_DAEMON_RPC_ADDR: "bitcoin-regtest-dashboard_bitcoin_1:18443" + ELECTRS_DAEMON_P2P_ADDR: "bitcoin-regtest-dashboard_bitcoin_1:18444" + ELECTRS_LOG_FILTERS: "INFO" + ELECTRS_NETWORK: "regtest" + volumes: + - ${APP_DATA_DIR}/data/electrs:/data + - ${APP_DATA_DIR}/data/bitcoin:/data/.bitcoin:ro + depends_on: + bitcoin: + condition: service_healthy + + # Панель регистрации биткойнов + dashboard: + image: coreylphillips/bitcoin-regtest-dashboard:v1.0.3@sha256:f1ccffc2002f107559338f015097e49af7f547eababfcd1f53f0f2bdbd159c88 + user: "1000:1000" + restart: on-failure + environment: + PORT: 3000 + BITCOIN_RPC_HOST: bitcoin-regtest-dashboard_bitcoin_1 + BITCOIN_RPC_PORT: 18443 + BITCOIN_COOKIE_FILE: /bitcoin/.bitcoin/regtest/.cookie + ELECTRS_HOST: bitcoin-regtest-dashboard_electrs_1 + ELECTRS_PORT: 50001 + ELECTRS_EXTERNAL_PORT: 60401 + volumes: + - ${APP_DATA_DIR}/data/bitcoin:/bitcoin/.bitcoin:ro + depends_on: + bitcoin: + condition: service_healthy diff --git a/bitcoin/data/app/.gitkeep b/bitcoin/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitcoin/data/bitcoin/.gitkeep b/bitcoin/data/bitcoin/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitcoin/data/i2pd/.gitkeep b/bitcoin/data/i2pd/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitcoin/dfwebos-app.yml b/bitcoin/dfwebos-app.yml new file mode 100644 index 0000000..e388599 --- /dev/null +++ b/bitcoin/dfwebos-app.yml @@ -0,0 +1,91 @@ +manifestVersion: 1.1 +id: bitcoin +category: bitcoin +name: Bitcoin Node +version: "1.2.2" +tagline: Запустите свой личный узел на базе Bitcoin Core +description: >- + Запустите свой узел Bitcoin на базе Bitcoin Core. Независимо храните и проверяйте каждую транзакцию Bitcoin. + Подключите свой кошелек напрямую к своему узлу, чтобы обеспечить непревзойденную конфиденциальность, чтобы ваш провайдер кошелька не мог отслеживать вашу активность или, что еще хуже, вводить вас в заблуждение. + + + Транзакции через собственный узел также помогают сохранить децентрализованность сети Bitcoin — беспроигрышный вариант. + + + Благодаря более чем 20 расширенным настройкам вы полностью контролируете ситуацию. Выберите, какую версию Bitcoin Core использует ваш узел, + как ваш узел подключается к другим узлам через Tor, Clearnet и I2P, регулирует ежедневные ограничения на загрузку, устанавливает максимальный размер мемпула, + тонкая настройка производительности и многое другое. + + + Не верь. Проверять. На стероидах. + + + Официальное приложение от DFWebOS. +developer: DFWebOS +website: https://dfwebos.com +dependencies: [] +repo: https://github.com/getumbrel/dfwebos-bitcoin +support: https://community.getumbrel.com/c/bitcoin-and-lightning +port: 2100 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultPassword: "" +releaseNotes: >- + Это обновление устраняет проблему, которая могла привести к сбою и неожиданному перезапуску приложения Bitcoin Node. +widgets: + - id: "stats" + type: "four-stats" + refresh: "5s" + endpoint: "app:3000/api/widget/stats" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "Connections" + text: "11" + subtext: "peers" + - title: "Mempool" + text: "257" + subtext: "MB" + - title: "Hashrate" + text: "590" + subtext: "EH/s" + - title: "Blockchain size" + text: "600" + subtext: "GB" + - id: "sync" + type: "text-with-progress" + refresh: "2s" + endpoint: "app:3000/api/widget/sync" + link: "" + example: + type: "text-with-progress" + link: "" + title: "Blockchain sync" + text: "83%" + progressLabel: "In progress" + progress: 0.83 +backupIgnore: + - data/bitcoin/blocks + - data/bitcoin/chainstate + - data/bitcoin/indexes + - data/bitcoin/testnet3/blocks + - data/bitcoin/testnet3/chainstate + - data/bitcoin/testnet3/indexes + - data/bitcoin/testnet4/blocks + - data/bitcoin/testnet4/chainstate + - data/bitcoin/testnet4/indexes + - data/bitcoin/signet/blocks + - data/bitcoin/signet/chainstate + - data/bitcoin/signet/indexes + - data/bitcoin/regtest/blocks + - data/bitcoin/regtest/chainstate + - data/bitcoin/regtest/indexes +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/commit/576ecd2bef8d625abceed0f67ec9c487da9b2b1b diff --git a/bitcoin/docker-compose.yml b/bitcoin/docker-compose.yml new file mode 100644 index 0000000..0a8c000 --- /dev/null +++ b/bitcoin/docker-compose.yml @@ -0,0 +1,85 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_BITCOIN_NODE_IP + APP_PORT: 3000 + + app: + image: ghcr.io/getumbrel/umbrel-bitcoin:v1.2.2@sha256:bc72c7fe705c582b8be1740c52449ac82de4d40b0e91ea090513aac6d4fc9393 + user: "1000:1000" + restart: on-failure + stop_grace_period: 15m30s + # эти порты доступны для внешних подключений к bitcoind + ports: + - "${APP_BITCOIN_P2P_PORT}:${APP_BITCOIN_P2P_PORT}" + - "${APP_BITCOIN_RPC_PORT}:${APP_BITCOIN_RPC_PORT}" + volumes: + - ${APP_DATA_DIR}/data:/data # data/app and data/bitcoin + environment: + # НАСТРОЙКИ КАТАЛОГ ДАННЫХ + # BITCOIN_DIR: bitcoin-dir-override + # APP_STATE_DIR: app-state-dir-override + + # БИНАРНЫЕ НАСТРОЙКИ БИТКОИНДА + # BITCOIND_BIN: bitcoind-binary-path-override + # BITCOIND_EXTRA_ARGS — это список дополнительных флагов запуска, разделенных запятыми, которые можно передать в bitcoind. + # Мы можем удалить depratedrpc=create_bdb в будущем обновлении, как только Jam (JoinMarket) реализует поддержку дескрипторного кошелька. + # Bitcoin Core v30 больше не поддерживает устаревшие кошельки bdb, поэтому пользователям Jam необходимо будет запустить версию 29.2 для совместимости. + BITCOIND_EXTRA_ARGS: '-deprecatedrpc=create_bdb' + + # НАСТРОЙКИ КОНФ-ФАЙЛА БИТКОИНДА + APPS_SUBNET: "${NETWORK_IP}/16" # used for rpcallowip + P2P_PORT: "${APP_BITCOIN_P2P_PORT}" # port, bind (also used for connect details) + P2P_WHITEBIND_PORT: "${APP_BITCOIN_P2P_WHITEBIND_PORT}" # Additional inbound P2P listener granting whitelisted permissions (whitebind) to this port; for trusted internal apps only; do not publish externally + RPC_PORT: "${APP_BITCOIN_RPC_PORT}" # rpcport (also used for rpc client and connect details) + TOR_PORT: "${APP_BITCOIN_TOR_PORT}" # bind=onion + ZMQ_RAWBLOCK_PORT: "${APP_BITCOIN_ZMQ_RAWBLOCK_PORT}" # zmqpubrawblock + ZMQ_RAWTX_PORT: "${APP_BITCOIN_ZMQ_RAWTX_PORT}" # zmqpubrawtx + ZMQ_HASHBLOCK_PORT: "${APP_BITCOIN_ZMQ_HASHBLOCK_PORT}" # zmqpubhashblock + ZMQ_SEQUENCE_PORT: "${APP_BITCOIN_ZMQ_SEQUENCE_PORT}" # zmqpubsequence + ZMQ_HASHTX_PORT: "${APP_BITCOIN_ZMQ_HASHTX_PORT}" # zmqpubhashtx + TOR_HOST: "${APP_BITCOIN_TOR_PROXY_IP}" # proxy, onion, torcontrol + TOR_SOCKS_PORT: "9050" # proxy, onion + TOR_CONTROL_PORT: "9051" # torcontrol + TOR_CONTROL_PASSWORD: "moneyprintergobrrr" # torpassword + I2P_HOST: "${APP_BITCOIN_I2P_DAEMON_IP}" # i2psam + I2P_SAM_PORT: "7656" # i2psam + + # НАСТРОЙКИ КЛИЕНТА RPC + BITCOIND_IP: "${APP_BITCOIN_NODE_IP}" # host for the rpc client. Also used for bitcoind conf file rpcbind & bind. + RPC_USER: "${APP_BITCOIN_RPC_USER}" # also shown in the connect modal + RPC_PASS: "${APP_BITCOIN_RPC_PASS}" # also shown in the connect modal + + # CONNECTION DETAILS (отображается пользователю в модальном окне подключения) + DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}" + P2P_HIDDEN_SERVICE: "${APP_BITCOIN_P2P_HIDDEN_SERVICE}" + RPC_HIDDEN_SERVICE: "${APP_BITCOIN_RPC_HIDDEN_SERVICE}" + networks: + default: + ipv4_address: $APP_BITCOIN_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" + networks: + default: + ipv4_address: "${APP_BITCOIN_TOR_PROXY_IP}" + + i2pd_daemon: + image: purplei2p/i2pd:release-2.59.0@sha256:257653c18ce0b127ef480e3d8373b3ddbf1495e842674c8cfc59909be0015979 + user: "root" + command: --sam.enabled=true --sam.address=0.0.0.0 --sam.port=7656 --loglevel=error + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/i2pd:/home/i2pd/data + networks: + default: + ipv4_address: "${APP_BITCOIN_I2P_DAEMON_IP}" diff --git a/bitcoin/exports.sh b/bitcoin/exports.sh new file mode 100644 index 0000000..6d455cc --- /dev/null +++ b/bitcoin/exports.sh @@ -0,0 +1,81 @@ +# IP-АДРЕСА +export APP_BITCOIN_NODE_IP="10.21.21.8" +export APP_BITCOIN_TOR_PROXY_IP="10.21.22.10" +export APP_BITCOIN_I2P_DAEMON_IP="10.21.22.11" + +# КАТАЛОГ ДАННЫХ +export APP_BITCOIN_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin" + +# ПОРТЫ +export APP_BITCOIN_RPC_PORT="8332" +export APP_BITCOIN_P2P_PORT="8333" +# Дополнительный входящий прослушиватель P2P, предоставляющий разрешения из белого списка (whitebind) этому порту; только для доверенных внутренних приложений; не публиковать на внешних ресурсах +export APP_BITCOIN_P2P_WHITEBIND_PORT="8335" +# Начиная с версии 28.1, порт прослушивания луковицы по умолчанию теперь будет иметь значение -port + 1 вместо фиксированного значения (8334 в основной сети). +# У нас все в порядке, потому что мы всегда жестко запрограммируем порт на 8333 независимо от сети. +export APP_BITCOIN_TOR_PORT="8334" +export APP_BITCOIN_ZMQ_RAWBLOCK_PORT="28332" +export APP_BITCOIN_ZMQ_RAWTX_PORT="28333" +export APP_BITCOIN_ZMQ_HASHBLOCK_PORT="28334" +export APP_BITCOIN_ZMQ_SEQUENCE_PORT="28335" +export APP_BITCOIN_ZMQ_HASHTX_PORT="28336" + +# СЕТЬ +export APP_BITCOIN_NETWORK="mainnet" + +# Проверьте наличие существующего файла settings.json, чтобы переопределить APP_BITCOIN_NETWORK по выбору пользователя. +{ + BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/settings.json" + if [[ -f "${BITCOIN_APP_CONFIG_FILE}" ]] + then + bitcoin_app_network=$(jq -r '.chain' "${BITCOIN_APP_CONFIG_FILE}") + case $bitcoin_app_network in + "main") + APP_BITCOIN_NETWORK="mainnet";; + "test") + APP_BITCOIN_NETWORK="testnet";; + "testnet4") + APP_BITCOIN_NETWORK="testnet4";; + "signet") + APP_BITCOIN_NETWORK="signet";; + "regtest") + APP_BITCOIN_NETWORK="regtest";; + *) + if [[ -n "$bitcoin_app_network" ]] && [[ "$bitcoin_app_network" != "null" ]]; then + echo "Warning (${EXPORTS_APP_ID}): Invalid network '${bitcoin_app_network}' in settings.json. Exporting APP_BITCOIN_NETWORK as default 'mainnet'." + fi;; + esac + fi +} > /dev/null || true + +# Файл .env для сохранения имени пользователя и пароля RPC. +BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env" + +# Если файла .env не существует, создайте его со сгенерированными значениями. +if [[ ! -f "${BITCOIN_ENV_FILE}" ]]; then + if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]]; then + BITCOIN_RPC_USER="dfwebos" + BITCOIN_RPC_DETAILS=$("${EXPORTS_APP_DIR}/scripts/rpcauth.py" "${BITCOIN_RPC_USER}") + BITCOIN_RPC_PASS=$(echo "$BITCOIN_RPC_DETAILS" | tail -1) + fi + + echo "export APP_BITCOIN_RPC_USER='${BITCOIN_RPC_USER}'" >> "${BITCOIN_ENV_FILE}" + echo "export APP_BITCOIN_RPC_PASS='${BITCOIN_RPC_PASS}'" >> "${BITCOIN_ENV_FILE}" +fi + +# Создайте файл .env для экспорта APP_BITCOIN_RPC_USER и APP_BITCOIN_RPC_PASS. +. "${BITCOIN_ENV_FILE}" + +# СКРЫТЫЕ УСЛУГИ +rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname" +p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname" +export APP_BITCOIN_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" +export APP_BITCOIN_P2P_HIDDEN_SERVICE="$(cat "${p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" + +# TODO: было бы неплохо, чтобы Electrs занялся этим вместо этого, но удаление этого приведет к поломке существующих установок Electrs до тех пор, пока они не обновятся. +# Экспортируйте параметр сети, совместимый с lectres +# lectrs использует "bitcoin" вместо "mainnet", но соответствует всем остальным тестовым сетям. +export APP_BITCOIN_NETWORK_ELECTRS=$APP_BITCOIN_NETWORK +if [[ "${APP_BITCOIN_NETWORK_ELECTRS}" = "mainnet" ]]; then + APP_BITCOIN_NETWORK_ELECTRS="bitcoin" +fi \ No newline at end of file diff --git a/bitcoin/hooks/pre-start b/bitcoin/hooks/pre-start new file mode 100755 index 0000000..66673dd --- /dev/null +++ b/bitcoin/hooks/pre-start @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../data)" +DESIRED_OWNER="1000:1000" + +set_correct_permissions() { + local -r path="${1}" + + # Проверьте, существует ли файл + if [[ -f "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + echo "Changed ownership of ${path} to ${DESIRED_OWNER}" + fi + else + echo "Skipping ${path} - file does not exist" + fi +} + +# Мы устанавливаем правильные разрешения для любых файлов, которые могли быть созданы предыдущим приложением, работающим с правами root: +set_correct_permissions "${APP_DATA_DIR}/bitcoin/umbrel-bitcoin.conf" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/bitcoin.conf.save" +# settings.json для любой сети могло быть исправлено самим старым приложением, работающим под root. +set_correct_permissions "${APP_DATA_DIR}/bitcoin/settings.json" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/regtest/settings.json" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/signet/settings.json" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet3/settings.json" +set_correct_permissions "${APP_DATA_DIR}/bitcoin/testnet4/settings.json" + +# Устанавливайте разрешения рекурсивно для всего каталога привязки /app. +if [[ -d "${APP_DATA_DIR}/app" ]]; then + chown -R "${DESIRED_OWNER}" "${APP_DATA_DIR}/app" +fi + +# Отложите загрузку полной версии приложения до тех пор, пока не будут готовы скрытые службы Tor RPC и P2P. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach app +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/bitcoin/scripts/rpcauth.py b/bitcoin/scripts/rpcauth.py new file mode 100755 index 0000000..f59b4dd --- /dev/null +++ b/bitcoin/scripts/rpcauth.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# Copyright (c) 2015-2018 Разработчики Bitcoin Core +# Распространяется по лицензии на программное обеспечение MIT, см. прилагаемый документ. +# файл COPYING или http://www.opensource.org/licenses/mit-license.php. + +from argparse import ArgumentParser +from base64 import urlsafe_b64encode +from binascii import hexlify +from getpass import getpass +from os import urandom + +import hmac + +def generate_salt(size): + """Create size byte hex salt""" + return hexlify(urandom(size)).decode() + +def generate_password(): + """Create 32 byte b64 password""" + return urlsafe_b64encode(urandom(32)).decode('utf-8') + +def password_to_hmac(salt, password): + m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), 'SHA256') + return m.hexdigest() + +def main(): + parser = ArgumentParser(description='Create login credentials for a JSON-RPC user') + parser.add_argument('username', help='the username for authentication') + parser.add_argument('password', help='leave empty to generate a random password or specify "-" to prompt for password', nargs='?') + args = parser.parse_args() + + if not args.password: + args.password = generate_password() + elif args.password == '-': + args.password = getpass() + + # Создать 16-байтовую шестнадцатеричную соль + salt = generate_salt(16) + password_hmac = password_to_hmac(salt, args.password) + + print('String to be appended to bitcoin.conf:') + print('rpcauth={0}:{1}${2}'.format(args.username, salt, password_hmac)) + print('Your password:\n{0}'.format(args.password)) + +if __name__ == '__main__': + main() diff --git a/bitcoin/torrc.template b/bitcoin/torrc.template new file mode 100644 index 0000000..1994614 --- /dev/null +++ b/bitcoin/torrc.template @@ -0,0 +1,13 @@ +SocksPort 0.0.0.0:9050 +ControlPort 0.0.0.0:9051 +CookieAuthentication 1 +CookieAuthFileGroupReadable 1 +HashedControlPassword 16:39AF5EEFA4FC1D986022FDFB13663669FE50FB6DE9A3B4FE4FC7D82010 # moneyprintergobrrr + +# Bitcoin Core P2P Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-p2p +HiddenServicePort $APP_BITCOIN_P2P_PORT $APP_BITCOIN_NODE_IP:$APP_BITCOIN_TOR_PORT + +# Bitcoin Core RPC Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-rpc +HiddenServicePort $APP_BITCOIN_RPC_PORT $APP_BITCOIN_NODE_IP:$APP_BITCOIN_RPC_PORT \ No newline at end of file diff --git a/bitfeed/data/.gitkeep b/bitfeed/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitfeed/dfwebos-app.yml b/bitfeed/dfwebos-app.yml new file mode 100644 index 0000000..80a941d --- /dev/null +++ b/bitfeed/dfwebos-app.yml @@ -0,0 +1,32 @@ +manifestVersion: 1 +id: bitfeed +category: bitcoin +name: Bitfeed +version: "2.3.4" +tagline: Красивый визуализатор мемпула и обозреватель блоков. +description: >- + Самостоятельная версия Bitfeed — визуализатор и блок мемпулов с открытым исходным кодом. + проводник доступен по адресу https://bitfeed.live. + + + Наблюдайте за тем, как новые транзакции попадают в мемпул вашего узла, прежде чем они будут упакованы в вновь добытые блоки. + + + Контролируйте сетевую активность Bitcoin, исследуйте блоки и транзакции или просто наслаждайтесь успокаивающей заставкой Bitcoin. +developer: Mononaut +website: https://monospace.live +dependencies: + - bitcoin +repo: https://github.com/bitfeed-project/bitfeed +support: https://github.com/bitfeed-project/bitfeed/issues +port: 8314 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Mononaut +submission: https://github.com/getumbrel/umbrel/pull/1202 +releaseNotes: "" \ No newline at end of file diff --git a/bitfeed/docker-compose.yml b/bitfeed/docker-compose.yml new file mode 100644 index 0000000..e495c91 --- /dev/null +++ b/bitfeed/docker-compose.yml @@ -0,0 +1,39 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bitfeed_web_1 + APP_PORT: 80 + + web: + image: ghcr.io/bitfeed-project/bitfeed-client:v2.3.4@sha256:5d57477e69a789d547b1c6c441e0ff49e2f5ed46bf4b5ab9ca9f5403f385e926 + restart: on-failure + stop_grace_period: 1m + depends_on: + - "api" + environment: + TARGET: "dfwebos" + BACKEND_HOST: bitfeed_api_1 + BACKEND_PORT: 8315 + + api: + image: ghcr.io/bitfeed-project/bitfeed-server:v2.3.4@sha256:e38a2e07389cf6d0c519e856291e535fdd10a1e50143d528c82bfe0baf06894f + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + PORT: 8315 + BITCOIN_HOST: "$APP_BITCOIN_NODE_IP" + BITCOIN_ZMQ_RAWTX_PORT: "$APP_BITCOIN_ZMQ_RAWTX_PORT" + BITCOIN_ZMQ_RAWBLOCK_PORT: "$APP_BITCOIN_ZMQ_RAWBLOCK_PORT" + BITCOIN_ZMQ_SEQUENCE_PORT: "$APP_BITCOIN_ZMQ_SEQUENCE_PORT" + BITCOIN_RPC_PORT: "$APP_BITCOIN_RPC_PORT" + BITCOIN_RPC_USER: "$APP_BITCOIN_RPC_USER" + BITCOIN_RPC_PASS: "$APP_BITCOIN_RPC_PASS" + TARGET: "dfwebos" + RPC_POOLS: "1" + RPC_POOL_SIZE: "16" + LOG_LEVEL: "info" + volumes: + - ${APP_DATA_DIR}/data:/app/data diff --git a/bitwatch/data/.gitkeep b/bitwatch/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bitwatch/dfwebos-app.yml b/bitwatch/dfwebos-app.yml new file mode 100644 index 0000000..047b96c --- /dev/null +++ b/bitwatch/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: bitwatch +category: bitcoin +name: Bitwatch +version: "1.7.2" +tagline: Мониторинг адресов Bitcoin в режиме реального времени +description: >- + Отслеживайте адреса Bitcoin в мемпуле и в цепочке, используя mempool.space API и веб-сокет. + + + Отслеживайте изменения баланса, получайте уведомления в Telegram и управляйте ожиданиями для нескольких адресов. + + + Функции: + - Создайте список адресов в коллекциях для суммирования балансов по кошелькам. + - Подписывается на веб-сокет mempool.space (или локально размещенный) для активности мемпула в реальном времени. + - Двойная проверка данных по mempool.space (или локально размещенному) API через заданный интервал. + - Отслеживайте активность как в цепочке, так и в мемпуле. + - Настройка режима автоматического принятия или оповещения об изменениях (chain_in, Chain_out, mempool_in, mempool_out) + - по умолчанию входящие транзакции принимаются автоматически, исходящие транзакции оповещаются + - обо всех действиях сообщается один раз в настроенном соединении Telegram (даже при автоматическом принятии) + - Возможность использовать собственный локальный узел для обеспечения конфиденциальности. + + + Рекомендуется использовать Mempool + Fulcrum для частного запуска, но это не обязательно. +developer: Zap-O-Matic +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + В этом выпуске решаются проблемы конфиденциальности: + + - когда настроен локальный экземпляр мемпула, адресные ссылки открываются на этот URL-адрес службы. + +website: https://github.com/zapomatic/bitwatch +repo: https://github.com/zapomatic/bitwatch +support: https://github.com/zapomatic/bitwatch/issues +dependencies: [] +port: 3117 +path: "" +submitter: Zap-O-Matic +submission: https://github.com/getumbrel/dfwebos-apps/pull/2410 diff --git a/bitwatch/docker-compose.yml b/bitwatch/docker-compose.yml new file mode 100644 index 0000000..f737e30 --- /dev/null +++ b/bitwatch/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bitwatch_web_1 + APP_PORT: 3117 + + web: + image: ghcr.io/zapomatic/bitwatch:v1.7.2@sha256:bfc7522e0953c212010e189fdf6bd060168fb9ed283f59512600b0da0c98bd3b + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/app/server/data diff --git a/bitwatch/exports.sh b/bitwatch/exports.sh new file mode 100644 index 0000000..e69de29 diff --git a/bleskomat-server/data/.gitkeep b/bleskomat-server/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bleskomat-server/data/db/.gitkeep b/bleskomat-server/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bleskomat-server/data/web/.gitkeep b/bleskomat-server/data/web/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bleskomat-server/dfwebos-app.yml b/bleskomat-server/dfwebos-app.yml new file mode 100644 index 0000000..eb08f3a --- /dev/null +++ b/bleskomat-server/dfwebos-app.yml @@ -0,0 +1,24 @@ +manifestVersion: 1 +id: bleskomat-server +category: bitcoin +name: Bleskomat Server +version: "1.3.4" +tagline: Подключите банкомат Bleskomat к вашему узлу Lightning +description: "Банкомат Bleskomat — это банкомат следующего поколения Bitcoin Lightning." +developer: Bleskomat +website: https://www.bleskomat.com +dependencies: + - lightning +repo: https://github.com/samotari/bleskomat-server +support: https://t.me/bleskomat +port: 3333 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +torOnly: false +submitter: Charles Hill +submission: https://github.com/getumbrel/umbrel/pull/1175 +releaseNotes: "" \ No newline at end of file diff --git a/bleskomat-server/docker-compose.yml b/bleskomat-server/docker-compose.yml new file mode 100644 index 0000000..b9f1ed7 --- /dev/null +++ b/bleskomat-server/docker-compose.yml @@ -0,0 +1,44 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bleskomat-server_web_1 + APP_PORT: 3333 + PROXY_AUTH_ADD: "false" + + db: + image: postgres:10.20-stretch@sha256:130e08bb19199bd055e585e8938c5ebb0555dc13b445fad5b0bd727e4b75149c + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - $APP_DATA_DIR/data/db:/var/lib/postgresql/data + environment: + - POSTGRES_USER=bleskomat_server + - POSTGRES_DB=bleskomat_server + - POSTGRES_PASSWORD=moneyprintergobrrr + + web: + image: bleskomat/bleskomat-server:1.3.4@sha256:7bd91b896c5ca4f69b7c9509b40ccfae273cc46120ec66b2e27b295b0186f230 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + depends_on: + - db + volumes: + - $APP_DATA_DIR/data/web:/usr/src/app/data + - $APP_LIGHTNING_NODE_DATA_DIR:/lnd:ro + environment: + DEBUG: "bleskomat-server*,lnurl*" + BLESKOMAT_SERVER_HOST: "0.0.0.0" + BLESKOMAT_SERVER_PORT: 3333 + BLESKOMAT_SERVER_URL: "$APP_HIDDEN_SERVICE" + BLESKOMAT_SERVER_ENDPOINT: "/u" + BLESKOMAT_SERVER_AUTH_API_KEYS: '[]' + BLESKOMAT_SERVER_LIGHTNING: '{"backend":"lnd","config":{"cert":"/lnd/tls.cert","protocol":"https","hostname":"$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_REST_PORT","macaroon":"/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon"}}' + BLESKOMAT_SERVER_STORE: '{"backend":"knex","config":{"client":"postgres","connection":{"host":"bleskomat-server_db_1","port":5432,"user":"bleskomat_server","password":"moneyprintergobrrr","database":"bleskomat_server"}}}' + BLESKOMAT_SERVER_COINRATES_DEFAULTS_PROVIDER: "coinbase" + BLESKOMAT_SERVER_ADMIN_WEB: "true" + BLESKOMAT_SERVER_ADMIN_PASSWORD_PLAINTEXT: "$APP_PASSWORD" + BLESKOMAT_SERVER_ENV_FILEPATH: "./data/.env" diff --git a/blinko/data/app/.gitkeep b/blinko/data/app/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/blinko/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/blinko/data/db/.gitkeep b/blinko/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/blinko/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/blinko/dfwebos-app.yml b/blinko/dfwebos-app.yml new file mode 100644 index 0000000..8534bfb --- /dev/null +++ b/blinko/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: blinko +name: Blinko +tagline: Центр ваших идей и заметок на базе ИИ +category: files +version: "1.8.7" +port: 1111 +description: >- + 😉 Blinko — это приложение с открытым исходным кодом, которое сочетает в себе функции ведения заметок, микроблогов, вставки, управления задачами и функции на базе ИИ в автономной среде. Платформа позволяет пользователям быстро и эффективно фиксировать свои мысли благодаря полной поддержке Markdown для удобного форматирования. + + + Благодаря интеграции таких моделей ИИ, как OpenAI или Ollama, контент можно интеллектуально искать и организовывать. + + Если вы хотите использовать экземпляр Ollama вашего Umbrel, введите следующий URL-адрес в настройках для подключения к нему: **http://ollama_ollama_1:11434** + + + Приложение предоставляет гибкий способ управления заметками, которые могут оставаться конфиденциальными или быть общедоступными. Регулярное автоматическое резервное копирование и бесперебойный импорт и экспорт данных гарантируют, что пользователи всегда сохраняют контроль над своим контентом. Поскольку Blinko размещается на собственном хостинге, пользователи сохраняют полный суверенитет данных и могут рассчитывать на безопасную среду без коммерческих ограничений. + + + Основанный на Next.js, Blinko оптимизирован для скорости и эффективности, предлагая отзывчивый и современный пользовательский интерфейс. Будучи проектом с открытым исходным кодом, он поощряет сотрудничество и доступен бесплатно без скрытых платежей. Он предназначен для всех, кто ищет мощное и настраиваемое решение для цифровой организации. +developer: Blinko +website: https://blinko-demo.vercel.app/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2183 +repo: https://github.com/blinko-space/blinko +support: https://github.com/blinko-space/blinko/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Это обновление включает в себя новые функции, исправления ошибок и улучшения. + + + Ключевые особенности этой версии: + - Добавлен MiniMax в качестве новой встроенной опции провайдера ИИ/LLM. + - Исправлены ошибки загрузки файлов, вызванные специальными символами в именах файлов. + - Исправлены фильтры тегов, которые не очищались при сбросе поиска. + - Обновлены турецкие переводы для различных элементов интерфейс. + + + Полные примечания к выпуску доступны по адресу https://github.com/blinko-space/blinko/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/blinko/docker-compose.yml b/blinko/docker-compose.yml new file mode 100644 index 0000000..88fcdd5 --- /dev/null +++ b/blinko/docker-compose.yml @@ -0,0 +1,50 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: blinko_app_1 + APP_PORT: 1111 + PROXY_AUTH_ADD: "false" + + db: + image: postgres:17.3@sha256:6e3358e46e34dae6c184f48fd06fe1b3dbf958ad5b83480031907e52b9ec2a7d + healthcheck: + test: ["CMD", "pg_isready", "-q", "-d", "blinko", "-U", "blinkouser"] + timeout: 45s + interval: 10s + retries: 10 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data:rw + environment: + POSTGRES_DB: blinko + POSTGRES_USER: blinkouser + POSTGRES_PASSWORD: blinkopass + restart: on-failure + + app: + image: blinkospace/blinko:1.8.7@sha256:f7c1167f8c86db586599d849539a732929d89adb10977046e7b427813b2a84b4 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:1111"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + environment: + NODE_ENV: production + NEXTAUTH_URL: http://${DEVICE_DOMAIN_NAME}:1111 + NEXT_PUBLIC_BASE_URL: http://${DEVICE_DOMAIN_NAME}:1111 + NEXTAUTH_SECRET: ${APP_SEED} + DATABASE_URL: postgresql://blinkouser:blinkopass@blinko_db_1:5432/blinko + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/app:/app/.blinko:rw + logging: + options: + max-size: "10m" + max-file: "3" + depends_on: + db: + condition: service_healthy + restart: on-failure diff --git a/blockstream-blind-oracle/data/.gitkeep b/blockstream-blind-oracle/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/blockstream-blind-oracle/data/pins/.gitkeep b/blockstream-blind-oracle/data/pins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/blockstream-blind-oracle/data/server_private_key.key b/blockstream-blind-oracle/data/server_private_key.key new file mode 100644 index 0000000..6b9f637 --- /dev/null +++ b/blockstream-blind-oracle/data/server_private_key.key @@ -0,0 +1 @@ + ~hM V><+<PGM \ No newline at end of file diff --git a/blockstream-blind-oracle/data/server_public_key.pub b/blockstream-blind-oracle/data/server_public_key.pub new file mode 100644 index 0000000..ae3f953 --- /dev/null +++ b/blockstream-blind-oracle/data/server_public_key.pub @@ -0,0 +1 @@ +2`#e5`!o Q8r!,V \ No newline at end of file diff --git a/blockstream-blind-oracle/dfwebos-app.yml b/blockstream-blind-oracle/dfwebos-app.yml new file mode 100644 index 0000000..3cc1025 --- /dev/null +++ b/blockstream-blind-oracle/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1.1 +id: blockstream-blind-oracle +category: bitcoin +name: Blockstream Blind Oracle +version: "0.1.1" +tagline: Зашифруйте свой кошелек на Blockstream Jade +description: >- + Запустите личный слепой оракул, чтобы зашифровать данные кошелька на вашем компьютере. + Блокстрим Джейд. + + + Ваш слепой оракул хранит необходимый ключ для расшифровки вашего нефрита. + чтобы разблокировать ваше устройство. Это позволяет вашему нефриту оставаться защищенным от + извлечение физического ключа, при этом обеспечивая максимум 3 попытки ввода PIN-кода. + Ваш слепой оракул не узнает никакой конфиденциальной информации и не + знаю что-нибудь о кошельке Джейд. + + + Слепому оракулу требуется соединение Tor или Tailscale, если вы решите использовать + Tailscale, пожалуйста, включите MagicDNS Tailscale. +developer: Blockstream +website: https://blockstream.com +dependencies: [] +repo: https://github.com/Blockstream/blind_pin_server +support: https://t.me/blockstream_jade +port: 3344 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: '' +deterministicPassword: false +submitter: Blockstream +submission: https://github.com/getumbrel/dfwebos-apps/pull/950 +releaseNotes: "" \ No newline at end of file diff --git a/blockstream-blind-oracle/docker-compose.yml b/blockstream-blind-oracle/docker-compose.yml new file mode 100644 index 0000000..cc8abbd --- /dev/null +++ b/blockstream-blind-oracle/docker-compose.yml @@ -0,0 +1,50 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: blockstream-blind-oracle_web_1 + APP_PORT: $APP_PINSERVER_WEB_PORT + PROXY_AUTH_ADD: "false" + + node: + image: tulipan81/blind_pin_server:v0.0.7@sha256:db8ce3f8de8da6cb083d60051a8ec720d5aa311e06148b259c42c4dfb7263c63 + depends_on: + - web + - tor + restart: on-failure + stop_grace_period: 1m + ports: + - $APP_PINSERVER_PORT:8096 + volumes: + - ${APP_DATA_DIR}/data/server_public_key.pub:/server_public_key.pub + - ${APP_DATA_DIR}/data/server_private_key.key:/server_private_key.key + - ${APP_DATA_DIR}/data/pins:/pins + + web: + image: tulipan81/pinserver_web:v0.0.36@sha256:a5214dbc14538478744a6a0c6bd40f03ab8ac2990abc9038139c18901064205b + depends_on: + - tor + restart: on-failure + ports: + - $APP_PINSERVER_WEB_PORT:$APP_PINSERVER_WEB_PORT + volumes: + - ${APP_DATA_DIR}/data/server_public_key.pub:/app/server_public_key.pub + - ${APP_DATA_DIR}/data/server_private_key.key:/app/server_private_key.key + - ${APP_DATA_DIR}/data/pins:/app/pins + environment: + PINSERVER_URL_A: ${APP_PINSERVER_HIDDEN_SERVICE} + PINSERVER_PORT_A: ${APP_PINSERVER_PORT} + PINSERVER_URL_B: ${APP_TAILSCALE_URL} + PINSERVER_PORT_B: ${APP_PINSERVER_PORT} + PINSERVER_CERT: "" + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/blockstream-blind-oracle/exports.sh b/blockstream-blind-oracle/exports.sh new file mode 100755 index 0000000..887c601 --- /dev/null +++ b/blockstream-blind-oracle/exports.sh @@ -0,0 +1,8 @@ +export APP_PINSERVER_PORT="8097" +export APP_PINSERVER_WEB_PORT="8095" + +local app_pinserver_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-node/hostname" + +export APP_PINSERVER_HIDDEN_SERVICE="http://$(cat "${app_pinserver_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" + +export APP_TAILSCALE_URL="http://$(hostname 2>/dev/null || echo "notyetset.tailscale")" diff --git a/blockstream-blind-oracle/hooks/pre-start b/blockstream-blind-oracle/hooks/pre-start new file mode 100755 index 0000000..133cd29 --- /dev/null +++ b/blockstream-blind-oracle/hooks/pre-start @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Создайте скрытый сервис для контейнера узла и убедитесь, что веб-контейнер +# получает скрытую переменную среды службы при первой установке. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-node/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +# Сначала запустите веб-контейнер, чтобы обновить секрет. +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach web + +# Запустите контейнер узла, чтобы можно было создать скрытый сервис. +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach node + +echo "App: ${APP_ID} - Generating Tor Hidden Service for node container..." +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + # перезапустите веб-контейнер, чтобы получить новую скрытую службу env var + echo "App: ${APP_ID} - Restarting web container..." + "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" restart web + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/blockstream-blind-oracle/torrc.template b/blockstream-blind-oracle/torrc.template new file mode 100644 index 0000000..372c156 --- /dev/null +++ b/blockstream-blind-oracle/torrc.template @@ -0,0 +1,3 @@ +# Скрытая служба пин-сервера +HiddenServiceDir /data/app-$APP_ID-node +HiddenServicePort $APP_PINSERVER_PORT blockstream-blind-oracle_node_1:8096 diff --git a/bluewallet/data/redis/.gitkeep b/bluewallet/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/bluewallet/dfwebos-app.yml b/bluewallet/dfwebos-app.yml new file mode 100644 index 0000000..5869ad4 --- /dev/null +++ b/bluewallet/dfwebos-app.yml @@ -0,0 +1,30 @@ +manifestVersion: 1 +id: bluewallet +category: bitcoin +name: BlueWallet Lightning +version: "1.4.1" +tagline: Подключите BlueWallet к вашему узлу Lightning +description: >- + Запускайте BlueWallet наиболее конфиденциальным и безопасным способом: + удаление сторонних устройств и подключение его напрямую к Lightning вашего Umbrel + узел. + + + Вы можете связать несколько учетных записей BlueWallet, чтобы ваши друзья и родственники могли связать свой BlueWallet с вашим DFWebOS для настройки с минимальным доверием. +developer: BlueWallet +website: https://lndhub.io +dependencies: + - lightning +repo: https://github.com/BlueWallet/LndHub +support: https://t.me/bluewallet +port: 3008 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Aaron Dewes +submission: https://github.com/getumbrel/umbrel/pull/566 +releaseNotes: "" \ No newline at end of file diff --git a/bluewallet/docker-compose.yml b/bluewallet/docker-compose.yml new file mode 100644 index 0000000..6de3a4a --- /dev/null +++ b/bluewallet/docker-compose.yml @@ -0,0 +1,34 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: bluewallet_lndhub_1 + APP_PORT: 3008 + PROXY_AUTH_ADD: "false" + + redis: + image: "redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396" + user: "1000:1000" + command: "redis-server --requirepass moneyprintergobrrr" + restart: "on-failure" + stop_grace_period: "1m" + init: true + volumes: + - "${APP_DATA_DIR}/data/redis:/data" + + lndhub: + image: "bluewalletorganization/lndhub:v1.4.1@sha256:db673a8d360982984d05f97303e26dc0e5a3eea36ba54d0abdae5bbbeef31d3a" + user: "1000:1000" + depends_on: [ "redis" ] + restart: "on-failure" + stop_grace_period: "1m" + init: true + volumes: + - "${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro" + environment: + PORT: 3008 + TOR_URL: "${APP_HIDDEN_SERVICE}" + LND_CERT_FILE: "/lnd/tls.cert" + LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/admin.macaroon" + CONFIG: '{ "rateLimit": 10000, "postRateLimit": 10000, "redis": { "port": 6379, "host": "bluewallet_redis_1", "family": 4, "password": "moneyprintergobrrr", "db": 0 }, "lnd": { "url": "$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT", "password": ""}}' diff --git a/booklore/data/app/.gitkeep b/booklore/data/app/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/booklore/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/booklore/data/books/.gitkeep b/booklore/data/books/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/booklore/data/books/.gitkeep @@ -0,0 +1 @@ + diff --git a/booklore/data/db/.gitkeep b/booklore/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/booklore/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/booklore/dfwebos-app.yml b/booklore/dfwebos-app.yml new file mode 100644 index 0000000..ecf746a --- /dev/null +++ b/booklore/dfwebos-app.yml @@ -0,0 +1,62 @@ +manifestVersion: 1 +id: booklore +name: BookLore +tagline: Приложение для управления и чтения книг +category: files +version: "2.2.0" +port: 6060 +description: >- + 📖 BookLore — это современное веб-приложение, созданное для изменения способов управления и использования цифровых библиотек. Он предназначен для читателей, которые хотят внести порядок и красоту в свою коллекцию книг и комиксов, а также сделать их мгновенно доступными. Вместо того, чтобы оставлять файлы разбросанными по папкам, BookLore собирает их в центральную библиотеку, которую можно просматривать и использовать непосредственно через браузер. Он обеспечивает безупречную среду чтения, в которой организация, открытие и удовольствие сливаются воедино. + + + Одной из наиболее определяющих особенностей BookLore является способность автоматически получать подробную информацию о каждой книге. При добавлении нового файла приложение извлекает метаданные, такие как название, автор, описание и обложка, гарантируя, что библиотека всегда будет выглядеть завершенной и безупречной. Эта автоматизация устраняет утомительную задачу ввода деталей вручную и делает коллекцию похожей на профессиональный архив. Пользователи могут просматривать свои книги с уверенностью, что информация, которую они видят, точна и визуально привлекательна. + + + Организация лежит в основе опыта. Книги можно сортировать и отображать разными способами, в том числе по библиотеке, полке, жанру, автору или даже настроению. Такая гибкость позволяет каждому читателю создать систему, соответствующую личным привычкам и предпочтениям, независимо от того, стоит ли цель вести точный каталог или просто группировать заголовки естественным способом. Интерфейс поощряет исследование и позволяет легко заново открыть для себя забытые драгоценности в коллекции. + + + Само чтение становится приятным благодаря встроенной программе чтения BookLore, которая поддерживает популярные форматы, такие как PDF, EPUB и CBZ. Ридер не только функционален, но и настраиваем, позволяя настраивать темы и макеты так, чтобы каждый сеанс был комфортным. Независимо от того, предпочитает ли кто-то темный режим для ночного чтения или более светлый фон днем, приложение адаптируется к потребностям читателя. Такой уровень заботы гарантирует, что чтение всегда будет приятным, независимо от устройства или окружающей среды. + + + BookLore также создан для совместного использования и совместной работы. Он поддерживает несколько пользователей с индивидуально назначенными разрешениями, что позволяет создать общую библиотеку, не отказываясь от контроля. Некоторым пользователям может быть разрешено загружать и редактировать записи, тогда как другие могут только читать или скачивать. Такой подход делает приложение подходящим для семей, групп чтения или для всех, кто хочет организовать общее пространство для книг, сохраняя при этом порядок и последовательность. + + + Еще одним мощным элементом является способ интеграции BookLore с внешними инструментами чтения. Благодаря поддержке OPDS он может синхронизироваться со многими популярными приложениями для чтения, позволяя получать доступ к книгам за пределами браузера, оставаясь при этом частью одной коллекции. Такая гибкость гарантирует, что библиотека будет чувствовать себя подключенной и портативной, независимо от того, какая среда чтения предпочтительна. + + + Добавлять новые названия легко благодаря функции BookDrop. Вместо того, чтобы вручную управлять именами файлов и каталогами, пользователи могут просто поместить книгу в назначенное место, и BookLore автоматически обработает ее, получит правильные метаданные и добавит в коллекцию. Этот процесс проходит гладко и практически не требует взаимодействия, превращая то, что обычно является рутинной работой, в восхитительно простое действие. + + + Приложение также позволяет легко делиться отдельными книгами напрямую с другими. Благодаря встроенной функции электронной почты заголовок можно отправить прямо получателю, что особенно полезно для отправки документов или передачи книг на специальные устройства для чтения электронных книг, такие как Kindle. Это удобство устраняет разрыв между управлением коллекцией и фактической передачей книг в руки читателей. + + + Дизайн интерфейса — еще одна сильная сторона BookLore. Он отзывчив, интуитивно понятен и адаптирован к экранам разных размеров, поэтому просматривать библиотеку одинаково приятно на телефоне, планшете или настольном компьютере. Макет подчеркивает ясность и удобство использования, побуждая читателей взаимодействовать со своей коллекцией естественным и привлекательным способом. + + + По своей сути BookLore — это больше, чем просто инструмент управления. Это продуманная среда для цифрового чтения, сочетающая в себе организацию, автоматизацию, совместное использование и настройку. Объединив функциональные потребности каталогизации с эмоциональным удовольствием от чтения, он помогает превратить разрозненный набор файлов в живую, развивающуюся библиотеку, одновременно красивую и глубоко личную. +developer: BookLore +website: https://demo.booklore.dev/login +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3560 +repo: https://github.com/booklore-app/booklore +support: https://github.com/booklore-app/booklore/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg +releaseNotes: >- + Новые функции и улучшения в этом выпуске: + - Два новых режима организации библиотеки: «Книга по файлу» (каждый файл становится отдельной книгой) и «Книга по папке» (файлы в одной папке группируются в одну книгу). + - Режим автоматического обнаружения теперь помечен как устаревший и не может быть изменен в существующих библиотеках. + - Настраиваемый зум лупы и размер линзы для считывателя CBX. + - Области OIDC теперь настраиваются. + + + Полные примечания к выпуску можно найти по адресу: https://github.com/booklore-app/booklore/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/booklore/docker-compose.yml b/booklore/docker-compose.yml new file mode 100644 index 0000000..0c0424b --- /dev/null +++ b/booklore/docker-compose.yml @@ -0,0 +1,35 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: booklore_web_1 + APP_PORT: 6060 + + web: + image: booklore/booklore:v2.2.0@sha256:346064cb1fef6149dad2d8a373ea5fd1a7e3b61c22540995e40e8452136e202b + # без рута не работает + #user: "1000:1000" + restart: on-failure + environment: + DATABASE_URL: jdbc:mariadb://booklore_db_1:3306/booklore + DATABASE_USERNAME: bookloreuser + DATABASE_PASSWORD: booklorepass + depends_on: + db: + condition: service_started + volumes: + - ${APP_DATA_DIR}/data/app:/app/data + - ${APP_DATA_DIR}/data/books:/books + + db: + image: mariadb:12.0.2@sha256:b30cc65b57a11a2e791ad5c06284e599fe9f1bf3fe9081a88d85bcf36389be4a + user: "1000:1000" + restart: on-failure + environment: + MARIADB_DATABASE: booklore + MARIADB_USER: bookloreuser + MARIADB_PASSWORD: booklorepass + MARIADB_ROOT_PASSWORD: rootpass + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql diff --git a/btc-rpc-explorer/dfwebos-app.yml b/btc-rpc-explorer/dfwebos-app.yml new file mode 100644 index 0000000..5560bcc --- /dev/null +++ b/btc-rpc-explorer/dfwebos-app.yml @@ -0,0 +1,42 @@ +manifestVersion: 1 +id: btc-rpc-explorer +category: bitcoin +name: BTC RPC Explorer +version: "3.5.1" +tagline: Простой обозреватель блокчейнов без баз данных +description: >- + BTC RPC Explorer — это полнофункциональный автономный проводник для + Блокчейн Bitcoin. С помощью этого проводника вы сможете исследовать не только + базу данных блокчейна, но и изучить функциональные возможности вашего + Зонтик. + + + Он включает в себя сводную панель сети, подробный просмотр блоков, транзакций, адресов, а также инструменты анализа для просмотра статистики активности майнеров, сводку мемпула с разбивкой по комиссиям, размеру и возрасту. Вы также можете выполнять поиск по идентификатору транзакции, хешу/высоте блока и адресам. + + + Пришло время оценить «наполненность» вашего узла. +releaseNotes: >- + ⚠️ После обновления доступ к приложению может занять несколько минут. Пожалуйста, будьте терпеливы. + + + Этот выпуск включает в себя несколько небольших исправлений, а также новое дополнение к странице Bitcoin Fun. + + + Полные примечания к выпуску версий BTC RPC Explorer доступны по адресу https://github.com/janoside/btc-rpc-explorer/releases. +developer: Dan Janosik +website: https://bitcoinexplorer.org/ +dependencies: + - bitcoin + - electrs +repo: https://github.com/janoside/btc-rpc-explorer +support: https://github.com/janoside/btc-rpc-explorer/discussions +port: 3002 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "dfwebos" +deterministicPassword: true +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/334 diff --git a/btc-rpc-explorer/docker-compose.yml b/btc-rpc-explorer/docker-compose.yml new file mode 100644 index 0000000..6389e09 --- /dev/null +++ b/btc-rpc-explorer/docker-compose.yml @@ -0,0 +1,35 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: btc-rpc-explorer_web_1 + APP_PORT: 8080 + + web: + image: getumbrel/btc-rpc-explorer:v3.5.1@sha256:ebf4cdafc189761b909bb3e211b01a6b50d2f08097f3493543ed9c3174d83d89 + restart: on-failure + stop_grace_period: 1m + environment: + # Требования к докеру + BTCEXP_HOST: 0.0.0.0 + BTCEXP_PORT: 8080 + # Биткойн-ядро + BTCEXP_BITCOIND_HOST: $APP_BITCOIN_NODE_IP + BTCEXP_BITCOIND_PORT: $APP_BITCOIN_RPC_PORT + BTCEXP_BITCOIND_USER: $APP_BITCOIN_RPC_USER + BTCEXP_BITCOIND_PASS: $APP_BITCOIN_RPC_PASS + # Электрум + BTCEXP_ADDRESS_API: electrumx + BTCEXP_ELECTRUMX_SERVERS: "tcp://$APP_ELECTRS_NODE_IP:$APP_ELECTRS_NODE_PORT" + # Уровень журнала + DEBUG: "btcexp:*,electrumClient" + # Производительность + BTCEXP_SLOW_DEVICE_MODE: "true" + BTCEXP_NO_INMEMORY_RPC_CACHE: "true" + # Конфиденциальность + BTCEXP_PRIVACY_MODE: "true" + BTCEXP_NO_RATES: "true" + # Отключить RPC + BTCEXP_RPC_ALLOWALL: "false" + BTCEXP_BASIC_AUTH_PASSWORD: ${APP_PASSWORD} diff --git a/btcpay-server/data/btcpay/.gitkeep b/btcpay-server/data/btcpay/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/btcpay-server/data/nbxplorer/.gitkeep b/btcpay-server/data/nbxplorer/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/btcpay-server/data/postgres/.gitkeep b/btcpay-server/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/btcpay-server/dfwebos-app.yml b/btcpay-server/dfwebos-app.yml new file mode 100644 index 0000000..cb111b0 --- /dev/null +++ b/btcpay-server/dfwebos-app.yml @@ -0,0 +1,60 @@ +manifestVersion: 1 +id: btcpay-server +category: bitcoin +name: BTCPay Server +version: "2.3.8" +tagline: Принимайте платежи Bitcoin без комиссий и без третьих лиц +description: >- + BTCPay Server — это платежный процессор, который позволяет вам получать + платежи в Bitcoin (и альткойнах) напрямую, без комиссий, транзакционных издержек или + посредник. Это некастодиальная система выставления счетов, которая исключает + участие третьей стороны. + + + Платежи с помощью BTCPay Server поступают непосредственно в ваш кошелек, что повышает конфиденциальность и безопасность. Ваши личные ключи никогда не загружаются в ваш DFWebOS. Повторное использование адреса не требуется, поскольку каждый счет генерирует новый адрес, полученный из вашего xpubkey. + + + Вы можете не только подключить неограниченное количество магазинов и использовать сеть Lightning, но и стать платежным процессором для других. Благодаря приложениям, созданным на его основе, вы можете использовать BTCPay для получения пожертвований, запуска краудфандинговой кампании или открытия торговой точки в магазине. + + + Обратите внимание: поскольку ваш экземпляр BTCPay работает в локальной сети, при подключении удаленных приложений, таких как Shopify или WordPress, например, не удастся подключиться, если вы не настроите функцию динамического DNS (см.: https://docs.btcpayserver.org/Deployment/DynamicDNS).). +developer: BTCPay Server Foundation +website: https://btcpayserver.org +dependencies: + - bitcoin + - lightning +repo: https://github.com/btcpayserver/btcpayserver +support: https://chat.btcpayserver.org +port: 3003 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + В этом выпуске представлены новые функции и исправлены ошибки. + + + Новые возможности: + - API/Subscriptions: добавить маршрут предложения обновлений. + - API/Subscriptions: добавление плана обновлений. + - PoS: пользователи магазина только для просмотра могут просматривать ссылки для входа и счета-фактуры на странице обновления PoS. + - PoS: пользователи магазина теперь могут генерировать QR-код для входа в систему для любого другого пользователя магазина. + - Добавлена поддержка LUD-21 (LNURL-pay Verify). + - Добавить отчетность по подпискам + + Исправления ошибок: + - На странице зарезервированных адресов не должны отображаться адреса из старых кошельков. + - Срок действия входа в систему с помощью QR-кода не должен истекать всего через несколько часов. + - Избегайте двойного перевода уже локализованного содержимого представления. + - Phoenixd неправильно помечает платеж как частичный + - Счета-фактуры пополнения счета, оплаченные BOLT11, должны быть оплачены. + + Разное + - Убрана поддержка импорта ключей в кошелек Bitcoin через RPC. + + Полные примечания к выпуску можно найти по адресу https://github.com/btcpayserver/btcpayserver/releases. +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/353 diff --git a/btcpay-server/docker-compose.yml b/btcpay-server/docker-compose.yml new file mode 100644 index 0000000..0fe7d65 --- /dev/null +++ b/btcpay-server/docker-compose.yml @@ -0,0 +1,68 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: btcpay-server_web_1 + APP_PORT: 3003 + PROXY_AUTH_ADD: "false" + + nbxplorer: + image: nicolasdorier/nbxplorer:2.6.0@sha256:bd2f0f513cfed2e9ab4c72e891bb8b5b508bb7ce0026bdc39babaa9362800c1e + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + depends_on: [postgres] + volumes: + - ${APP_DATA_DIR}/data/nbxplorer:/data + environment: + NBXPLORER_DATADIR: "/data" + NBXPLORER_NETWORK: "$APP_BITCOIN_NETWORK" + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "btc" + NBXPLORER_SIGNALFILEDIR: "/data" + NBXPLORER_BTCRPCURL: "http://$APP_BITCOIN_NODE_IP:$APP_BITCOIN_RPC_PORT" + NBXPLORER_BTCNODEENDPOINT: $APP_BITCOIN_NODE_IP:${APP_BITCOIN_P2P_WHITEBIND_PORT-${APP_BITCOIN_P2P_PORT}} + NBXPLORER_BTCRPCUSER: $APP_BITCOIN_RPC_USER + NBXPLORER_BTCRPCPASSWORD: $APP_BITCOIN_RPC_PASS + NBXPLORER_POSTGRES: User ID=postgres;Host=btcpay-server_postgres_1;Port=5432;Application Name=nbxplorer;MaxPoolSize=20;Database=nbxplorer$APP_BITCOIN_NETWORK + NBXPLORER_BTCHASTXINDEX: 1 + + web: + image: btcpayserver/btcpayserver:2.3.8@sha256:027add229cca7f3606555ee57c1cfe1b21bb635b2d41ac7d62a941e005a32a8b + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + depends_on: [nbxplorer, postgres] + entrypoint: ["dotnet", "BTCPayServer.dll"] + volumes: + - ${APP_DATA_DIR}/data/btcpay:/data + - ${APP_DATA_DIR}/data/nbxplorer:/data/.nbxplorer + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + HOME: "/data" + BTCPAY_DATADIR: "/data" + BTCPAY_PLUGINDIR: "/data/plugins" + BTCPAY_DOCKERDEPLOYMENT: "false" + BTCPAY_POSTGRES: "User ID=postgres;Host=btcpay-server_postgres_1;Port=5432;Database=btcpayserver$APP_BITCOIN_NETWORK" + BTCPAY_NETWORK: "$APP_BITCOIN_NETWORK" + BTCPAY_BIND: 0.0.0.0:3003 + BTCPAY_CHAINS: "btc" + BTCPAY_BTCEXPLORERURL: "http://btcpay-server_nbxplorer_1:32838" + BTCPAY_BTCLIGHTNING: "type=lnd-rest;server=https://$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_REST_PORT/;macaroonfilepath=/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon;allowinsecure=true" + BTCPAY_SOCKSENDPOINT: $TOR_PROXY_IP:$TOR_PROXY_PORT + BTCPAY_EXPLORERPOSTGRES: User ID=postgres;Host=btcpay-server_postgres_1;Port=5432;Application Name=nbxplorer;MaxPoolSize=20;Database=nbxplorer$APP_BITCOIN_NETWORK + BTCPAY_TORSERVICES: "btcpayserver:$APP_HIDDEN_SERVICE" + + postgres: + image: btcpayserver/postgres:13.13@sha256:20d090860c929d4e86dc1068ad542cbae3e7ab3bcbc5c0c8a8b57ec91a5cbe3c + # Для успешной миграции это необходимо запустить от имени пользователя root. + # user: "1000:1000" + restart: on-failure + # https://github.com/btcpayserver/btcpayserver-docker/commit/a65e7db6851092c75c5ac6c091a5f36ccc5fc26e + command: ["-c", "random_page_cost=1.0", "-c", "shared_preload_libraries=pg_stat_statements"] + stop_grace_period: 1m + environment: + POSTGRES_HOST_AUTH_METHOD: trust + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data diff --git a/btctracker/data/.gitkeep b/btctracker/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/btctracker/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/btctracker/dfwebos-app.yml b/btctracker/dfwebos-app.yml new file mode 100644 index 0000000..dc58799 --- /dev/null +++ b/btctracker/dfwebos-app.yml @@ -0,0 +1,54 @@ +manifestVersion: 1 +id: btctracker +name: BTC Tracker +tagline: Простой, ориентированный на конфиденциальность трекер инвестиций Bitcoin. +category: bitcoin +version: "0.7.0" +port: 3947 +description: >- + BTC Tracker — это удобное, но мощное приложение, предназначенное для управления и анализа инвестиций Bitcoin. Он был создан, чтобы предложить ориентированную на конфиденциальность и простую альтернативу существующим инструментам отслеживания, которые часто перегружены ненужными функциями, сложны в настройке или предназначены для управления большими и диверсифицированными портфелями. Многие из этих инструментов требуют подключения к внешним сервисам и обмена конфиденциальной информацией, такой как адреса кошельков или истории транзакций. + + + BTC Tracker использует другой подход. Все приложение работает локально на вашем устройстве, при этом никакие данные не передаются на внешние серверы или третьим лицам. Все инвестиционные данные, транзакции и настройки надежно и конфиденциально хранятся на вашем компьютере, что дает вам полный контроль над вашей личной информацией в любое время. Это делает BTC Tracker идеальным решением для всех, кто ценит конфиденциальность и владение данными. + + + Помимо простого учета инвестиций, BTC Tracker предоставляет мощные функции анализа. Пользователи могут отслеживать эффективность своих активов Bitcoin с течением времени, рассчитывать прибыли и убытки и отслеживать рентабельность инвестиций (ROI). Приложение поддерживает несколько валют, включая евро, доллары США, фунты стерлингов, иены, швейцарские франки и злотые, что позволяет пользователям просматривать свои данные в предпочитаемой ими местной валюте. + + + Интерфейс современный и отзывчивый, предназначен для бесперебойной работы как на настольных, так и на мобильных устройствах. Пользователи могут выбирать между светлой или темной темой в зависимости от своих визуальных предпочтений. BTC Tracker также включает функции импорта и экспорта CSV, что позволяет легко переносить данные из других инструментов или создавать резервные копии. + + + В целом, BTC Tracker — это специализированный инструмент, который ставит конфиденциальность на первое место и устраняет ненужные сложности. Это дает вам понятный и безопасный способ отслеживать ваши инвестиции в Bitcoin без ущерба для ваших данных. + + + ⚠️ Чтобы использовать BTC Tracker, вам необходимо создать учетную запись пользователя. Приложение не может работать без него, так как все данные надежно привязаны к вашему личному профилю и хранятся локально. +developer: wilqq-the +website: https://github.com/wilqq-the +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2597 +repo: https://github.com/wilqq-the/BTC-Tracker +support: https://github.com/wilqq-the/BTC-Tracker/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + ✨ Новые возможности + - Exchange Auto-Sync (Beta) — подключите биржевые ключи API для автоматического импорта спотовых сделок BTC; поддерживает Binance, Kraken, Coinbase, Bybit и Gemini + - Подключения Exchange интерфейс — новая вкладка «Обмены» в настройках для управления соединениями, проверки учетных данных и запуска синхронизации. + + + 🐛 Исправлены ошибки + - Исправлена ошибка «Чистые активы» на странице «Транзакции», показывающая значения в долларах США независимо от настроек отображаемой валюты. + + + 🔧 Улучшения + - В календаре теперь есть раскрывающиеся списки месяцев/годов для более быстрой навигации. + - Сортировка и фильтрация на странице «Транзакции» теперь работают на всех страницах (на стороне сервера). + - Новый дополнительный столбец «Кошелек» в транзакциях, показывающий кошелек источника/назначения. + - Именованные кошельки теперь показывают отдельные балансы BTC на боковой панели портфеля. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/btctracker/docker-compose.yml b/btctracker/docker-compose.yml new file mode 100644 index 0000000..2940921 --- /dev/null +++ b/btctracker/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: btctracker_web_1 + APP_PORT: 3000 + + web: + image: thewilqq/btc-tracker:v0.7.0@sha256:0c7beea5e0791cc39c9294f0a62faa24aa2ef42ed04571b63977c0afe085321b + restart: on-failure + user: 1000:1000 + environment: + - NODE_ENV=production + - PORT=3000 + - DATABASE_URL=file:/app/data/bitcoin-tracker.db + - NEXTAUTH_SECRET=${APP_SEED} + - NEXTAUTH_URL=http://${DEVICE_DOMAIN_NAME}:3947 + volumes: + - ${APP_DATA_DIR}/data:/app/data diff --git a/budibase/data/budibase/.gitkeep b/budibase/data/budibase/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/budibase/dfwebos-app.yml b/budibase/dfwebos-app.yml new file mode 100644 index 0000000..5d43117 --- /dev/null +++ b/budibase/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1 +id: budibase +name: Budibase +tagline: Платформа с низким кодом, которую вам понравится использовать +category: developer +version: "3.37.0" +port: 6733 +description: >- + Budibase — это платформа с открытым исходным кодом, которая экономит инженерам сотни часов, затрачиваемых на безопасное создание форм, порталов и приложений для утверждения. + + + 🔨 Создавайте и поставляйте настоящее программное обеспечение + + В отличие от других платформ, с помощью Budibase вы создаете и поставляете настоящее программное обеспечение. Приложения Budibase имеют заложенную в них производительность и могут быть адаптированы к потребностям пользователей, обеспечивая пользователям удобство работы. + + + 🗄️ Загрузите данные или начните с нуля + + Budibase извлекает данные из нескольких источников, включая MongoDB, CouchDB, PostgreSQL, MySQL, Airtable, S3, DynamoDB или REST API. И в отличие от других платформ, с Budibase вы можете начать с нуля и создавать бизнес-приложения без источников данных. + + + 🎨 Проектируйте и создавайте приложения с помощью мощных готовых компонентов. + + Budibase сразу же поставляется с красиво оформленными и мощными компонентами, которые вы можете использовать как строительные блоки для сборки интерфейс. Мы также предлагаем множество ваших любимых вариантов стилей CSS, чтобы вы могли проявить больше творчества. + + + ⚙️ Автоматизируйте процессы, интегрируйтесь с другими инструментами и подключайтесь к вебхукам. + + Экономьте время за счет автоматизации ручных процессов и рабочих процессов. От подключения к веб-перехватчикам до автоматизации электронной почты — просто скажите Budibase, что делать, и пусть это работает на вас. +developer: Budibase +website: https://budibase.com +submitter: Sharknoon +submission: https://github.com/getumbrel/dfwebos-apps/pull/1178 +repo: https://github.com/Budibase/budibase +support: https://github.com/Budibase/budibase/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Ключевые улучшения в этом выпуске включают в себя: + - Добавлено свойство столбцов для компонента CheckboxGroup. + - Показать итерации цикла в режиме журнала автоматизации. + - Кэш строк таблицы данных теперь очищается правильно. + - При повторной синхронизации неудачные загрузки повторяются. + - Улучшено ведение журнала приема знаний. + - Улучшен размер раскрывающегося списка в конструкторах условий. + - Различные обновления безопасности зависимостей. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Budibase/budibase/releases. +dependencies: [] +path: "" diff --git a/budibase/docker-compose.yml b/budibase/docker-compose.yml new file mode 100644 index 0000000..58a0d55 --- /dev/null +++ b/budibase/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: budibase_budibase_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + budibase: + image: budibase/budibase:3.37.0@sha256:aaed399d69ab8529f92f90c9162719a03c3883f65308f6547e202d8dc7766700 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/budibase:/data + environment: + JWT_SECRET: ${APP_SEED} diff --git a/calibre-web/data/books/metadata.db b/calibre-web/data/books/metadata.db new file mode 100644 index 0000000..c32a586 Binary files /dev/null and b/calibre-web/data/books/metadata.db differ diff --git a/calibre-web/data/config/.gitkeep b/calibre-web/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/calibre-web/dfwebos-app.yml b/calibre-web/dfwebos-app.yml new file mode 100644 index 0000000..793ea61 --- /dev/null +++ b/calibre-web/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: calibre-web +category: files +name: Calibre Web +version: "0.6.26" +tagline: Чистое веб-приложение для ваших электронных книг +description: >- + Calibre-Web — это веб-приложение, предоставляющее понятный интерфейс для просмотра, чтения и загрузки электронных книг с использованием существующей базы данных Caliber. + Также можно интегрировать Google Диск и редактировать метаданные и вашу библиотеку caliber через само приложение. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + - Настройка библиотеки: на начальном экране настройки введите /books в качестве местоположения библиотеки Caliber. + - Загрузка электронных книг: если вы хотите включить функцию загрузки, выберите «Администратор» > «Редактировать базовую конфигурацию» > «Конфигурация функций» и включите «Включить загрузку». + - Документация: рекомендуется прочитать официальную документацию, доступную по адресу https://github.com/janeczku/calibre-web/wiki. +developer: Janeczku +website: https://github.com/janeczku/calibre-web +dependencies: [] +repo: https://github.com/janeczku/calibre-web +support: https://github.com/linuxserver/docker-calibre-web/issues +port: 8098 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "admin" +defaultPassword: "admin123" +torOnly: false +releaseNotes: >- + Это обновление включает в себя несколько новых функций и улучшений: + + + - Возможность многократного редактирования книг в списке книг. + - Поддержка конфигурации Instapaper для синхронизации Kobo. + - Улучшенная программа чтения EPUB с отображением количества страниц и кнопкой «Книги» для возврата в Caliber-Web. + - Дополнительная тема для чтения EPUB. + - Улучшена производительность при поисковых операциях. + - Исправлена совместимость с Калибром 9. + - Исправлены обновления статуса чтения, когда книги заархивированы. + - Исправлено массовое снятие книг с полок. + - Улучшение безопасности: ключи API больше не отображаются при экспорте конфигурации. + + + Полные примечания к выпуску можно найти здесь: https://github.com/janeczku/calibre-web/releases. +submitter: Xosten +submission: https://github.com/getumbrel/dfwebos-apps/pull/74 diff --git a/calibre-web/docker-compose.yml b/calibre-web/docker-compose.yml new file mode 100644 index 0000000..bbb1960 --- /dev/null +++ b/calibre-web/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: calibre-web_server_1 + APP_PORT: 8083 + + server: + image: linuxserver/calibre-web:0.6.26@sha256:95fa0d0d07bf1be2404236222a882a467431f34ee35ad29b6e7b3b4bca3b0376 + stop_grace_period: 1m + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${APP_DATA_DIR}/data/books:/books + restart: on-failure diff --git a/campfire/data/app/.gitkeep b/campfire/data/app/.gitkeep new file mode 100644 index 0000000..d3f5a12 --- /dev/null +++ b/campfire/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/campfire/data/redis/.gitkeep b/campfire/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/campfire/dfwebos-app.yml b/campfire/dfwebos-app.yml new file mode 100644 index 0000000..d9020ee --- /dev/null +++ b/campfire/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: campfire +category: social +name: Campfire +version: "1.4.3" +tagline: Самостоятельный чат для команд +description: >- + Campfire — это веб-приложение для командного чата. Запустите свой собственный сервер частного чата со всеми необходимыми функциями. + + + Особенности: + - Несколько чатов с контролем доступа + - Прямые сообщения между пользователями + - Вложения файлов с предварительным просмотром изображений и видео. + - Поиск по всем сообщениям + - Веб-Push-уведомления + - @упоминания для уведомления конкретных пользователей + - API с поддержкой интеграции ботов + - Современный, отзывчивый веб-интерфейс. + - Самостоятельное размещение и ориентация на конфиденциальность + + При первом запуске вам будет предложено создать учетную запись администратора. Затем этот администратор может приглашать других пользователей и управлять комнатами и разрешениями. +backupIgnore: + - data/redis/* +releaseNotes: "" +developer: basecamp +website: https://once.com/campfire +dependencies: [] +repo: https://github.com/basecamp/once-campfire +support: https://github.com/basecamp/once-campfire/issues +port: 8004 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +submitter: Maurice Wipf +submission: https://github.com/getumbrel/dfwebos-apps/pull/4196 diff --git a/campfire/docker-compose.yml b/campfire/docker-compose.yml new file mode 100644 index 0000000..275dbaf --- /dev/null +++ b/campfire/docker-compose.yml @@ -0,0 +1,50 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: campfire_server_1 + APP_PORT: 80 + PROXY_AUTH_ADD: 'false' + + server: + image: ghcr.io/basecamp/once-campfire:1.4.3@sha256:21a419dd93b10b3598a25634e5eed2305bec1c75347b260ed1665dbc70864dd8 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/app:/rails/storage + environment: + RAILS_ENV: production + SECRET_KEY_BASE: ${APP_SEED} + REDIS_URL: redis://campfire_redis_1:6379 + DISABLE_SSL: 'true' + VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY:-} + VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY:-} + SENTRY_DSN: ${SENTRY_DSN:-} + depends_on: + - redis + deploy: + # https://once.com/campfire#requirements + resources: + limits: + memory: 8G # 64G for up to 10,000 users + cpus: '4' # 32 for up to 10,000 users + reservations: + memory: 2G + cpus: '1' + restart: on-failure + + redis: + image: redis:7-alpine@sha256:ee64a64eaab618d88051c3ade8f6352d11531fcf79d9a4818b9b183d8c1d18ba + user: "1000:1000" + command: redis-server --save 60 1 --save 300 10 --save 900 100 --appendonly yes --loglevel warning + volumes: + - ${APP_DATA_DIR}/data/redis:/data + deploy: + resources: + limits: + memory: 1G + cpus: '0.5' + reservations: + memory: 256M + cpus: '0.25' + restart: on-failure diff --git a/canary/data/.gitkeep b/canary/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/canary/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/canary/dfwebos-app.yml b/canary/dfwebos-app.yml new file mode 100644 index 0000000..964ef46 --- /dev/null +++ b/canary/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1.1 +id: canary +category: bitcoin +name: Canary +version: "1.4.0" +tagline: Система раннего оповещения для холодильного склада Bitcoin +description: >- + Канарейка в холодной шахте. Когда ваши биткойны находятся в холодном хранилище, вы редко их проверяете. + + + Canary действует как система раннего предупреждения, которая предупреждает вас в момент перемещения ваших монет, мгновенно уведомляя вас о любой активности в ваших кошельках. + + + Созданный с использованием Rust и BDK, он обеспечивает анализ транзакций в реальном времени с расширенным распознаванием шаблонов (повышение комиссий RBF, ускорение CPFP) и мгновенными многоязычными уведомлениями через ntfy.sh. + + + Установите настраиваемые оповещения о балансе (равно, меньше или больше), чтобы контролировать свои активы. Идеально подходит для мониторинга холодного хранения и активов Bitcoin, которые вы активно не используете. +developer: schjonhaug +website: https://github.com/schjonhaug/canary +repo: https://github.com/schjonhaug/canary +support: https://github.com/schjonhaug/canary/issues +port: 3005 +dependencies: + - electrs +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Отслеживайте отдельные адреса Bitcoin вместе с кошельками HD с автоматическим поиском транзакций через локальный экземпляр Mempool, если он установлен на DFWebOS. Добавлена ​​возможность протестировать настройку уведомлений ntfy прямо из приложения. +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: schjonhaug +submission: https://github.com/getumbrel/dfwebos-apps/pull/4117 diff --git a/canary/docker-compose.yml b/canary/docker-compose.yml new file mode 100644 index 0000000..02bc880 --- /dev/null +++ b/canary/docker-compose.yml @@ -0,0 +1,34 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: canary_web_1 + APP_PORT: 3000 + PROXY_AUTH_WHITELIST: "/api/*" + + backend: + image: schjonhaug/canary-backend:v1.4.0@sha256:daf6920e1f0ff781c526fa92ee0e39720dd1b18b5d7e1bcdd0aeff0cb76a68ad + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + CANARY_NETWORK: mainnet + CANARY_ELECTRUM_URL: tcp://$APP_ELECTRS_NODE_IP:$APP_ELECTRS_NODE_PORT + CANARY_BIND_ADDRESS: 0.0.0.0:3001 + CANARY_DATA_DIR: /app/data + CANARY_MODE: "self-hosted" + CANARY_SYNC_INTERVAL: 60 + CANARY_MEMPOOL_PORT: ${APP_CANARY_MEMPOOL_PORT:-} + volumes: + - ${APP_DATA_DIR}/data:/app/data + + web: + image: schjonhaug/canary-frontend:v1.4.0@sha256:5c273df8bf4dc16af0edc8f6d48519ecffb4a76b49ad8eb0cef99259c6188511 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + API_URL: http://canary_backend_1:3001 + depends_on: + - backend diff --git a/canary/exports.sh b/canary/exports.sh new file mode 100644 index 0000000..2578a47 --- /dev/null +++ b/canary/exports.sh @@ -0,0 +1,10 @@ +export APP_CANARY_PORT="3005" + +# Автоматическое обнаружение дополнительной интеграции Mempool +# Если Mempool установлен на DFWebOS, передайте его порт, чтобы Canary могла подключиться к нему. +# Примечание. APP_MEMPOOL_PORT взят из exports.sh компании Mempool, который поставляется только +# если Mempool является зависимостью. Поскольку это необязательно, мы жестко запрограммируем известный порт. +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) +if echo "$installed_apps" | grep --quiet 'mempool'; then + export APP_CANARY_MEMPOOL_PORT="3006" +fi diff --git a/cashu-me/dfwebos-app.yml b/cashu-me/dfwebos-app.yml new file mode 100644 index 0000000..7e03e5e --- /dev/null +++ b/cashu-me/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1 +id: cashu-me +category: bitcoin +name: Cashu.me Wallet +version: "0.1.1" +tagline: Электронный кошелек Bitcoin с открытым исходным кодом. +description: >- + 🥜 Cashu.me — это бесплатный кошелек Bitcoin с открытым исходным кодом, построенный на протоколе электронных денег Cashu. + Он сочетает в себе скорость и эффективность электронных денег с мощью Bitcoin, обеспечивая + ваша финансовая конфиденциальность, как никогда раньше. + + ## 🚀 Зачем использовать Cashu.me? + + - 🧾 Нет KYC – вы остаетесь анонимным. + - 🔐 Конфиденциальность прежде всего: Ecash гарантирует, что данные вашего кошелька останутся вашими. + - 🪙 Bitcoin-родной – разработан с нуля для работы с Bitcoin. + - 🧠 Открытый исходный код – доверие через прозрачность. + + ## 🌐 Как это работает + + Cashu — это протокол электронных денег для Bitcoin, ориентированный на конфиденциальность. Узнайте больше на https://cashu.space. + + Чтобы использовать кошелек, вам необходимо подключиться к одному или нескольким монетным дворам Cashu по вашему выбору. Это + кошелек не связан с каким-либо конкретным монетным двором. + + ## 📦 Важно знать + + - 🔑 **Создайте резервную копию исходной фразы!** Ваши токены электронных денег хранятся локально в вашем браузере. + Если вы очистите данные браузера без резервной копии, ваши средства будут потеряны навсегда. + - 🧪 **Предупреждение о бета-тестировании**: этот кошелек находится в активной разработке и считается бета-версией программного обеспечения. + Используйте на свой страх и риск. + - 🧾 **Лицензия**: открытый исходный код и лицензия MIT. +releaseNotes: >- + Этот выпуск содержит различные улучшения и исправления ошибок. +developer: cashubtc +website: https://cashu.space +dependencies: [] +repo: https://github.com/cashubtc/cashu.me +support: https://docs.cashu.space/ +port: 3194 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: RSTMSN +submission: https://github.com/getumbrel/umbrel\-apps/pull/3044 diff --git a/cashu-me/docker-compose.yml b/cashu-me/docker-compose.yml new file mode 100644 index 0000000..5ce2bdf --- /dev/null +++ b/cashu-me/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: cashu-me_web_1 + APP_PORT: 80 + + web: + image: rstmsn/cashu-me:0.1.1@sha256:46cf3752f58e20b7fd191b270208f6f41aa143ba950fddb0efb390ed3ea2851b + restart: on-failure + stop_grace_period: 1m diff --git a/chantools/data/.gitkeep b/chantools/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/chantools/dfwebos-app.yml b/chantools/dfwebos-app.yml new file mode 100644 index 0000000..d8b2433 --- /dev/null +++ b/chantools/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1 +id: chantools +category: bitcoin +name: chantools CLI +version: "v1.14.1" +tagline: утилита восстановления каналов lnd и cln +description: >- + chantools — это утилита с интерфейсом командной строки (CLI), предназначенная для помощи + Lightning Операторы сетевых узлов спасают свои средства после получения данных + потеря. + + + Возможно, вы захотите посетить https://www.node-recovery.com/chantools, чтобы узнать больше. + информация о том, какие команды запускать и как составлять эти команды. + + + Кроме того, вам не обязательно запускать chantools специально на DFWebOS. Вы можете скачать + и запускайте его на любой машине, прямого взаимодействия с вашим Lightning нет + требуется узел, и для большинства команд вам даже не нужно ничего, кроме + ваша исходная фраза. +developer: guggero +website: https://github.com/lightninglabs/chantools +dependencies: [] +repo: https://github.com/lightninglabs/chantools +support: https://github.com/lightninglabs/chantools/issues +port: 7682 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: "" +submitter: guggero +submission: https://github.com/getumbrel/dfwebos-apps/pull/3849 diff --git a/chantools/docker-compose.yml b/chantools/docker-compose.yml new file mode 100644 index 0000000..16989cf --- /dev/null +++ b/chantools/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: chantools_chantools_1 + APP_PORT: 7682 + + chantools: + image: guggero/chantools:v0.14.1-umbrel@sha256:8994745086ab1708205f030f70e37dcfbe57154c72f27782089b229069fd8043 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1s + volumes: + - ${APP_DATA_DIR}/data:/chantools + - ${DFWEBOS_ROOT}/app-data/lightning/data/lnd:/lnd:ro + command: + - "ttyd" + - "-W" + - "-p" + - "7682" + - "bash" + - "-c" + - "/bash-wrapper.sh" diff --git a/chatbot-ui/dfwebos-app.yml b/chatbot-ui/dfwebos-app.yml new file mode 100644 index 0000000..ceaa1a5 --- /dev/null +++ b/chatbot-ui/dfwebos-app.yml @@ -0,0 +1,56 @@ +manifestVersion: 1 +id: chatbot-ui +category: ai +name: ChatBot UI +version: "2023.04.20" +tagline: ЧатGPT, но лучше +description: >- + ChatBot интерфейс — это усовершенствованный комплект чат-бота для моделей чата OpenAI, призванный имитировать интерфейс и функциональность ChatGPT. + + + Просто добавьте свой ключ OpenAI API и начните общаться! + + + Эта версия ChatBot интерфейс поддерживает модели GPT-3.5 и GPT-4. Разговоры сохраняются локально в вашем браузере. + Вы можете экспортировать и импортировать разговоры, чтобы защититься от потери данных. +developer: Mckay Wrigley +website: https://github.com/mckaywrigley/chatbot-ui +dependencies: [] +repo: https://github.com/mckaywrigley/chatbot-ui +support: https://github.com/mckaywrigley/chatbot-ui/issues +port: 10101 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Новые возможности: + + + Добавлена ​​поддержка Azure OpenAI, причем температура теперь доступна в качестве параметра. Окно чата было улучшено: появилась прикрепленная строка имени модели вверху, улучшенный макет для мобильных устройств, а также мигающий курсор для ввода. + + + Улучшения: + + + Был проведен крупный рефакторинг для улучшения удобства сопровождения кода, а также улучшенная поддержка горячих клавиш для плагинов. README теперь лучше документирует различные настройки. Были внесены улучшения в существующие переводы и добавлены новые, охватывающие румынский, польский, каталонский, бангла, турецкий и финский языки. Приложение теперь сортирует папки в алфавитном порядке и содержит обновленное демонстрационное изображение, а также улучшенную производительность. + + + Исправления ошибок: + + + Исправлено несколько проблем с плагинами Google, а также проблемы, связанные со скрытием кнопок API Key и Plugin Key, если они установлены на стороне сервера. Другие исправления включают адрес кнопки копирования в блоке кода, модальную прокрутку на небольших устройствах, исчезновение поля поиска в компоненте боковой панели, ввод сообщения не обновляется при переключении списка чата и сайт не открывается, если импортированный JSON недействителен. Были решены проблемы, связанные с исчезновением сообщений чата при редактировании, изменением цвета шрифта, перекрытием ввода в чате кнопкой прокрутки вниз, выбором подсказки и импортом. + + + Другие: + + + Во всем приложении были внесены улучшения в орфографию, краткость и формулировку, а также был создан файл Security.md для отчетности об уязвимостях. + + + Эта версия актуальна на момент фиксации fa3f6e9 здесь: github.com/mckaywrigley/chatbot-ui/commit/fa3f6e9 +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/472 \ No newline at end of file diff --git a/chatbot-ui/docker-compose.yml b/chatbot-ui/docker-compose.yml new file mode 100644 index 0000000..bde9c3e --- /dev/null +++ b/chatbot-ui/docker-compose.yml @@ -0,0 +1,10 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: chatbot-ui_web_1 + APP_PORT: 3000 + + web: + image: ghcr.io/mckaywrigley/chatbot-ui:main@sha256:569dffe6043136f03de86bde38453a58d05150f29476239dc1da4ce2573b4101 \ No newline at end of file diff --git a/chatpad-ai/dfwebos-app.yml b/chatpad-ai/dfwebos-app.yml new file mode 100644 index 0000000..a6febde --- /dev/null +++ b/chatpad-ai/dfwebos-app.yml @@ -0,0 +1,29 @@ +manifestVersion: 1 +id: chatpad-ai +category: ai +name: Chatpad AI +# использование первых 6 символов хеша фиксации в качестве номера версии (тег изображения Docker использует полный хэш фиксации) +version: "bb5f4a" +tagline: Премиальное качество интерфейс для ChatGPT +description: >- + Чатпад ИИ — это альтернативный пользовательский интерфейс для моделей чата OpenAI. Просто добавьте ключ OpenAI API, и все готово! + + + Никакого отслеживания. Никаких файлов cookie. Все ваши данные хранятся локально в вашем браузере, и вы можете экспортировать и импортировать разговоры, чтобы защитить данные от потери. +developer: Andrei Canta +website: https://github.com/deiucanta/chatpad +dependencies: [] +repo: https://github.com/deiucanta/chatpad +support: https://github.com/deiucanta/chatpad/issues +port: 10102 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + В этом выпуске добавлена ​​поддержка GPT-4o. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/604 diff --git a/chatpad-ai/docker-compose.yml b/chatpad-ai/docker-compose.yml new file mode 100644 index 0000000..6b994e4 --- /dev/null +++ b/chatpad-ai/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.9" + +services: + app_proxy: + environment: + APP_HOST: chatpad-ai_web_1 + APP_PORT: 80 + + web: + image: ghcr.io/deiucanta/chatpad:bb5f4abb36b45320df69dfccb64e734f36ca9bb3@sha256:15155e3a09fd677d578583f6bd3848c991cf768997400e37bc4c27e62a918a7e + restart: on-failure diff --git a/chromium/data/.gitkeep b/chromium/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/chromium/dfwebos-app.yml b/chromium/dfwebos-app.yml new file mode 100644 index 0000000..4d9c880 --- /dev/null +++ b/chromium/dfwebos-app.yml @@ -0,0 +1,33 @@ +manifestVersion: 1.2 +id: chromium +name: Chromium +tagline: Проект браузера с открытым исходным кодом +category: networking +version: "8d3cb5f1" +port: 30099 +description: >- + ⚠️ Уведомление об удалении: приложение Chromium отключено, поскольку больше нет обновлений, работающих без HTTPS. + + + Chromium — это проект веб-браузера с открытым исходным кодом, инициированный и в основном поддерживаемый Google. Служа основой для многих браузеров, включая Google Chrome, Microsoft Edge и Opera, Chromium стремится создать более безопасный, быстрый и стабильный способ работы в Интернете для всех пользователей. +developer: The Chromium Project +website: https://www.chromium.org/Home/ +submitter: maddog11010 +submission: https://github.com/getumbrel/dfwebos-apps/pull/1888 +repo: https://github.com/linuxserver/docker-chromium +support: https://discourse.linuxserver.io/ +dependencies: [] +path: "" +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск включает в себя различные новые функции, улучшения безопасности и производительности. + + + Рекомендуется выполнить обновление до этой версии, чтобы улучшить возможности просмотра и повысить безопасность. + + + Полные примечания к выпуску можно найти по адресу https://developer.chrome.com/release-notes. +disabled: true diff --git a/chromium/docker-compose.yml b/chromium/docker-compose.yml new file mode 100644 index 0000000..69b6483 --- /dev/null +++ b/chromium/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: chromium_chromium_1 + APP_PORT: 3000 + + chromium: + image: ghcr.io/linuxserver/chromium:version-8d3cb5f1@sha256:d7c5f7faf5fe524117fd73c4d446e1bf81bccd0d64d073a30b8c9819fdf105d6 + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data:/config + shm_size: "1gb" + restart: on-failure diff --git a/circuitbreaker/data/.gitkeep b/circuitbreaker/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/circuitbreaker/dfwebos-app.yml b/circuitbreaker/dfwebos-app.yml new file mode 100644 index 0000000..2887080 --- /dev/null +++ b/circuitbreaker/dfwebos-app.yml @@ -0,0 +1,65 @@ +manifestVersion: 1 +id: circuitbreaker +category: bitcoin +name: Circuit Breaker +version: "v0.5.1" +tagline: Брандмауэр вашего узла Lightning +description: >- + Это позволяет узлам защитить себя от переполнения HTLC. + С помощью автоматического выключателя можно установить максимальное количество находящихся в полете HTLC для каждого узла. + Например, известным и доверенным узлам может быть назначен более высокий максимум, в то время как новый канал от ранее невидимого узла может быть ограничен лишь несколькими ожидающими HTLC. + Кроме того, можно применять ограничения скорости к количеству пересылаемых HTLC. + Это обеспечивает защиту от DoS-атак и спама, которые основаны на большом количестве HTLC с быстрым разрешением. + Ограничение скорости реализовано с помощью корзины токенов. + С помощью интерфейс можно указать минимальный интервал между HTLC. + Большое количество HTLC также требуется для проверки баланса каналов. + Снижение утечки информации посредством зондирования может стать еще одной причиной установить ограничение скорости для ненадежных узлов. + + + Режимы работы + + + Существует несколько режимов, в которых может работать автоматический выключатель. Режим по умолчанию и переопределения для каждого узла можно настроить через веб-интерфейс: + + + - сбой: возврат HTLC в случае превышения ограничений. Это сводит к минимуму блокировку ликвидности на входящей стороне, но влияет на вашу репутацию как узла маршрутизации. + + + - очередь: ставить HTLC в очередь при превышении лимитов. Элементы извлекаются из очереди, когда количество ожидающих HTLC ниже максимального и ограничение скорости допускает еще одну пересылку. Этот режим наказывает вышестоящие узлы за плохой трафик, блокируя ликвидность на маршруте. Это может подтолкнуть вышестоящие узлы к установке брандмауэра и ограничить работу неправильно работающего узла. + + Даже в случае неисправности автоматического выключателя режим очереди никогда не должен вызывать принудительное закрытие канала из-за встроенной защиты lnd, которая автоматически отключает неразрешенные HTLC. + + ВНИМАНИЕ: функция автоматического сбоя еще не выпущена и запланирована на версию 0.16. В более ранних версиях lnd существует риск принудительного закрытия! + + + -queue_peer_initiated: этот режим также ставит в очередь HTLC, но только те, которые поступают через каналы, для которых мы не являемся инициатором открытия канала. Отсутствие инициатора означает, что удаленный узел несет расходы за потенциальное принудительное закрытие из-за зависания HTLC. Для каналов, которые мы инициировали, используется более безопасный режим отказа. + + - заблокировано: этот режим блокирует весь входящий трафик от узла. + + ВНИМАНИЕ: См. предупреждение режима очереди. +releaseNotes: >- + В этом выпуске автоматический выключатель обновляется до версии 0.5.1, в которой добавлена ​​функциональность для отслеживания детальной информации о пересылке HTLC, которая не сохраняется LND. Эта подробная информация о пересылке HTLC также полезна для операторов узлов, желающих получить более подробное представление о своем потоке пересылки. + + + В частности, он будет сохранять записи истории пересылки с отметками времени для успешных и неудачных HTLC (LND сохраняет только успешные пересылки и не сохраняет временные метки). По умолчанию автоматический выключатель будет хранить только 100 000 записей, поэтому максимальный объем места, занимаемого этими записями, составляет примерно 14 МБ. Это значение можно изменить с помощью флага --fwdhistorylimit, который позволяет при нулевых значениях полностью отключить эту функцию. + + + Эта функция была разработана в рамках продолжающейся работы над протоколом для исследования предотвращения атак с глушением каналов в сети (https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-August/004034.html). Добровольцы, заинтересованные в участии в этом исследовании путем выполнения *локального* анализа данных, собираемых автоматическим выключателем, могут выразить интерес по адресу https://docs.google.com/forms/d/e/1FAIpQLScm2xs4hNsrkI8UCBS4aTdO03YrmWT2X0-j6zXWpkZ7keKiUw/viewform?usp=sf_link или связаться с carla@chaincode.com для получения подробной информации. + + Версия v0.5.1 содержит исправление для версии v0.5.0, которое регистрирует HTLC, пересылаемые по неизвестным исходящим каналам, а не завершает работу. +developer: Joost Jager +website: https://github.com/joostjager +dependencies: + - lightning +repo: https://github.com/lightningequipment/circuitbreaker +support: https://github.com/lightningequipment/circuitbreaker/issues +port: 9235 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Joost Jager +submission: https://github.com/getumbrel/dfwebos-apps/pull/394 diff --git a/circuitbreaker/docker-compose.yml b/circuitbreaker/docker-compose.yml new file mode 100644 index 0000000..8958614 --- /dev/null +++ b/circuitbreaker/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: circuitbreaker_web_1 + APP_PORT: 9235 + + web: + image: ghcr.io/lightningequipment/circuitbreaker:v0.5.1@sha256:1c73f4785dad73e279cfb06ec12b004df61f5905446cec06079ace5618490a1d + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + init: true + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/data/.lnd:ro + - ${APP_DATA_DIR}/data:/data/.circuitbreaker + command: [ "--configdir=/data/.circuitbreaker", "--network=${APP_BITCOIN_NETWORK}", "--lnddir=/data/.lnd", "--rpcserver=${APP_LIGHTNING_NODE_IP}:${APP_LIGHTNING_NODE_GRPC_PORT}", "--httplisten=0.0.0.0:9235" ] diff --git a/cloudflared/.gitattributes b/cloudflared/.gitattributes new file mode 100644 index 0000000..808a4d7 --- /dev/null +++ b/cloudflared/.gitattributes @@ -0,0 +1 @@ +exports.sh -crlf \ No newline at end of file diff --git a/cloudflared/data/.gitkeep b/cloudflared/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cloudflared/dfwebos-app.yml b/cloudflared/dfwebos-app.yml new file mode 100644 index 0000000..4b8ee9c --- /dev/null +++ b/cloudflared/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1 +id: cloudflared +name: Cloudflare Tunnel +tagline: Получите доступ к своим приложениям DFWebOS из Интернета с помощью сети Cloudflare. +category: networking +version: "2026.3.0" +port: 4499 +description: >- + Запустите безопасный туннель для доступа к вашим приложениям DFWebOS из Интернета с помощью сети Cloudflare. + С Cloudflare Tunnel вы не отправляете трафик на внешний IP — вместо этого + это приложение содержит облегченный демон туннелирования (cloudflared), который создает только исходящие трафики + подключения к глобальной сети Cloudflare. + + + Чтобы использовать это приложение, у вас должна быть настроена учетная запись Cloudflare с настроенными собственными доменами. + После того, как вы настроили учетную запись Cloudflare, ознакомьтесь с этим руководством с примерами настройки собственного туннеля: + https://github.com/Radiokot/dfwebos-cloudflared/wiki/How-to-set-up-Cloudflare-Tunnel-on-your-DFWebOS + + + ⚠️ Приложения, доступные из Интернета, стимулируют злоумышленников и ботов взломать их. + Предоставляйте доступ только к безвредным приложениям или приложениям, имеющим строгий внутренний контроль доступа. + + + При поддержке Cloudflare. +developer: Radiokot +website: https://www.cloudflare.com/products/tunnel/ +submitter: Radiokot +submission: https://github.com/getumbrel/dfwebos-apps/pull/891 +repo: https://github.com/Radiokot/dfwebos-cloudflared +support: https://github.com/Radiokot/dfwebos-cloudflared/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Демон туннелирования (cloudflared) обновлен до версии 2026.3.0. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/cloudflared/docker-compose.yml b/cloudflared/docker-compose.yml new file mode 100644 index 0000000..475c73f --- /dev/null +++ b/cloudflared/docker-compose.yml @@ -0,0 +1,35 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: cloudflared-web + APP_PORT: 3000 + + web: + image: ghcr.io/radiokot/umbrel-cloudflared:1.0.2@sha256:9660fb4e90317036d2b418f1c9437cc2cdb7f7bdd8d820084237a0c37bb94f5b + hostname: cloudflared-web + restart: on-failure + stop_grace_period: 1s + depends_on: + - connector + volumes: + - ${APP_DATA_DIR}/data:/app/data + environment: + CLOUDFLARED_HOSTNAME: "cloudflared-connector" + CLOUDFLARED_METRICS_PORT: "${APP_CLOUDFLARED_METRICS_PORT}" + CLOUDFLARED_TOKEN_FILE: "/app/data/token" + + connector: + image: ghcr.io/radiokot/umbrel-cloudflared-connector:1.0.1-cf.2026.3.0@sha256:8f883ef254bbf44ba94a2647233b36723fe51cf84690ba9b5311145f3b2a8892 + hostname: cloudflared-connector + restart: on-failure + stop_grace_period: 3s + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + CLOUDFLARED_METRICS_PORT: "${APP_CLOUDFLARED_METRICS_PORT}" + CLOUDFLARED_TOKEN_FILE: "./data/token" + extra_hosts: + - "host.docker.internal:host-gateway" + - "${APP_DOMAIN}:host-gateway" diff --git a/cloudflared/exports.sh b/cloudflared/exports.sh new file mode 100644 index 0000000..c463eac --- /dev/null +++ b/cloudflared/exports.sh @@ -0,0 +1 @@ +export APP_CLOUDFLARED_METRICS_PORT="40901" \ No newline at end of file diff --git a/cobalt/dfwebos-app.yml b/cobalt/dfwebos-app.yml new file mode 100644 index 0000000..a801e8a --- /dev/null +++ b/cobalt/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: cobalt +name: cobalt +tagline: Лучший способ сохранить то, что вы любите +category: media +version: "11.5" +port: 9009 +description: >- + ⚙️ Чтобы использовать собственный экземпляр Cobalt, перейдите в настройки > экземпляры > и включите переключатель «использовать собственный сервер обработки». Добавьте http://umbrel.local:9013 в качестве своего сервера. + + + cobalt — это мощный и интуитивно понятный загрузчик мультимедиа, созданный для упрощения процесса сохранения вашего любимого контента из Интернета. Созданный для пользователей, которые хотят наслаждаться медиа, не отвлекаясь на рекламу, трекеры или платный доступ, Cobalt предлагает оптимизированный опыт. Загружаете ли вы видео, музыку, изображения или другие типы мультимедиа, кобальт действует как прокси-сервер, который извлекает контент непосредственно из источника, обеспечивая быстрый и бесперебойный процесс. + + + Что отличает Cobalt, так это его приверженность конфиденциальности и свободе пользователей. Инструмент не кэширует контент, поэтому вы всегда загружаете его непосредственно из исходного источника. Он также позволяет избежать ненужных отвлекающих факторов, таких как реклама или вмешательство третьих лиц, позволяя вам наслаждаться более чистым, быстрым и надежным процессом поиска мультимедиа. + + + Cobalt идеально подходит для всех, кто ценит простоту и контроль над загрузкой мультимедиа. Благодаря простому в использовании интерфейсу и эффективной функциональности вы можете быстро получать и сохранять контент без обычных хлопот. Независимо от того, являетесь ли вы энтузиастом, коллекционирующим медиа, или просто пытаетесь получить доступ к контенту без ограничений, Cobalt позволяет легко загружать то, что вам нравится, в любое время. +developer: imputnet +website: https://cobalt.tools/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2174 +repo: https://github.com/imputnet/cobalt +support: https://github.com/imputnet/cobalt/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + В этом выпуске представлены новые функции и улучшения. + + + Ключевые моменты: + - Добавлена поддержка явного указания токенов доступа в Vimeo API. + - Обеспечена обратная совместимость с существующими токенами доступа. + - Обновлен youtubei.js до версии 15.1.1 для повышения стабильности и совместимости. + - Общие улучшения веб-функциональности и функциональности API. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/cobalt/docker-compose.yml b/cobalt/docker-compose.yml new file mode 100644 index 0000000..f5b6166 --- /dev/null +++ b/cobalt/docker-compose.yml @@ -0,0 +1,21 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: cobalt_web_1 + APP_PORT: 9001 + PROXY_AUTH_ADD: "false" + web: + image: dennysubke/cobalt:11.5@sha256:e3b1626d6026f1f714643ad9b0b14257b0ce9ab4cedb3a5e041eb540f2e12798 + read_only: true + restart: on-failure + user: "1000:1000" + ports: + - 9013:9000 + environment: + API_URL: "http://${DEVICE_DOMAIN_NAME}:9013/" + API_AUTH_REQUIRED: 0 + DURATION_LIMIT: 86400 + + diff --git a/code-server/data/.bashrc b/code-server/data/.bashrc new file mode 100644 index 0000000..2a1ba76 --- /dev/null +++ b/code-server/data/.bashrc @@ -0,0 +1 @@ +source "${HOME}/.loaders/init.sh" diff --git a/code-server/data/.loaders/init.sh b/code-server/data/.loaders/init.sh new file mode 100644 index 0000000..3868b6e --- /dev/null +++ b/code-server/data/.loaders/init.sh @@ -0,0 +1,41 @@ +lazy_load() { + local command="${1}" + local loader="${2}" + local arguments=${@:3} + if ! which $command > /dev/null 2>&1 + then + echo "${command} isn't installed yet, installing it now..." + $loader + echo "${command} installed! Running \"${command} ${arguments}\"..." + echo + fi + $command $arguments +} + +setup_node() { + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash + export NVM_DIR="$HOME/.nvm" + source "${HOME}/.nvm/nvm.sh" + source "${HOME}/.nvm/bash_completion" + nvm install stable +} + +setup_python() { + sudo apt-get update + sudo apt-get install -y python3 python3-pip +} + +setup_rust() { + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source "${HOME}/.cargo/env" +} + +alias node="lazy_load node setup_node" +alias npm="lazy_load npm setup_node" +alias python3="lazy_load python3 setup_python" +alias pip3="lazy_load pip3 setup_python" +alias python="python3" +alias pip="pip3" +alias rustup="lazy_load rustup setup_rust" +alias rustc="lazy_load rustc setup_rust" +alias cargo="lazy_load cargo setup_rust" diff --git a/code-server/dfwebos-app.yml b/code-server/dfwebos-app.yml new file mode 100644 index 0000000..28eb59d --- /dev/null +++ b/code-server/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: code-server +category: developer +name: code-server +version: "4.117.0" +tagline: Запустите VS Code на своем DFWebOS и получите к нему доступ в браузере, чтобы вы могли кодировать на любом устройстве с согласованной средой разработки. +description: >- + Запустите VS Code на своем DFWebOS и получите к нему доступ в браузере, чтобы вы могли + код на любом устройстве с согласованной средой разработки. Таким образом, вы можете + используйте свой DFWebOS не только для написания кода с любого устройства и в любом месте, но и для ускорения + тесты, компиляции, загрузки и многое другое. + + + Выполняя все интенсивные задачи на своем DFWebOS, вы продлеваете срок службы батареи своих устройств, когда находитесь в пути. +releaseNotes: >- + В этом выпуске базовый редактор VS Code обновляется до версии 1.117.0. + + + Полные примечания к выпуску доступны по адресу https://github.com/coder/code-server/releases. +developer: Coder +website: https://coder.com +dependencies: [] +repo: https://github.com/cdr/code-server +support: https://github.com/cdr/code-server/discussions +port: 8091 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +deterministicPassword: true +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/14f8b3aec8cb99ef0940ba0cd9df25b7126a95cc diff --git a/code-server/docker-compose.yml b/code-server/docker-compose.yml new file mode 100644 index 0000000..c8cb65d --- /dev/null +++ b/code-server/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: code-server_server_1 + APP_PORT: 8080 + + server: + image: codercom/code-server:4.117.0@sha256:e6702766518b961c7e3c41095c129c7c9a82b041578c53326c52fa363a057727 + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data:/home/coder + environment: + PASSWORD: $APP_PASSWORD diff --git a/convertx/data/app/.gitkeep b/convertx/data/app/.gitkeep new file mode 100644 index 0000000..d3f5a12 --- /dev/null +++ b/convertx/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/convertx/dfwebos-app.yml b/convertx/dfwebos-app.yml new file mode 100644 index 0000000..3f74d2f --- /dev/null +++ b/convertx/dfwebos-app.yml @@ -0,0 +1,42 @@ +manifestVersion: 1 +id: convertx +category: files +name: ConvertX +version: "0.17.0" +tagline: Самостоятельный онлайн-конвертер файлов +description: > + ConvertX — это автономный конвертер файлов. Поддерживает более тысячи различных форматов. + + + Особенности: + - Конвертируйте файлы в разные форматы. + - Обработка нескольких файлов одновременно + - Защита паролем + - Несколько аккаунтов +developer: Emrik Östling +website: https://github.com/C4illin/ConvertX +dependencies: [] +repo: https://github.com/C4illin/ConvertX +support: https://github.com/C4illin/ConvertX/issues +port: 8386 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +releaseNotes: >- + В этом выпуске представлены два новых конвертера и новое массовое удаление интерфейс. + + + Ключевые моменты включают в себя: + - Добавлен конвертер VCF в CSV. + - Добавлено массовое удаление заданий с помощью множественного выбора интерфейс. + - Добавлена реализация markitdown для конвертации документов. + - Исправлено отображение часового пояса на странице истории. + - Добавлена поддержка файлов .wma в FFMPEG. + + + Полный список изменений можно найти по адресу https://github.com/C4illin/ConvertX/releases. +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3832 diff --git a/convertx/docker-compose.yml b/convertx/docker-compose.yml new file mode 100644 index 0000000..73a2e5b --- /dev/null +++ b/convertx/docker-compose.yml @@ -0,0 +1,16 @@ +services: + app_proxy: + environment: + APP_HOST: convertx_server_1 + APP_PORT: 3000 + + server: + image: c4illin/convertx:v0.17.0@sha256:e1f85be04bbaf8a55ead9261194c3ae0fa0957d303ea537127154860b2552afd + restart: on-failure + stop_grace_period: 1m + user: "1000:1000" + environment: + - HTTP_ALLOWED=true + - ACCOUNT_REGISTRATION=true + volumes: + - ${APP_DATA_DIR}/data/app:/app/data diff --git a/copyparty/data/config/config.conf b/copyparty/data/config/config.conf new file mode 100644 index 0000000..db543ad --- /dev/null +++ b/copyparty/data/config/config.conf @@ -0,0 +1,15 @@ +[global] + p: 3923 # Listen on port 3923 + e2dsa # Scans all mounted volumes (including readonly ones) + e2ts # Scans for tags in all files that don't have tags yet + z # Enable Zeroconf discovery + shr: /shr # Base URL where shares will be accessible from + hist: /cfg/hists/ # Database (fs+media index) and thumbnail cache + +[accounts] + admin: dfwebos # Create a user named admin with password + +[/] + /media # Expose /media as the root volume + accs: + rwmda: admin # The user "admin" gets read-write-move-delete-admin diff --git a/copyparty/data/cp_data/.gitkeep b/copyparty/data/cp_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/copyparty/data/cp_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/copyparty/data/media/.gitkeep b/copyparty/data/media/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/copyparty/data/media/.gitkeep @@ -0,0 +1 @@ + diff --git a/copyparty/data/shared/.gitkeep b/copyparty/data/shared/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/copyparty/data/shared/.gitkeep @@ -0,0 +1 @@ + diff --git a/copyparty/dfwebos-app.yml b/copyparty/dfwebos-app.yml new file mode 100644 index 0000000..041441a --- /dev/null +++ b/copyparty/dfwebos-app.yml @@ -0,0 +1,56 @@ +manifestVersion: 1 +id: copyparty +name: copyparty +tagline: "Универсальный файловый сервер «все в одном» для всего" +category: files +version: "1.20.14" +port: 3923 +description: >- + 📼 copyparty — это легкая, но невероятно мощная платформа для обмена файлами, созданная для того, чтобы дать вам полный контроль над вашими данными. Он превращает любую среду в персональный и полнофункциональный файловый центр, где вы можете загружать, скачивать, редактировать и упорядочивать файлы непосредственно через интуитивно понятный веб-интерфейс. Все происходит в браузере без необходимости использования дополнительного программного обеспечения, что делает его быстрым, удобным и доступным практически из любого места. + + + По своей сути, copyparty построен на простоте и гибкости. Он поддерживает несколько стандартных протоколов, таких как HTTP, WebDAV и FTP, что обеспечивает плавную интеграцию с широким спектром клиентов и устройств. Вы можете перетаскивать файлы в браузер, создавать папки, управлять разрешениями и мгновенно делиться ссылками с другими. Если вы хотите разместить временную область загрузки, организовать долгосрочные архивы или поддерживать личное рабочее пространство, copyparty легко адаптируется к вашим потребностям. + + + Помимо базового управления файлами, copyparty включает в себя расширенные инструменты, которые делают его гораздо большим, чем обычный файловый сервер. Он поставляется со встроенным медиаплеером для потоковой передачи музыки и видео прямо из вашей библиотеки, а также с текстовыми редакторами и редакторами Markdown для редактирования документов в браузере. Вы можете помечать файлы, выполнять мгновенный поиск в больших каталогах и даже при необходимости восстанавливать предыдущие версии файлов. + + + Безопасность и персонализация также лежат в основе дизайна copyparty. Он предлагает детальный контроль доступа пользователей, защиту паролем и точно настроенные параметры конфигурации в соответствии с вашим рабочим процессом. Интерфейс можно полностью изменить с помощью пользовательских тем CSS, что позволяет легко создать индивидуальный внешний вид. + + + По сути, copyparty — это не просто файловый сервер, а гибкая и элегантная экосистема управления файлами. Оно может служить частным облаком, рабочим пространством для совместной работы или полнофункциональным цифровым архивом, сочетая производительность, простоту и свободу в одном компактном приложении. +developer: "9001" +website: https://github.com/9001/copyparty +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3889 +repo: https://github.com/9001/copyparty +support: https://github.com/9001/copyparty/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Новые возможности в этом выпуске: + - Добавлена возможность автоматического выбора языка интерфейс в зависимости от языковых настроек браузера. + - Добавлена опция автоматического переключения между видом списка и сеткой в зависимости от содержимого папки. + - Аудиоплеер теперь может воспроизводить файлы фоновой музыки для Nintendo 3DS и Wii (bcstm, bfstm, brstm). + - Добавлены единицы размера файла на основе 1000 наряду с существующими единицами измерения на основе 1024. + - Файлы конфигурации теперь могут использовать переменные среды ОС в разделе глобальной конфигурации. + - Добавлена возможность указать сертификат и ключ TLS в виде отдельных файлов. + + + Исправления в этом выпуске: + - Исправлена ошибка, из-за которой клиенты WebDAV не могли использовать PROPFIND для файла с бесконечной глубиной. + - Исправлен сбой аудиоплеера, когда папка содержит файл m3u и порядок сортировки изменяется во время воспроизведения. + - Исправлена ошибка, из-за которой при загрузке безымянных текстовых файлов неправильно получалось расширение .ssa вместо .txt, когда был включен магический режим. + - Исправлена функция Tail/follow, засылающая журнал повторными сообщениями о повторном открытии в некоторых файловых системах. + - Исправлены аудиофайлы, встроенные в видеофайлы, которые отображались неправильно. + + + Полные примечания к выпуску можно найти по адресу https://github.com/9001/copyparty/releases. +dependencies: [] +path: "" +defaultUsername: "admin" +defaultPassword: "dfwebos" diff --git a/copyparty/docker-compose.yml b/copyparty/docker-compose.yml new file mode 100644 index 0000000..cbc944a --- /dev/null +++ b/copyparty/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: copyparty_web_1 + APP_PORT: 3923 + + web: + image: ghcr.io/9001/copyparty-ac:1.20.14@sha256:d8aa87141c6fb35e9e620d477acb7f7950a0917d7fdd9c5b23cdf53de185835d + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/config/config.conf:/cfg/config.conf:ro + - ${APP_DATA_DIR}/data/cp_data:/cfg/hists + - ${APP_DATA_DIR}/data/shared:/shr + - ${APP_DATA_DIR}/data/media:/media + environment: + TZ: UTC diff --git a/core-lightning-rtl/data/boltz/.gitkeep b/core-lightning-rtl/data/boltz/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/core-lightning-rtl/data/rtl/RTL-Config.json b/core-lightning-rtl/data/rtl/RTL-Config.json new file mode 100644 index 0000000..9311631 --- /dev/null +++ b/core-lightning-rtl/data/rtl/RTL-Config.json @@ -0,0 +1,25 @@ +{ + "multiPass": "$APP_PASSWORD", + "defaultNodeIndex": 1, + "SSO": { + "rtlSSO": 0, + "rtlCookiePath": "", + "logoutRedirectLink": "" + }, + "nodes": [ + { + "index": 1, + "lnNode": "CLN DFWebOS", + "authentication": { + "configPath": "" + }, + "settings": { + "userPersona": "MERCHANT", + "themeMode": "NIGHT", + "themeColor": "YELLOW", + "enableLogging": true, + "fiatConversion": true + } + } + ] +} \ No newline at end of file diff --git a/core-lightning-rtl/dfwebos-app.yml b/core-lightning-rtl/dfwebos-app.yml new file mode 100644 index 0000000..9965769 --- /dev/null +++ b/core-lightning-rtl/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1.1 +id: core-lightning-rtl +category: bitcoin +name: Ride The Lightning (Core Lightning) +version: "0.15.8-beta-boltz" +tagline: Управляйте своим узлом Core Lightning с помощью RTL +description: >- + Эта версия RTL специально настроена для использования вашего узла Core Lightning. + + RTL предоставляет полнофункциональный, независимый от устройства веб-интерфейс пользователя, помогающий + управлять работой узла Lightning. Это обеспечивает полный контроль над вашей молнией. + узел с богатым функционалом для базового уровня Bitcoin и сети Lightning. + Некоторые интересные функции, доступные на RTL: + + + - Богатая панель инструментов с двумя вариантами макета + + - Отправка/получение средств по цепочке + + - Богатое управление каналами с расширенными функциями, такими как оценка баланса, циклическая ребалансировка и т. д. + + - Управление платежами и счетами с помощью QR-кодов + + - Анализ маршрутизации пересылаемых платежей + + - Резервные копии каналов + + - Подробные отчеты о маршрутизации и истории транзакций + + - Дополнительный интерфейс Loop для замены подводных лодок. + + - Настраиваемый интерфейс с несколькими цветовыми схемами и темными/светлыми режимами. +developer: Shahana and Suheb +website: https://github.com/Ride-The-Lightning/RTL +dependencies: + - core-lightning +repo: https://github.com/Ride-The-Lightning/RTL +support: https://github.com/Ride-The-Lightning/RTL/issues/new +port: 3100 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +releaseNotes: >- + В этом выпуске Ride The Lightning обновляется до версии 0.15.8-бета и включает следующие изменения: + - Исправлена ошибка платежей, появившаяся в версии 0.15.7. + - Исправлены заметки, которые не отображались для стандартных счетов. + - Прокачать Boltz-клиент до версии 2.11.1. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/7 diff --git a/core-lightning-rtl/docker-compose.yml b/core-lightning-rtl/docker-compose.yml new file mode 100644 index 0000000..192df7a --- /dev/null +++ b/core-lightning-rtl/docker-compose.yml @@ -0,0 +1,45 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: core-lightning-rtl_web_1 + APP_PORT: 3000 + + web: + image: shahanafarooqui/rtl:v0.15.8@sha256:54131152cba02a968d83fcc89c07426bfb979372f743649ba1e2626426a34dc0 + restart: on-failure + environment: + PORT: 3000 + APP_PASSWORD: $APP_PASSWORD + LN_IMPLEMENTATION: "CLN" + lnImplementation: "CLN" + LN_SERVER_URL: "https://$APP_CORE_LIGHTNING_DAEMON_IP:$CORE_LIGHTNING_REST_PORT" + RUNE_PATH: "/root/.lightning/.commando-env" + RTL_CONFIG_PATH: "/data" + RTL_COOKIE_PATH: "/data/.cookie" + BLOCK_EXPLORER_URL: "${APP_CORE_RTL_BLOCK_EXPLORER_URL}" + # Больц + BOLTZ_SERVER_URL: "https://core-lightning-rtl_boltz_1:9003" + BOLTZ_MACAROON_PATH: "/boltz/.boltz/macaroons" + volumes: + - "${APP_DATA_DIR}/data/rtl:/data" + - "${APP_CORE_LIGHTNING_DATA_DIR}:/root/.lightning:ro" + - "${APP_DATA_DIR}/data/boltz:/boltz:ro" + + boltz: + image: boltz/boltz-client:2.11.1@sha256:25a984cc76b0d232573cffe7088c2cb2e50b6b8955e09f68d768ef5fc7215c1d + restart: "on-failure" + stop_grace_period: "1m" + environment: + HOME: "/data" + volumes: + - "${APP_DATA_DIR}/data/boltz:/data" + - "${APP_CORE_LIGHTNING_DATA_DIR}:/cln:ro" + command: + - --network=$APP_BITCOIN_NETWORK + - --cln.datadir=/cln + - --cln.host=$APP_CORE_LIGHTNING_DAEMON_IP + - --cln.port=$APP_CORE_LIGHTNING_DAEMON_GRPC_PORT + - --rpc.rest.host="0.0.0.0" + - --rpc.rest.port="9003" diff --git a/core-lightning-rtl/exports.sh b/core-lightning-rtl/exports.sh new file mode 100644 index 0000000..c341e09 --- /dev/null +++ b/core-lightning-rtl/exports.sh @@ -0,0 +1,17 @@ +# Динамический экспорт обозревателя блоков URL в зависимости от того, в какой сети работает узел Биткойн. + +BLOCK_EXPLORER_URL="https://mempool.space" + +# TODO: проверьте наличие приложения DFWebOS Mempool и используйте локальный URL, если он установлен. +# например, "${DFWEBOS_ROOT}/scripts/app" ls-installed | grep --quiet 'mempool' +# RTL понадобится способ динамического создания URL для локального приложения Mempool. +# например, localExplorerUrl = `${window.location.protocol}//${window.location.hostname}:${LOCAL_MEMPOOL_PORT}`; + +# Добавьте APP_BITCOIN_NETWORK к URL, если это не основная сеть (например, https://mempool.space/testnet)). +if [[ "${APP_BITCOIN_NETWORK}" != "mainnet" ]]; then + echo "Bitcoin is running on ${APP_BITCOIN_NETWORK}. Appending ${APP_BITCOIN_NETWORK} to the block explorer URL." + BLOCK_EXPLORER_URL="${BLOCK_EXPLORER_URL}/${APP_BITCOIN_NETWORK}" + echo "BLOCK_EXPLORER_URL: ${BLOCK_EXPLORER_URL}" +fi + +export APP_CORE_RTL_BLOCK_EXPLORER_URL="${BLOCK_EXPLORER_URL}" \ No newline at end of file diff --git a/core-lightning-rtl/hooks/pre-start b/core-lightning-rtl/hooks/pre-start new file mode 100755 index 0000000..5d9d9e6 --- /dev/null +++ b/core-lightning-rtl/hooks/pre-start @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# Этот предварительный сценарий гарантирует, что устаревшие установки Core-Lightning-RTL получат файл RTL-Config.json по умолчанию при обновлении. + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +RTL_CONFIG_FILE="${APP_DATA_DIR}/data/rtl/RTL-Config.json" + +# Мы проверяем, не существует ли конфигурационный файл RTL или он существует, а для параметра lnImplementation установлено значение "LND", что говорит нам о том, что это устаревшая установка RTL, которую необходимо изменить. +if [ ! -f "${RTL_CONFIG_FILE}" ] || jq -e '.nodes[] | select(.lnImplementation == "LND")' "${RTL_CONFIG_FILE}" >/dev/null 2>&1; then + echo "Creating a default configuration file for RTL." + # overwrite/create — файл конфигурации RTL с настройками для CLN DFWebOS. + # RTL-Config.json принадлежит пользователю root + cat >"${RTL_CONFIG_FILE}" <- + Начните работу с сетью Lightning сегодня с Core Lightning — + Lightning Реализация сети с упором на соответствие спецификациям и производительность. + + + Сеть Lightning позволяет проводить сверхдешевые и почти мгновенные транзакции Bitcoin. + Запустив узел Lightning, вы можете не только самостоятельно хранить свой Bitcoin на + Lightning, но также зарабатывайте саты, маршрутизируя платежи в сети. + + + Ядро Lightning и приложение на базе Blockstream. +developer: Core Lightning +website: https://blockstream.com/lightning/ +dependencies: + - bitcoin +repo: https://github.com/ElementsProject/cln-application +support: https://community.corelightning.org/home +port: 2103 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +submitter: Blockstream +submission: https://github.com/getumbrel/dfwebos-apps/pull/475 +releaseNotes: >- + В этом выпуске исправления устранена проблема, из-за которой пользователи не могли подключить внешние клиенты кошелька к своему узлу Core Lightning. + Если ранее вам не удавалось подключить кошелек, перейдите в «Настройки» в правом верхнем углу > Подключить кошелек > и выберите желаемый метод подключения, чтобы просмотреть исправленные сведения о подключении. + + + **Примечания к предыдущим выпускам:** + + + Это обновляет cln-application до версии 25.07.3, Lightningd до версии 25.09.3 и заменяет устаревшую службу c-lightning-rest встроенным интерфейсом REST Lightningd. + + + **Приложение CLN v25.07.3:** + - Превентивное устранение широко распространенной угрозы экосистемы npm, связанной с вредоносным кодом в популярных пакетах. + - Обновлены и оптимизированы переменные среды для улучшения конфигурации и удобства использования. + - Добавлена поддержка запуска Commando через безопасные соединения WebSocket (например, wss-proxy). + - Удалена версия и суффикс фиксации из псевдонимов узлов для более четкого отображения. + - Обновлен формат даты BKPR с ГГГГ-ММ-ДД на стандарт интерфейс ДД МММ, ГГГГ. + - Добавлена поддержка бесконечной прокрутки для транзакций BTC, предложений CLN и транзакций CLN. + + **CLN v25.09.3:** + - Бухгалтер был перенесен в Core Lightning, что позволяет отслеживать платежи, сборы и деятельность каналов. + - xpay теперь может напрямую оплачивать адреса BIP353 (например, ₿cln@blockstream.com) и простые предложения без дополнительных действий. + - Улучшена обратная связь при сбое создания канала из-за ограничений емкости. + - Теперь ограничено количество частей, на которые платеж может быть разделен на xpay и Askrene. + - Reckless теперь поддерживает современный менеджер пакетов uv для плагинов Python. + - Улучшено количество возможных решений, найденных в основном цикле решателя на аскене. + - Улучшения сращивания обеспечивают лучшую совместимость с Eclair и непрерывную маршрутизацию во время модификации канала. + - Повысьте безопасность, гарантируя, что все одноранговые узлы поддерживают тип канала. + - Секреты оплаты теперь обязательны в счетах BOLT11 для лучшей защиты платежей. +backupIgnore: + - data/lightningd/bitcoin/lightningd.sqlite3 diff --git a/core-lightning/docker-compose.yml b/core-lightning/docker-compose.yml new file mode 100644 index 0000000..65072e0 --- /dev/null +++ b/core-lightning/docker-compose.yml @@ -0,0 +1,89 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_CORE_LIGHTNING_IP + APP_PORT: $APP_CORE_LIGHTNING_PORT + app: + image: ghcr.io/elementsproject/cln-application:25.07.3@sha256:af22cebd21e1175651049d09cf2dd547da569fddd55e4c7766e5956bd47e91fa + command: npm run start + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/app:${APP_CONFIG_DIR} + - ${APP_CORE_LIGHTNING_DATA_DIR}:${CORE_LIGHTNING_PATH} + environment: + APP_SINGLE_SIGN_ON: "true" + APP_HOST: ${APP_CORE_LIGHTNING_IP} + APP_PORT: ${APP_CORE_LIGHTNING_PORT} + BITCOIN_NETWORK: ${APP_CORE_LIGHTNING_BITCOIN_NETWORK} + LIGHTNING_HOST: ${APP_CORE_LIGHTNING_DAEMON_IP} + LIGHTNING_TOR_HOST: ${APP_CORE_LIGHTNING_HIDDEN_SERVICE} + APP_CONNECT: COMMANDO + APP_MODE: ${APP_MODE} + LIGHTNING_DATA_DIR: ${CORE_LIGHTNING_PATH} + APP_CONFIG_FILE: ${APP_CONFIG_DIR}/config.json + LIGHTNING_VARS_FILE: ${COMMANDO_CONFIG} + LIGHTNING_WS_PROTOCOL: ws + LIGHTNING_WS_PORT: ${APP_CORE_LIGHTNING_WEBSOCKET_PORT} + LIGHTNING_WS_CLIENT_KEY_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/client-key.pem + LIGHTNING_WS_CLIENT_CERT_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/client.pem + LIGHTNING_WS_CA_CERT_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/ca.pem + LIGHTNING_REST_PROTOCOL: https + LIGHTNING_REST_HOST: ${DEVICE_DOMAIN_NAME} + LIGHTNING_REST_TOR_HOST: ${APP_CORE_LIGHTNING_HIDDEN_SERVICE} + LIGHTNING_REST_PORT: ${CORE_LIGHTNING_REST_PORT} + LIGHTNING_REST_CLIENT_KEY_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/client-key.pem + LIGHTNING_REST_CLIENT_CERT_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/client.pem + LIGHTNING_REST_CA_CERT_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/ca.pem + LIGHTNING_GRPC_HOST: ${DEVICE_DOMAIN_NAME} + LIGHTNING_GRPC_TOR_HOST: ${APP_CORE_LIGHTNING_HIDDEN_SERVICE} + LIGHTNING_GRPC_PORT: ${APP_CORE_LIGHTNING_DAEMON_GRPC_PORT} + LIGHTNING_GRPC_PROTO_PATH: https://github.com/ElementsProject/lightning/tree/master/cln-grpc/proto + LIGHTNING_GRPC_CLIENT_KEY_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/client-key.pem + LIGHTNING_GRPC_CLIENT_CERT_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/client.pem + LIGHTNING_GRPC_CA_CERT_FILE: ${CORE_LIGHTNING_PATH}/${APP_CORE_LIGHTNING_BITCOIN_NETWORK}/ca.pem + networks: + default: + ipv4_address: ${APP_CORE_LIGHTNING_IP} + lightningd: + image: elementsproject/lightningd:v25.09.3@sha256:ca95610b7db23a8fad5cf6e36044ecd4ff9124dcc7dae50bd151084d39feaf70 + restart: on-failure + ports: + - ${APP_CORE_LIGHTNING_DAEMON_PORT}:9735 + - ${APP_CORE_LIGHTNING_WEBSOCKET_PORT}:${APP_CORE_LIGHTNING_WEBSOCKET_PORT} + - ${CORE_LIGHTNING_REST_PORT}:${CORE_LIGHTNING_REST_PORT} + - ${APP_CORE_LIGHTNING_DAEMON_GRPC_PORT}:${APP_CORE_LIGHTNING_DAEMON_GRPC_PORT} + environment: + LIGHTNINGD_NETWORK: ${APP_CORE_LIGHTNING_BITCOIN_NETWORK} + command: + - --bitcoin-rpcconnect=${APP_BITCOIN_NODE_IP} + - --bitcoin-rpcuser=${APP_BITCOIN_RPC_USER} + - --bitcoin-rpcpassword=${APP_BITCOIN_RPC_PASS} + - --bitcoin-rpcport=${APP_BITCOIN_RPC_PORT} + - --lightning-dir=${CORE_LIGHTNING_PATH} + - --proxy=${TOR_PROXY_IP}:${TOR_PROXY_PORT} + - --bind-addr=${APP_CORE_LIGHTNING_DAEMON_IP}:9735 + - --bind-addr=ws:${APP_CORE_LIGHTNING_DAEMON_IP}:${APP_CORE_LIGHTNING_WEBSOCKET_PORT} + - --addr=statictor:${TOR_PROXY_IP}:29051 + - --tor-service-password=${TOR_PASSWORD} + - --network=${APP_CORE_LIGHTNING_BITCOIN_NETWORK} + - --database-upgrade=true + - --grpc-host=${APP_CORE_LIGHTNING_DAEMON_IP} + - --grpc-port=${APP_CORE_LIGHTNING_DAEMON_GRPC_PORT} + - --clnrest-host=${APP_CORE_LIGHTNING_DAEMON_IP} + - --clnrest-port=${CORE_LIGHTNING_REST_PORT} + volumes: + - "${APP_CORE_LIGHTNING_DATA_DIR}:${CORE_LIGHTNING_PATH}" + networks: + default: + ipv4_address: ${APP_CORE_LIGHTNING_DAEMON_IP} + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/core-lightning/exports.sh b/core-lightning/exports.sh new file mode 100644 index 0000000..6007c29 --- /dev/null +++ b/core-lightning/exports.sh @@ -0,0 +1,21 @@ +export APP_CORE_LIGHTNING_IP="10.21.21.94" +export APP_CORE_LIGHTNING_PORT="2103" +export APP_CORE_LIGHTNING_DAEMON_IP="10.21.21.96" +export APP_CORE_LIGHTNING_DAEMON_PORT="9736" +export APP_CORE_LIGHTNING_DAEMON_GRPC_PORT="2110" +export APP_CORE_LIGHTNING_WEBSOCKET_PORT="2106" +export APP_CORE_LIGHTNING_DATA_DIR="${EXPORTS_APP_DIR}/data/lightningd" +export CORE_LIGHTNING_REST_PORT="2107" + +export APP_CORE_LIGHTNING_BITCOIN_NETWORK="${APP_BITCOIN_NETWORK}" +if [[ "${APP_BITCOIN_NETWORK}" == "mainnet" ]]; then + export APP_CORE_LIGHTNING_BITCOIN_NETWORK="bitcoin" +fi + +lightning_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rest/hostname" +export APP_CORE_LIGHTNING_HIDDEN_SERVICE="$(cat "${lightning_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" + +export APP_CONFIG_DIR="/data/app" +export APP_MODE="production" +export CORE_LIGHTNING_PATH="/root/.lightning" +export COMMANDO_CONFIG="/root/.lightning/.commando-env" diff --git a/core-lightning/hooks/pre-start b/core-lightning/hooks/pre-start new file mode 100755 index 0000000..e2b0733 --- /dev/null +++ b/core-lightning/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку Core Lightning до тех пор, пока скрытая служба Tor REST не будет готова. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rest/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach lightningd +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/core-lightning/torrc.template b/core-lightning/torrc.template new file mode 100644 index 0000000..8698beb --- /dev/null +++ b/core-lightning/torrc.template @@ -0,0 +1,3 @@ +# CLNRest Скрытая служба +HiddenServiceDir /data/app-$APP_ID-rest +HiddenServicePort $CORE_LIGHTNING_REST_PORT $APP_CORE_LIGHTNING_DAEMON_IP:$CORE_LIGHTNING_REST_PORT \ No newline at end of file diff --git a/databag/data/databag/.gitkeep b/databag/data/databag/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/databag/dfwebos-app.yml b/databag/dfwebos-app.yml new file mode 100644 index 0000000..943a1b7 --- /dev/null +++ b/databag/dfwebos-app.yml @@ -0,0 +1,66 @@ +manifestVersion: 1 +id: databag +category: social +name: Databag +version: "0.1.17" +tagline: Крошечный автономный федеративный мессенджер для децентрализованной сети. +description: >- + Databag — это автономная служба обмена сообщениями. Примечательные особенности включают в себя: + + + - Децентрализованный (прямая связь между приложением и серверным узлом) + + - Федеративный (аккаунты на разных узлах могут взаимодействовать) + + - Идентификация на основе публично-частного ключа (не привязана к какой-либо цепочке блоков или домену хостинга) + + - Сквозное шифрование (администратор хостинга не может просматривать запечатанные темы, по умолчанию незапечатанные) + + - Аудио и видеозвонки (для обхода nat требуется отдельный сервер ретрансляции) + + - Тематические обсуждения (сообщения, организованные по темам, а не по контактам) + + - Легкий вес (сервер может работать на Raspberry Pi Zero v1.3) + + - Низкая задержка (использование веб-сокетов для push-событий во избежание опроса) + + - Неограниченное количество учетных записей на узел (хост для всей вашей семьи) + + - Мобильные оповещения о новых контактах, сообщениях и звонках (поддерживает UnifiedPush, FCM, APN) + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ 🛠️ + + + 🆕 Создание учетных записей. Вы можете создавать учетные записи и ссылки на учетные записи на панели администратора. + + + - Чтобы получить доступ к панели администратора, щелкните значок шестеренки настроек, расположенный в правом верхнем углу страницы входа в приложение. + + + - Используйте «пароль приложения по умолчанию», который отображается на странице Databag в магазине приложений (отображается после установки). + + + 🌐 Конфигурация HTTPS. Браузерная версия приложения может работать через http, но для мобильного приложения требуется https. Вы можете настроить https с помощью приложения Cloudflare Tunnel, доступного в магазине приложений. + Подробную инструкцию по настройке туннеля можно найти здесь: https://github.com/Radiokot/dfwebos-cloudflared/wiki/How-to-set-up-Cloudflare-Tunnel-on-your-DFWebOS-Server +releaseNotes: >- + Это обновление Databag вносит следующие изменения: + + - Обновлены последние версии инструментов Go с исправлениями безопасности. + + - Добавлена ​​поддержка повторителя push-уведомлений вместо устаревшей Firebase API. +dependencies: [] +developer: Pierre Balzack +website: https://github.com/balzack/databag +repo: https://github.com/balzack/databag +support: https://github.com/balzack/databag/discussions +port: 7000 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +deterministicPassword: true +submitter: Pierre Balzack +submission: https://github.com/getumbrel/umbrel/pull/649 diff --git a/databag/docker-compose.yml b/databag/docker-compose.yml new file mode 100644 index 0000000..083624e --- /dev/null +++ b/databag/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: databag_web_1 + APP_PORT: 7000 + + web: + image: balzack/databag:0.1.17@sha256:934ef8c1a8b6da5b222dea7d6c6ddc0b5b8c24b314a8038686a98cab14e0466d + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/databag:/var/lib/databag + environment: + ADMIN: $APP_PASSWORD diff --git a/datum/data/settings/datum_gateway_config.json b/datum/data/settings/datum_gateway_config.json new file mode 100644 index 0000000..595893c --- /dev/null +++ b/datum/data/settings/datum_gateway_config.json @@ -0,0 +1,29 @@ +{ + "bitcoind": { + "rpcuser": "auto-configure-on-install", + "rpcpassword": "auto-configure-on-install", + "rpcurl": "auto-configure-on-install" + }, + "api": { + "listen_port": 21000, + "modify_conf": true, + "admin_password": "dfwebos" + + }, + "mining": { + "pool_address": "", + "coinbase_tag_primary": "DATUM on DFWebOS", + "coinbase_tag_secondary": "DATUM on DFWebOS" + }, + "stratum": { + "listen_port": 23334 + }, + "logger": { + "log_level_console": 2 + }, + "datum": { + "pool_pass_workers": true, + "pool_pass_full_users": true, + "pooled_mining_only": true + } +} \ No newline at end of file diff --git a/datum/dfwebos-app.yml b/datum/dfwebos-app.yml new file mode 100644 index 0000000..4dd460e --- /dev/null +++ b/datum/dfwebos-app.yml @@ -0,0 +1,90 @@ +manifestVersion: 1.1 +id: datum +category: bitcoin +name: DATUM +version: "v0.4.1-beta" +tagline: Самостоятельный майнинг Bitcoin +description: >- + ⚙️ Пожалуйста, прочитайте важные инструкции по настройке внизу этой страницы. + + + DATUM (децентрализованные альтернативные шаблоны для универсального майнинга) — это совершенно новый протокол майнинга биткойнов, который позволяет вам создавать собственные шаблоны блоков, используя собственный узел Bitcoin. + + + Используя DATUM на DFWebOS, вы получаете полный контроль над настройкой майнинга Bitcoin, что позволяет вам использовать собственный узел Bitcoin для создания пользовательских шаблонов блоков и напрямую передавать работу вашим майнерам. + DATUM позволяет вам заниматься майнингом в одиночку или участвовать в майнинге пула, оптимизируя создание блоков, не полагаясь на сторонние серверы. + + + С годами майнинг двинулся в сторону централизации, при этом крупные пулы доминировали в этом процессе и превратили майнеров в простых продавцов хеш-мощности. + DATUM стремится вернуть основной принцип Bitcoin: децентрализацию, снова предоставляя майнерам прямой контроль над процессом создания блоков. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + + ### Bitcoin Узел: + + + Datum автоматически подключается к вашему приложению Bitcoin Knots после установки. Для майнинга не требуется полный архивный узел, поэтому вы можете сократить свой узел, чтобы сэкономить дисковое пространство. Вы можете настроить этот параметр в разделе «Дополнительные настройки» приложения Bitcoin Knots. + + + ### Настройка DATUM: + + + ⚠️ Команда DATUM знает, что Safari в настоящее время нельзя использовать для изменения настроек конфигурации в приложении. Пожалуйста, используйте другой браузер для изменения настроек. + + + Чтобы DATUM был полностью инициализирован, вам необходимо добавить свой адрес Bitcoin на вкладке «Конфигурация» в приложении DATUM. + Это адрес по умолчанию, на который будут отправлены награды за майнинг. Ваши учетные данные в приложении, необходимые для изменения настроек, можно найти по адресу + щелкнув правой кнопкой мыши значок приложения DATUM на главном экране DFWebOS и выбрав «Показать учетные данные по умолчанию». + + + ### Подключение вашего майнера: + + + Подробности настройки см. в документации вашего майнера. Вот общее руководство по подключению вашего майнера к Datum: + + - URL-адрес уровня/хост/пул: используйте IP-адрес вашего устройства DFWebOS (находится в настройках на главном экране DFWebOS) и порт 23334. + например, stratum+tcp://192.168.4.56:23334 + + - Имя пользователя/работник: введите адрес Bitcoin для получения вознаграждений OCEAN. При желании добавьте имя работника после точки, чтобы идентифицировать вашего майнера. + например, bc1qabcdefghijklmnopqrstuvwxyz или bc1qabcdefghijklmnopqrstuvwxyz.bitaxe + + - Пароль: оставьте пустым или введите любое значение, если ваш майнер требует пароль. + + + Для получения дополнительной информации о Datum посетите https://github.com/OCEAN-xyz/datum_gateway. +developer: OCEAN +website: https://ocean.xyz +dependencies: + - bitcoin-knots +repo: https://github.com/OCEAN-xyz/datum_gateway +support: https://ocean.xyz +port: 21000 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "admin" +deterministicPassword: true +releaseNotes: >- + Полные примечания к выпуску можно найти по адресу https://github.com/OCEAN-xyz/datum_gateway/releases/tag/v0.4.1beta. +widgets: + - id: "stats" + type: "three-stats" + refresh: "30s" + endpoint: "datum:21000/dfwebos-api" + link: "" + example: + type: "three-stats" + link: "" + items: + - title: "Connections" + text: "12" + subtext: "Worker" + - title: "Hashrate" + text: "21" + subtext: "TH/s" +submitter: Léo Haf +submission: https://github.com/getumbrel/dfwebos-apps/pull/1661 diff --git a/datum/docker-compose.yml b/datum/docker-compose.yml new file mode 100644 index 0000000..6b311be --- /dev/null +++ b/datum/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: datum_datum_1 + APP_PORT: 21000 + + datum: + image: ghcr.io/retropex/datum:v1.14@sha256:c67ac8afb4f90f6f8090b8130ab834b20177efb2246895084525a15078cedc47 + entrypoint: ["/app/datum_gateway"] + command: ["--config=/app/conf/datum_gateway_config.json"] + user: 1000:1000 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/settings/:/app/conf/ + ports: + # порт шлюза данных + - 23334:23334 diff --git a/datum/hooks/pre-start b/datum/hooks/pre-start new file mode 100755 index 0000000..1698da2 --- /dev/null +++ b/datum/hooks/pre-start @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +# Этот предварительный скрипт обновляет файл datum_gateway_config.json пользовательской конфигурацией Knots RPC. + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +DATUM_CONFIG_FILE="${APP_DATA_DIR}/data/settings/datum_gateway_config.json" +DESIRED_OWNER="1000:1000" + +if [ -f "${DATUM_CONFIG_FILE}" ]; then + echo "Checking DATUM configuration file." + + # Проверьте, установлены ли переменные среды Knots + if [ -z "${APP_BITCOIN_KNOTS_RPC_USER}" ] || [ -z "${APP_BITCOIN_KNOTS_RPC_PASS}" ] || [ -z "${APP_BITCOIN_KNOTS_NODE_IP}" ] || [ -z "${APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT}" ]; then + echo "Missing Bitcoin Knots environment variables. Exiting." + exit 1 + fi + + echo "Initializing DATUM config with Bitcoin Knots RPC settings." + + # Обновите конфигурацию + jq --arg user "$APP_BITCOIN_KNOTS_RPC_USER" \ + --arg pass "$APP_BITCOIN_KNOTS_RPC_PASS" \ + --arg url "${APP_BITCOIN_KNOTS_NODE_IP}:${APP_BITCOIN_KNOTS_INTERNAL_RPC_PORT}" \ + '.bitcoind.rpcuser = $user | + .bitcoind.rpcpassword = $pass | + .bitcoind.rpcurl = $url' \ + "$DATUM_CONFIG_FILE" > "${DATUM_CONFIG_FILE}.tmp" && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" + + # сбросить разрешения + chown "${DESIRED_OWNER}" "$DATUM_CONFIG_FILE" + + echo "DATUM configuration updated successfully." + + if jq -e '.mining.pool_address | select(. == "enter your bitcoin address")' "$DATUM_CONFIG_FILE" > /dev/null; then + + echo "Bitcoin address invalid, resetting." + jq -e '.mining.pool_address = ""' "$DATUM_CONFIG_FILE" > "$DATUM_CONFIG_FILE".tmp && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" + + fi + + if jq -e '.api.modify_conf' "$DATUM_CONFIG_FILE" > /dev/null; then + echo "New API already set" + else + jq -e '.api.modify_conf = true' "$DATUM_CONFIG_FILE" > "$DATUM_CONFIG_FILE".tmp && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" + fi + + if jq -e '.api.admin_password | select(. == "dfwebos")' "$DATUM_CONFIG_FILE" > /dev/null; then + jq --arg password "$APP_PASSWORD" -e '.api.admin_password = $password' "$DATUM_CONFIG_FILE" > "$DATUM_CONFIG_FILE".tmp && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" + elif ! jq -e '.api.admin_password' "$DATUM_CONFIG_FILE" > /dev/null; then + jq --arg password "$APP_PASSWORD" -e '.api.admin_password = $password' "$DATUM_CONFIG_FILE" > "$DATUM_CONFIG_FILE".tmp && mv "${DATUM_CONFIG_FILE}.tmp" "$DATUM_CONFIG_FILE" + else + echo "Admin password already set" + fi + +else + echo "DATUM configuration file not found. Installation incomplete." + exit 1 +fi diff --git a/dcrpulse/data/.gitkeep b/dcrpulse/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dcrpulse/dfwebos-app.yml b/dcrpulse/dfwebos-app.yml new file mode 100644 index 0000000..b4fe0ed --- /dev/null +++ b/dcrpulse/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: dcrpulse +name: Decred Pulse +tagline: Полная нода Decred с кошельком только для просмотра и обозревателем блоков без базы данных +category: crypto +version: "1.0.3" +port: 8735 +description: |- + Decred Pulse — это комплексная панель управления для запуска полного узла Decred. + + + Он включает в себя: + - Полный узел блокчейна dcrd с индексацией транзакций + - dcrwallet с поддержкой кошелька только для просмотра + - Блок-проводник с мониторингом мемпула и расходов. + - Управление кошельком только для просмотра с поддержкой импорта xpub + + + Идеально подходит для мониторинга узлов и кошельков Decred, изучения блокчейна или мониторинга сетевой активности Decred. + + + Особенности: + - Полная нода Decred + - Поддержка кошелька + - Современный обозреватель блоков + - Мониторинг мемпула + - Кошелек только для просмотра с импортом из xpub +developer: Decred +website: https://decred.org +submitter: karamble +repo: https://github.com/karamble/dcrpulse +support: https://github.com/karamble/dcrpulse/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +releaseNotes: "" +path: "" +defaultUsername: "" +defaultPassword: "" +submission: https://github.com/getumbrel/dfwebos-apps/pull/4121 + diff --git a/dcrpulse/docker-compose.yml b/dcrpulse/docker-compose.yml new file mode 100644 index 0000000..2f88be3 --- /dev/null +++ b/dcrpulse/docker-compose.yml @@ -0,0 +1,84 @@ +services: + app_proxy: + environment: + APP_HOST: dcrpulse_dashboard_1 + APP_PORT: 8735 + + dcrd: + image: ghcr.io/karamble/dcrpulse-dcrd:2.1.3@sha256:d5c6c04af574d949db5b32181e3d8f223707e019c7745b45424634f3af6714a3 + user: "1000:1000" + restart: on-failure + stop_grace_period: 5m + volumes: + - ${APP_DATA_DIR}/data:/app-data + environment: + DCRD_RPC_USER: ${APP_SEED} + DCRD_RPC_PASS: ${APP_SEED} + DCRD_EXTRA_ARGS: --txindex + TOR_PROXY_IP: ${TOR_PROXY_IP} + TOR_PROXY_PORT: ${TOR_PROXY_PORT} + command: > + --rpcuser=${APP_SEED} + --rpcpass=${APP_SEED} + --rpclisten=0.0.0.0:9109 + --rpccert=/app-data/dcrd/rpc.cert + --rpckey=/app-data/dcrd/rpc.key + healthcheck: + test: ["CMD", "sh", "-c", "curl -k -u ${APP_SEED}:${APP_SEED} -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"1.0\",\"method\":\"getinfo\",\"params\":[],\"id\":1}' https://127.0.0.1:9109 || exit 1"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 120s + + dcrwallet: + image: ghcr.io/karamble/dcrpulse-dcrwallet:2.1.3@sha256:94caf7a6c57d49083dd73003f94e4dec804a85ed18c5413f489e4550ffb2f395 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/app-data + environment: + DCRWALLET_RPC_USER: ${APP_SEED} + DCRWALLET_RPC_PASS: ${APP_SEED} + DCRD_RPC_USER: ${APP_SEED} + DCRD_RPC_PASS: ${APP_SEED} + DCRD_RPC_HOST: dcrd + DCRWALLET_GAP_LIMIT: 400 + TOR_PROXY_IP: ${TOR_PROXY_IP} + TOR_PROXY_PORT: ${TOR_PROXY_PORT} + command: > + --gaplimit=400 + depends_on: + dcrd: + condition: service_healthy + healthcheck: + test: ["CMD", "sh", "-c", "nc -z 127.0.0.1 9110 && nc -z 127.0.0.1 9111 || exit 1"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 10s + + dashboard: + image: ghcr.io/karamble/dcrpulse-dashboard:1.0.3@sha256:d6d991150e570b3c473873f350a122f2cfc3ffd43e50b87e15821777c28d70dc + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/app-data:ro + environment: + PORT: 8735 + DCRD_RPC_HOST: dcrd + DCRD_RPC_PORT: 9109 + DCRD_RPC_USER: ${APP_SEED} + DCRD_RPC_PASS: ${APP_SEED} + DCRD_RPC_CERT: /app-data/dcrd/rpc.cert + DCRWALLET_RPC_HOST: dcrwallet + DCRWALLET_RPC_PORT: 9110 + DCRWALLET_GRPC_PORT: 9111 + DCRWALLET_RPC_USER: ${APP_SEED} + DCRWALLET_RPC_PASS: ${APP_SEED} + DCRWALLET_RPC_CERT: /app-data/dcrd/rpc.cert + depends_on: + dcrd: + condition: service_healthy + dcrwallet: + condition: service_healthy diff --git a/deepsea/data/config.json b/deepsea/data/config.json new file mode 100644 index 0000000..6a6c39a --- /dev/null +++ b/deepsea/data/config.json @@ -0,0 +1,7 @@ +{ + "power_cost": 0.0, + "power_usage": 0.0, + "wallet": "yourwallethere", + "timezone": "America/Los_Angeles", + "network_fee": 0.0 +} diff --git a/deepsea/dfwebos-app.yml b/deepsea/dfwebos-app.yml new file mode 100644 index 0000000..97637be --- /dev/null +++ b/deepsea/dfwebos-app.yml @@ -0,0 +1,115 @@ +manifestVersion: 1.1 +id: deepsea +category: bitcoin +name: DeepSea Dashboard +version: "2.0.4" +tagline: Приборная панель Ocean в стиле ретро +description: >- + Эта панель мониторинга с открытым исходным кодом отслеживает майнеры пула Ocean.xyz в режиме реального времени. Он представляет хэшрейт, прибыльность, статус работника и сетевые показатели через ретро-интерфейс терминала. Цель состоит в том, чтобы держать майнеров в полной мере с минимальными усилиями. + + + ## ⚡ Ключевые особенности + + - **⛏️ Показатели майнинга в реальном времени** + - Отслеживание хэшрейта в реальном времени: 60 с, 10 минут, 3 часа и 24 часа. + - Анализ прибыльности в BTC и фиате + - Автоматический расчет выручки, себестоимости и чистой прибыли + - Спарклайн-диаграммы тенденций для быстрого получения информации. + - Оценка безубыточности тарифа на электроэнергию + - Динамическое моделирование вознаграждения (субсидия + сборы) + - Статистика сети: цена BTC, сложность, хэшрейт, среднее значение. сборы + - Мониторинг выплат и расчетное время выплаты + - Уведомления о комиссиях пула с выделением оптимального диапазона + - Интеграция Ocean.xyz API + резервный вариант парсера + - Режим низкого хешрейта сохраняет графики видимыми во время спадов + + - **🌍 Мультивалютная поддержка** + - Выбирайте доллары США, евро, фунты стерлингов, JPY, CNY, BRL и другие валюты. + - Курсы валют в реальном времени + - Постоянные валютные предпочтения + - Все доходы и уведомления отображаются в вашей валюте. + + - **👷 Управление работниками** + - Централизованный обзор автопарка + - Статус онлайн/оффлайн в режиме реального времени + - Хешрейт, температура и скорость приема на уровне устройства + - Сортировка и фильтрация по типу или статусу + + - **🔎 Bitcoin Обозреватель блоков** + - Просмотр последних блоков и данных транзакций + - Подробная информация о комиссиях, майнере и сложности + - Постоянный таймер блокировки и плавная нумерация страниц + + - **💰 Обзор доходов** + - Ежедневная, еженедельная, ежемесячная разбивка + - Живая конвертация фиатных денег + - Архив исторических доходов + + - **🛡️ Устойчивость системы** + - Автоматическое переподключение при потере сети + - Резервный вариант опроса в случае сбоя прямой трансляции. + - Резервный вариант Ocean API для рабочего списка. + - Синхронизация между вкладками браузера + - Контроль здоровья и защита памяти + - Удобная страница ошибок с централизованной обработкой. + + - **🖥️ Ретро и современность интерфейс** + - Эстетика в стиле терминала с последовательностью загрузки + - Плавающий системный монитор + - Адаптивный для мобильных и настольных компьютеров + - Режим **DeepSea** по умолчанию со звуком окружающего океана. + - Редактируемый в реальном времени макет контейнера Docker + + ## 🌊 Тема DeepSea + + - Захватывающая подводная графика с цифровыми искажениями. + - Окружающий звук с плавными переходами + - Тема Bitcoin переключается между пользовательскими звуковыми дорожками. + - Управление звуком с помощью ползунка громкости и постоянного воспроизведения + - Дополнительная поддержка нового звука блока (block.mp3). + + ## 💻 Тема «Секретная матрица» (пасхальное яйцо) + + - Разблокировка с помощью кода Konami + «МАТРИЦА» + - Анимированный зеленый матричный дождь с редкими буквами слов. + - Ярлык для мобильного телефона: коснитесь заголовка карты 10 раз. + - Ярлык загрузки: нажмите «M», чтобы войти в матричный режим. + - Вращающиеся падающие символы со шрифтами в стиле кино. + - Звук в стиле «Матрица» с собственным саундтреком. + + + (Этот проект сообщества не связан с OCEAN) +developer: DJ O₿leezy +website: https://github.com/Djobleezy/DeepSea-Dashboard +dependencies: [] +repo: https://github.com/Djobleezy/DeepSea-Dashboard +support: https://github.com/Djobleezy/DeepSea-Dashboard/issues +port: 5300 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +releaseNotes: >- + В этом выпуске представлены новые функции, а также различные улучшения и исправления. + + + Ключевые моменты: + - Полная перестройка платформы с помощью React 18 + TypeScript + интерфейс Vite и серверная часть FastAPI. + - Плавный переход от загрузки к панели управления с анимацией затухания, индикатором выполнения и 25-шаговой последовательностью загрузки. + - Сохраняемые на сервере рабочие настройки (переопределения ASIC, тариф на электроэнергию), синхронизируемые между устройствами через SQLite + - Полная поддержка Progressive Web App (PWA) с автономным резервным режимом, приглашением на установку и кэшированием Service Worker с поддержкой версий. + - Устранено мерцание диаграммы благодаря обновлениям на месте и ретроактивному заполнению аннотаций блоков. + - Режим низкого хешрейта для BitAxe и мелких майнеров со сниженными порогами уведомлений. + - Три иммерсивные темы: Bitcoin, DeepSea (пузыри/капли) и Matrix (дождь/глифы). + - Богатая страница рабочих с выбором модели ASIC, расчетами затрат/прибыли автопарка и возможностью ручной настройки. + - Исправлена точность переопределения ASIC для расчета мощности, затрат и прибыли. + - Усиленная защита от обхода пути SPA и проверка хоста сервисного работника. + - Расширенная история графиков до 30 дней с защитой нулевого хэшрейта и блоками автоматического масштабирования. + - Обновлены инструменты внешнего интерфейса: Vite 8.0.1, Vitest 4.1.0, @vitejs/plugin-react v6. + + + Полные примечания к выпуску доступны по адресу https://github.com/Djobleezy/DeepSea-Dashboard/releases. +submitter: Léo Haf +submission: https://github.com/getumbrel/dfwebos-apps/pull/2635 diff --git a/deepsea/docker-compose.yml b/deepsea/docker-compose.yml new file mode 100644 index 0000000..e950987 --- /dev/null +++ b/deepsea/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: deepsea_deepsea_1 + APP_PORT: 8000 + + deepsea: + image: ghcr.io/retropex/custom-dashboard-ocean:v2.0.4@sha256:9f5b867d2c5873390614a5e7faab58a4279ecd451b47b2db0034308c35166970 + user: 1000:1000 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/app/data/ diff --git a/dockge/data/docker/.gitkeep b/dockge/data/docker/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dockge/data/dockge-data/.gitkeep b/dockge/data/dockge-data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dockge/data/dockge-stacks/.gitkeep b/dockge/data/dockge-stacks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dockge/dfwebos-app.yml b/dockge/dfwebos-app.yml new file mode 100644 index 0000000..251331c --- /dev/null +++ b/dockge/dfwebos-app.yml @@ -0,0 +1,61 @@ +manifestVersion: 1 +id: dockge +category: developer +name: Dockge +version: "1.5.0" +tagline: Простой в использовании менеджер Docker Compose +description: >- + ⚠️ Обязательно используйте в файлах Compose только тома с именем Docker. Данные в томах, подключенных к привязке + будут потеряны при перезапуске или обновлении Dockge. + + + ⚠️ Следите за конфликтами портов между вашими пользовательскими контейнерами Docker и вашими приложениями DFWebOS. + + + Dockge — это модный, простой в использовании и реактивный автономный стек-ориентированный менеджер docker compose.yaml для запуска пользовательского Docker. + контейнеры. Он имеет интерактивный редактор для создания файлов и может конвертировать команды запуска Docker в docker-compose.yaml. + + + 🛠️ Dockge on DFWebOS предназначен для опытных пользователей. Чтобы избежать проблем, следуйте этим рекомендациям: + + + 1. Сохранение данных. Обязательно используйте в файлах Compose только тома с именем Docker. Данные в привязке + тома будут потеряны при перезапуске или обновлении Dockge. + + + 2. Управление портами: следите за потенциальными конфликтами портов между вашими пользовательскими контейнерами и сервисными контейнерами DFWebOS. + приложения, которые вы установили из DFWebOS App Store или магазинов приложений сообщества, а также любые приложения, которые вы собираетесь установить в будущем. + + + 3. Политика перезапуска контейнера. Установите для контейнеров политику перезапуска «если не остановлен» или «всегда». Это позволит вашим контейнерам + для автоматического перезапуска при перезапуске или обновлении Dockge. + + + 4. Доступ к контейнерам через Интернет. Получите доступ к своим пользовательским контейнерам в браузере по адресу dfwebos.local:PORT_NUMBER. Например, для контейнера + с веб-сайтом интерфейс, работающим на порту 4545, перейдите по адресу dfwebos.local:4545, чтобы получить к нему доступ. +website: https://dockge.kuma.pet +dependencies: [] +repo: https://github.com/louislam/dockge +support: https://github.com/louislam/dockge/issues +port: 5005 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Это обновление содержит новые функции, улучшения и исправления ошибок, которые сделают работу с Dockge еще более удобной. + + + Основные моменты: + - Клиент Docker и обновления Docker Compose. + - Улучшения консоли + - Различные исправления ошибок и улучшения. + + + Полные примечания к выпуску можно найти по адресу https://github.com/louislam/dockge/releases. +developer: Louis Lam +submitter: FlyinPancake +submission: https://github.com/getumbrel/dfwebos-apps/pull/1106 diff --git a/dockge/docker-compose.yml b/dockge/docker-compose.yml new file mode 100644 index 0000000..a2669c1 --- /dev/null +++ b/dockge/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: dockge_dockge_1 + APP_PORT: 5001 + + docker: + image: docker:24.0.5-dind@sha256:3c6e4dca7a63c9a32a4e00da40461ce067f255987ccc9721cf18ffa087bcd1ef + privileged: true + network_mode: host + stop_grace_period: 1m + restart: on-failure + environment: + DOCKER_ENSURE_BRIDGE: "dind0:10.32.0.1/16" + entrypoint: /entrypoint.sh + command: > + dockerd + --bridge dind0 + --data-root /data/data + --exec-root /data/exec + --host unix:///data/docker.sock + --pidfile /data/docker.pid + volumes: + - ${APP_DATA_DIR}/entrypoint.sh:/entrypoint.sh + - ${APP_DATA_DIR}/data/docker:/data + + dockge: + image: louislam/dockge:1.5.0@sha256:335c6368b880ecc203236ed89e6e5232e0d6578e8ef5920e4a502390451502bf + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/docker:/var/run + - ${APP_DATA_DIR}/data/dockge-data:/app/data + - ${APP_DATA_DIR}/data/dockge-stacks:/opt/stacks + environment: + DOCKGE_STACKS_DIR: /opt/stacks + DOCKGE_ENABLE_CONSOLE: "true" diff --git a/dockge/entrypoint.sh b/dockge/entrypoint.sh new file mode 100755 index 0000000..71d910f --- /dev/null +++ b/dockge/entrypoint.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# Этот хак можно удалить, если https://github.com/docker-library/docker/pull/444 будет объединен. + +# Удалите pid-файл docker, если он существует, чтобы обеспечить запуск Docker после неудачного завершения работы. +pidfile="/var/run/docker.pid" +if [[ -f "${pidfile}" ]] +then + rm -f "${pidfile}" +fi + +# Используйте nftables в качестве бэкэнда для iptables +for command in iptables iptables-restore iptables-restore-translate iptables-save iptables-translate +do + ln -sf /sbin/xtables-nft-multi /sbin/$command +done + +# Убедитесь, что мост с указанным именем существует. +ensure_bridge_exists() { + local name="${1}" + local ip_range="${2}" + + # Проверьте, существует ли мост уже + if ip link show "${name}" &>/dev/null + then + echo "Bridge '${name}' already exists. Skipping creation." + ip addr show "${name}" + return + fi + + echo "Bridge '${name}' does not exist. Creating..." + ip link add "${name}" type bridge + ip addr add "${ip_range}" dev "${name}" + ip link set "${name}" up + + echo "Bridge '${name}' is now up with IP range '${ip_range}'." + ip addr show "${name}" +} + +if [[ "${DOCKER_ENSURE_BRIDGE}" != "" ]] +then + bridge="${DOCKER_ENSURE_BRIDGE%%:*}" + ip_range="${DOCKER_ENSURE_BRIDGE#*:}" + ensure_bridge_exists "${bridge}" "${ip_range}" +fi + +exec dockerd-entrypoint.sh $@ diff --git a/docmost/data/db_data/.gitkeep b/docmost/data/db_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docmost/data/db_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/docmost/data/docmost_data/.gitkeep b/docmost/data/docmost_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docmost/data/docmost_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/docmost/data/redis_data/.gitkeep b/docmost/data/redis_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docmost/data/redis_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/docmost/dfwebos-app.yml b/docmost/dfwebos-app.yml new file mode 100644 index 0000000..b7a9d36 --- /dev/null +++ b/docmost/dfwebos-app.yml @@ -0,0 +1,55 @@ +manifestVersion: 1 +id: docmost +name: Docmost +tagline: Программное обеспечение для совместной работы вики и документации. +category: files +version: "0.80.0" +port: 8941 +description: >- + Docmost — это платформа для совместной документации и управления знаниями с открытым исходным кодом, предназначенная для того, чтобы помочь командам вместе создавать и поддерживать структурированный контент. Он служит современной альтернативой таким инструментам, как Notion и Confluence, с упором на совместную работу в реальном времени и простоту использования. + + + По своей сути Docmost позволяет нескольким пользователям одновременно работать над одним и тем же документом без риска перезаписать изменения друг друга. Каждое обновление появляется в режиме реального времени, создавая плавный и интуитивно понятный процесс редактирования, аналогичный тому, что пользователи ожидают от облачных инструментов повышения производительности. Возможность работы в режиме реального времени делает Docmost особенно подходящим для быстро развивающихся команд и проектов, требующих коллективного ввода и быстрой итерации. + + + Платформа оснащена простым и удобным редактором форматированного текста, который поддерживает расширенные возможности форматирования комментариев к таблицам и визуального контента. Он интегрируется с такими инструментами, как Excalidraw Drawio и Mermaid, что позволяет создавать и встраивать диаграммы непосредственно на страницы. Это упрощает визуальное представление идей, процессов и взаимосвязей без необходимости переключения между приложениями. + + + Docmost организует контент через систему страниц и групп пространств с гибкой настройкой разрешений. Такая структура позволяет командам поддерживать четкие границы между проектами отделов или областями знаний, сохраняя при этом простую навигацию. Пользователи также могут с легкостью выполнять поиск по всей базе знаний, гарантируя, что информация всегда будет доступна, когда она понадобится. + + + Созданный с учетом расширяемости, Docmost включает в себя систему плагинов, поддерживающую переводы, и предоставляет API для индивидуальной интеграции. Команды могут самостоятельно разместить платформу или выбрать управляемую облачную версию в зависимости от своей инфраструктуры и требований соответствия. + + + Основное программное обеспечение лицензируется в соответствии с AGPL, что гарантирует его бесплатность и открытость, одновременно поощряя участие и прозрачность. Для организаций, которым нужны дополнительные функции или поддержка корпоративного уровня, Docmost также предлагает коммерческую версию с расширенными возможностями и выделенными услугами. + + + В целом Docmost предоставляет мощное, но гибкое решение для команд, которые ценят совместный обмен знаниями и хотят получить полный контроль над своими данными и рабочими процессами. +developer: Docmost, Inc. +website: https://docmost.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2870 +repo: https://github.com/docmost/docmost +support: https://github.com/docmost/docmost/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg +releaseNotes: >- + ⚠️ Этот выпуск содержит исправления безопасности. Рекомендуется выполнить обновление. + + + Этот выпуск включает в себя следующие новые функции и улучшения: + - Поддержка избранного для быстрого доступа к страницам и пространствам + - Смотрите пространства, чтобы получать уведомления об активности + - Различные улучшения и исправления ошибок. + + + Полные примечания к выпуску можно найти по адресу https://github.com/docmost/docmost/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/docmost/docker-compose.yml b/docmost/docker-compose.yml new file mode 100644 index 0000000..7012bd9 --- /dev/null +++ b/docmost/docker-compose.yml @@ -0,0 +1,41 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: docmost_web_1 + APP_PORT: 3000 + + web: + image: docmost/docmost:0.80.0@sha256:ada7917ce46fcff62d21f6dcd0692c73309a44a91a6e6869806f23f9c3b694d6 + user: "1000:1000" + depends_on: + - db + - redis + environment: + APP_URL: "http://${DEVICE_DOMAIN_NAME}:8941" + APP_SECRET: ${APP_SEED} + DATABASE_URL: 'postgresql://docmostuser:docmostpass@docmost_db_1:5432/docmost?sslmode=disable' + REDIS_URL: "redis://docmost_redis_1:6379" + DISABLE_TELEMETRY: "true" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/docmost_data:/app/data/storage + + db: + image: postgres:17.3@sha256:0321e2252ebfeecb8bc1a899755084d29bce872953e1a5a3e25ec0860b739098 + user: "1000:1000" + environment: + POSTGRES_DB: docmost + POSTGRES_USER: docmostuser + POSTGRES_PASSWORD: docmostpass + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db_data:/var/lib/postgresql/data + + redis: + image: redis:8.0.1@sha256:b3ad79880c88e302deb5e0fed6cee3e90c0031eb90cd936b01ef2f83ff5b3ff2 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis_data:/data diff --git a/docuseal/data/app/.gitkeep b/docuseal/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docuseal/data/db/.gitkeep b/docuseal/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docuseal/dfwebos-app.yml b/docuseal/dfwebos-app.yml new file mode 100644 index 0000000..0979f09 --- /dev/null +++ b/docuseal/dfwebos-app.yml @@ -0,0 +1,44 @@ +manifestVersion: 1 +id: docuseal +category: files +name: DocuSeal +version: "2.5.1" +tagline: Заполнение и подписание документов с открытым исходным кодом +description: > + DocuSeal — это платформа с открытым исходным кодом, которая обеспечивает безопасное и эффективное подписание и обработку цифровых документов. + + + Особенности: + - Конструктор полей формы PDF (WYSIWYG) + - Доступно 12 типов полей (подпись, дата, файл, флажок и т. д.) + - Несколько отправителей на один документ + - Автоматические электронные письма через SMTP + - Хранилище файлов на диске или AWS S3, Google Storage, Azure Cloud + - Автоматическая электронная подпись PDF + - Проверка подписи PDF + - Управление пользователями + - Оптимизирован для мобильных устройств + - 7 языков интерфейс с возможностью подписи на 14 языках. + - API и вебхуки для интеграции +developer: docusealco +website: https://www.docuseal.com/ +dependencies: [] +repo: https://github.com/docusealco/docuseal +support: https://github.com/docusealco/issues +port: 8387 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultPassword: "" +releaseNotes: >- + Некоторые из ключевых моментов этого выпуска включают в себя: + - Добавлен формат поля даты «месяц, год». + - Исправлены ошибки и усилена безопасность. + + + Полные примечания к выпуску можно найти по адресу https://github.com/docusealco/docuseal/releases. +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3838 diff --git a/docuseal/docker-compose.yml b/docuseal/docker-compose.yml new file mode 100644 index 0000000..029d0ec --- /dev/null +++ b/docuseal/docker-compose.yml @@ -0,0 +1,28 @@ +services: + app_proxy: + environment: + APP_HOST: docuseal_server_1 + APP_PORT: 3000 + + server: + image: docuseal/docuseal:2.5.1@sha256:a43e629c6d0726734afcd192b133efd153dfa7cdf099b29c0cbbe463597da0bb + user: "1000:1000" + depends_on: + - db + restart: on-failure + stop_grace_period: 1m + environment: + DATABASE_URL: 'postgresql://docusealuser:docusealpass@docuseal_db_1:5432/docuseal?sslmode=disable' + volumes: + - ${APP_DATA_DIR}/data/app:/data/docuseal + + db: + image: postgres:17.3@sha256:0321e2252ebfeecb8bc1a899755084d29bce872953e1a5a3e25ec0860b739098 + user: "1000:1000" + environment: + POSTGRES_DB: docuseal + POSTGRES_USER: docusealuser + POSTGRES_PASSWORD: docusealpass + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data diff --git a/domain-locker/data/db_data/.gitkeep b/domain-locker/data/db_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/domain-locker/data/db_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/domain-locker/dfwebos-app.yml b/domain-locker/dfwebos-app.yml new file mode 100644 index 0000000..70dbe46 --- /dev/null +++ b/domain-locker/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1 +id: domain-locker +name: Domain Locker +tagline: Универсальный инструмент для отслеживания вашего портфеля доменных имен. +category: networking +version: "0.1.4" +port: 8839 +description: >- + Domain Locker — это мощная платформа с открытым исходным кодом, предназначенная для управления и мониторинга доменных имен нескольких регистраторов и служб. Он предоставляет пользователям унифицированный интерфейс для организации, отслеживания и защиты активов своего домена с упором на автоматизацию, безопасность и конфиденциальность данных. Инструмент автоматически собирает полную информацию о каждом домене, включая записи DNS, сертификаты SSL, данные WHOIS, поддомены и связанные IP-адреса. Такое отслеживание активов в режиме реального времени гарантирует, что пользователи всегда будут в курсе текущего состояния и работоспособности своих доменов. + + + Интегрированные механизмы оповещения уведомляют пользователей о критических изменениях, таких как приближающееся истечение срока действия домена, изменения DNS и потенциальные проблемы безопасности. Эти оповещения могут доставляться по электронной почте, через веб-перехватчики или через платформы обмена сообщениями, такие как Telegram и Signal, что помогает пользователям быстро реагировать на возникающие угрозы или эксплуатационные изменения. Domain Locker также предоставляет подробную аналитику и визуализацию, включая интерактивные диаграммы и временные шкалы, которые отображают историю производительности домена и конфигурации с течением времени. Такой уровень понимания позволяет пользователям оптимизировать использование домена, выявлять аномалии и принимать обоснованные решения. + + + Для тех, кто заботится о безопасности, Domain Locker включает в себя встроенные инструменты для аудита конфигураций домена и предложения улучшений, что делает его идеальным для разработчиков, предприятий и ИТ-специалистов, которые хотят обеспечить надежную гигиену домена. Кроме того, он предлагает возможности отслеживания затрат, позволяя пользователям записывать цены покупки, отслеживать текущие расходы и оценивать текущую рыночную стоимость своих портфелей доменов. + + + Платформа поддерживает интернационализацию, настраиваемый интерфейс в темном режиме и гибкие параметры макета в соответствии с различными предпочтениями пользователей. +developer: Alicia Sykes +website: https://domain-locker.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2633 +repo: https://github.com/Lissy93/domain-locker +support: https://github.com/Lissy93/domain-locker/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Этот выпуск содержит улучшения производительности и исправления ошибок для локальной версии, в том числе: + - Добавлена поддержка секретов Docker. + - Добавлена поддержка дополнительных расширений домена. + - Исправлены проблемы с массовым импортом доменов. + - Улучшено отображение символов валюты в разных локалях. + - Добавлено выпадающее меню для выбора ранее использованных регистраторов. + - Реализована полная функция экспорта данных домена. + - Исправлено отображение статистики регистратора, SSL и хоста. + - Добавлена поддержка использования разных имен пользователей Postgres. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Lissy93/domain-locker/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/domain-locker/docker-compose.yml b/domain-locker/docker-compose.yml new file mode 100644 index 0000000..25456da --- /dev/null +++ b/domain-locker/docker-compose.yml @@ -0,0 +1,43 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: domain-locker_app_1 + APP_PORT: 3000 + + app: + image: lissy93/domain-locker:0.1.4@sha256:c49d00d31d0bc948c01c046ce283a11af4bdc0742643ee1ab21675ce7f80da69 + user: "1000:1000" + restart: on-failure + environment: + DL_ENV_TYPE: selfHosted + DL_PG_HOST: domain-locker_postgres_1 + DL_PG_PORT: 5432 + DL_PG_USER: postgres + DL_PG_PASSWORD: domain-locker + DL_PG_NAME: domain_locker + depends_on: + - postgres + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3000/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + + postgres: + image: postgres:17.4@sha256:fe3f571d128e8efadcd8b2fde0e2b73ebab6dbec33f6bfe69d98c682c7d8f7bd + user: "1000:1000" + restart: on-failure + environment: + POSTGRES_DB: domain_locker + POSTGRES_USER: postgres + POSTGRES_PASSWORD: domain-locker + volumes: + - ${APP_DATA_DIR}/data/db_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 diff --git a/donetick/data/app/.gitkeep b/donetick/data/app/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/donetick/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/donetick/data/config/selfhosted.yaml b/donetick/data/config/selfhosted.yaml new file mode 100644 index 0000000..3b8d916 --- /dev/null +++ b/donetick/data/config/selfhosted.yaml @@ -0,0 +1,25 @@ +name: "selfhosted" +is_done_tick_dot_com: false +is_user_creation_disabled: false + +database: + type: "sqlite" + migration: true + +jwt: + secret: "yYCBVjEKcrpEiTORFJX3K5TJ2dPbQhFJdZT4jyQPgvE=" + session_time: 168h + max_refresh: 168h + +server: + port: 2021 + read_timeout: 10s + write_timeout: 10s + rate_period: 60s + rate_limit: 300 + serve_frontend: true + +scheduler_jobs: + due_job: 30m + overdue_job: 3h + pre_due_job: 3h diff --git a/donetick/dfwebos-app.yml b/donetick/dfwebos-app.yml new file mode 100644 index 0000000..9591cc0 --- /dev/null +++ b/donetick/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1 +id: donetick +name: Donetick +tagline: Умный способ организовать задачи и работу по дому +category: files +version: "0.1.75" +port: 8121 +description: >- + Donetick — это приложение для управления задачами с открытым исходным кодом, предназначенное для оптимизации организации домашних дел и других повторяющихся обязанностей. Он обеспечивает гибкую систему назначения задач нескольким пользователям с использованием различных стратегий выбора, таких как случайное распределение или назначение на основе наименьшего количества выполненных задач. Задачи можно планировать с помощью настраиваемых шаблонов повторения, что позволяет легко управлять как повседневными делами, так и менее частыми обязанностями. + + + Платформа предлагает отслеживание прогресса в режиме реального времени и интегрируется с внешними службами уведомлений, такими как Telegram и Pushover, гарантируя, что пользователи будут в курсе предстоящих или просроченных задач. Кроме того, Donetick поддерживает интеграцию API, позволяя автоматически запускать задачи из других систем. + + + Для аутентификации и управления пользователями Donetick поддерживает систему единого входа (SSO) и OpenID Connect (OIDC), что упрощает интеграцию с существующими поставщиками удостоверений. Уникальной особенностью платформы является поддержка тегов NFC, позволяющая пользователям выполнять задачи, просто сканируя тег. Ярлыки и группы задач еще больше улучшают организацию, позволяя классифицировать задачи и эффективно распределять их среди участников. + + + Благодаря сочетанию автоматизации, интеллектуального планирования и совместного распределения задач Donetick предоставляет мощное и удобное решение для управления домашними и групповыми обязанностями. +developer: Donetick +website: https://donetick.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/4025 +repo: https://github.com/donetick/donetick +support: https://github.com/donetick/donetick/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Это большой выпуск со множеством новых функций и улучшений: + - Добавлена поддержка интернационализации — благодаря вкладу сообщества появляется больше языков. + - История перепланирования теперь отслеживается для работ по дому, что дает лучшую видимость того, как были перемещены задачи. + - Фильтрация меток теперь доступна в расширенной системе фильтров. + - На боковую панель добавлена новая панель Smart Insights для анализа задач и предложений. + - Быстрый фильтр «Доступно для меня» усовершенствован, чтобы отображать назначенные вам или неназначенные дела по дому. + - Расширенная документация API и поддержка аутентификации через Swagger. + - Добавлен 30-секундный льготный период для проверки времени редактирования. + - Выровнены требования к паролю и увеличена максимальная длина пароля до 64 символов. + - Теперь поддерживаются пользовательская конфигурация отправителя электронной почты и отдельная пользовательская конфигурация SMTP. + - Событие TaskCreated теперь включено. + - Исправлена ошибка, из-за которой лицу, не назначенному лицу, могла быть неправильно назначена работа на основании предыдущих завершений. + - Исправлены правила «следующего назначенного», которые не соблюдались для триггерных задач. + - Добавлена простая проверка работоспособности конечной точки API. + - Исправлены заголовки кэша для статических ресурсов. + + + Полные примечания к выпуску можно найти по адресу https://github.com/donetick/donetick. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/donetick/docker-compose.yml b/donetick/docker-compose.yml new file mode 100644 index 0000000..e47db54 --- /dev/null +++ b/donetick/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: donetick_app_1 + APP_PORT: 2021 + PROXY_AUTH_ADD: "false" + + app: + image: donetick/donetick:v0.1.75@sha256:5c207a86e5425052e9ffe5286f96f71babfe57337760d303a5fb56a856790d11 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/app:/donetick-data + - ${APP_DATA_DIR}/data/config:/config + environment: + - DT_ENV=selfhosted + - DT_SQLITE_PATH=/donetick-data/donetick.db diff --git a/downtify/dfwebos-app.yml b/downtify/dfwebos-app.yml new file mode 100644 index 0000000..90c4bfc --- /dev/null +++ b/downtify/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1 +id: downtify +category: media +name: Downtify +version: "2.2.0" +tagline: Загрузите музыку Spotify с обложкой альбома и метаданными +description: >- + Downtify позволяет загружать музыку, скопировав ссылку Spotify на песню, альбом и т. д. Песни загружаются с YouTube вместе с обложками альбомов, текстами песен и другими метаданными о песнях. + Как только загрузка завершится, вы получите уведомление! + + + **⚠️ Важное примечание по поводу источников музыки от разработчиков приложения:** + + Пользователи несут ответственность за свои действия и возможные юридические последствия. + Мы не поддерживаем несанкционированное скачивание материалов, защищенных авторским правом, и не несем ответственности за действия пользователей. +developer: Henrique Sebastião +dependencies: [] +repo: https://github.com/henriquesebastiao/downtify +port: 8789 +releaseNotes: >- + Эта версия включает в себя следующие улучшения: + - Создание файлов списков воспроизведения M3U для списков воспроизведения Spotify. + + + Полные примечания к выпуску можно найти по адресу https://github.com/henriquesebastiao/downtify/releases. +support: https://github.com/henriquesebastiao/downtify/issues +website: https://github.com/henriquesebastiao/downtify +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Henrique Sebastião +submission: https://github.com/getumbrel/dfwebos-apps/pull/2177 diff --git a/downtify/docker-compose.yml b/downtify/docker-compose.yml new file mode 100644 index 0000000..250a613 --- /dev/null +++ b/downtify/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: downtify_downtify_1 + APP_PORT: 8000 + + downtify: + image: ghcr.io/henriquesebastiao/downtify:2.2.0@sha256:d2429c3a66c357021d8c7d14b5eae5d0e3f4fcae3aceaf6e6c30dbfe41718bdd + stop_grace_period: 1m + volumes: + - ${DFWEBOS_ROOT}/data/storage/downloads/downtify:/downloads diff --git a/dumbpad/data/.gitkeep b/dumbpad/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dumbpad/dfwebos-app.yml b/dumbpad/dfwebos-app.yml new file mode 100644 index 0000000..17fd4eb --- /dev/null +++ b/dumbpad/dfwebos-app.yml @@ -0,0 +1,41 @@ +manifestVersion: 1 +id: dumbpad +category: files +name: DumbPad +version: "1.0.4" +tagline: Блокнот с совместным редактированием, нечетким поиском и предварительным просмотром уценок. +description: >- + DumbPad — это минималистичный современный блокнот, созданный для скорости и простоты. Он работает без суеты и сохраняет заметки в виде простых файлов. + + + Ключевые особенности + - Ультра-простое минимальное написание интерфейс с автосохранением (почти в реальном времени). + - Темный/светлый режим с поддержкой системных настроек. + - Файловое хранилище: заметки хранятся в виде простых файлов .txt и индекса notepads.json. + - Улучшенная Markdown: блоки предупреждений, расширенные таблицы, сворачиваемый контент и подсветка синтаксиса кода. + - Прямые ссылки на блокнот и копируемые общие URL-адреса. + - Нечеткий поиск по именам файлов и содержимому. + + + Почему DumbPad? + + + DumbPad предназначен для людей, которым нужно место, где можно не отвлекаться, чтобы записывать быстрые заметки, фрагменты, списки покупок или идеи кода без накладных расходов на учетные записи или тяжелых инструментов. + Он небольшой, быстрый и создан для того, чтобы ваши заметки были доступны и портативны. +developer: DumbWareio +website: https://github.com/DumbWareio/DumbPad +repo: https://github.com/DumbWareio/DumbPad +support: https://github.com/DumbWareio/DumbPad/issues +port: 8255 +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3958 +releaseNotes: "" +dependencies: [] +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +permissions: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/dumbpad/docker-compose.yml b/dumbpad/docker-compose.yml new file mode 100644 index 0000000..6bfc658 --- /dev/null +++ b/dumbpad/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: dumbpad_web_1 + APP_PORT: "3000" + + web: + image: dumbwareio/dumbpad:1.0.4@sha256:03e4216d7842958287bccf6c51dde1c41735b35235844fb87c70b4443143ada6 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/app/data + environment: + SITE_TITLE: DumbPad + BASE_URL: http://$DEVICE_DOMAIN_NAME:3000 diff --git a/duplicati/data/.gitkeep b/duplicati/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/duplicati/dfwebos-app.yml b/duplicati/dfwebos-app.yml new file mode 100644 index 0000000..d79e690 --- /dev/null +++ b/duplicati/dfwebos-app.yml @@ -0,0 +1,61 @@ +manifestVersion: 1 +id: duplicati +name: Duplicati +tagline: Храните надежно зашифрованные резервные копии в облаке. +category: files +version: "v2.3.0.1_stable_2026-04-24" +port: 38476 +description: >- + Выберите свой собственный сервер и храните зашифрованные резервные копии ваших файлов DFWebOS где угодно! + + + 🧩 Интеграции + + Беспрепятственно работает со стандартными протоколами, такими как FTP, SSH и WebDAV, а также с широким спектром популярных сервисов, таких как Amazon S3, OneDrive, Google Drive, Rackspace Cloud Files, HubiC, Backblaze (B2), Amazon Cloud Drive (AmzCD), Swift / OpenStack, WebDAV, SSH (SFTP), FTP, и многое другое! + + + ⏲️ Автоматическое резервное копирование + + Вы сами выбираете, как часто будут выполняться безопасные резервные копии всех выбранных вами файлов. + + + 🛡️ Безопасно и надежно + + Мы серьезно относимся к безопасности ваших данных. Используя мощный стандарт шифрования AES-256, мы гарантируем, что ваша конфиденциальность останется защищенной от любого несанкционированного доступа. Мы также поддерживаем шифрование GPG, обеспечивая дополнительный уровень надежной защиты ваших резервных копий. + + + 🖥️ Интуитивно понятный интерфейс + + Простой интерфейс и мощные элементы управления у вас под рукой. +developer: Duplicati +website: https://duplicati.com/ +submitter: Sharknoon +submission: https://github.com/getumbrel/dfwebos-apps/pull/1179 +repo: https://github.com/duplicati/duplicati +support: https://forum.duplicati.com/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Это выпуск исправления для Duplicati 2.3.0.1, исправляющий несколько проблем, обнаруженных после выпуска 2.3.0.0. + + + Новые исправления в версии 2.3.0.1: + - В раскрывающиеся списки поставщиков S3 добавлены регионы Hetzner и DigitalOcean. + - Исправлена проблема со знаками доллара в именах файлов, которые запутывали фильтры. + - Улучшено использование диска и обработка нового потока восстановления. + - Исправлен отчет о прогрессе при использовании нескольких пунктов назначения. + - Исправлен цикл автообновления в интерфейс. + - Исправлена проблема с сохранением настроек из интерфейс в определенных сценариях. + - Исправлена проблема, из-за которой пустые файлы могли привести к тому, что восстановленные базы данных помечались как несогласованные. + - Добавлена устойчивость к ошибочным переводам. + - Проверьте квоты при хранении в нескольких местах назначения. + + + Полные примечания к выпуску можно найти по адресу https://github.com/duplicati/duplicati/releases. +dependencies: [] +permissions: + - STORAGE_DOWNLOADS +path: "" +deterministicPassword: true diff --git a/duplicati/docker-compose.yml b/duplicati/docker-compose.yml new file mode 100644 index 0000000..cea1ed0 --- /dev/null +++ b/duplicati/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: duplicati_duplicati_1 + APP_PORT: 8200 + PROXY_AUTH_ADD: "false" + + duplicati: + image: duplicati/duplicati:2.3.0.1@sha256:c5cc20fc744cce2957a61cb0b331ecdf333c9fcf28281f96cc587e11ed4536af + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + - ${DFWEBOS_ROOT}/data/storage:/dfwebos + environment: + DUPLICATI__WEBSERVICE_PORT: "8200" + DUPLICATI__WEBSERVICE_INTERFACE: "any" + DUPLICATI__WEBSERVICE_PASSWORD: "${APP_PASSWORD}" + DUPLICATI__WEBSERVICE_ALLOWED_HOSTNAMES: "*" diff --git a/electrs/data/electrs/.gitkeep b/electrs/data/electrs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/electrs/dfwebos-app.yml b/electrs/dfwebos-app.yml new file mode 100644 index 0000000..e820cd4 --- /dev/null +++ b/electrs/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1.1 +id: electrs +category: bitcoin +name: Electrs +version: "0.11.0" +tagline: Простой и эффективный сервер Electrum +description: > + Запустите свой личный сервер Electrum и подключите свой кошелек, совместимый с Electrum, + включая BitBoxApp, BlueWallet, Electrum Wallet (Android и настольный компьютер), Nunchuk + (Десктоп), Phoenix и Sparrow Wallet вместо использования сторонних + Сервер Электрум. + + + Работает на Electrs от Романа Зейде. + + + Официальное приложение от DFWebOS. +developer: DFWebOS +website: https://dfwebos.com/ +dependencies: + - bitcoin +repo: https://github.com/getumbrel/umbrel-electrs +support: https://community.getumbrel.com/c/bitcoin-and-lightning +port: 2102 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultPassword: "" +releaseNotes: > + Это обновление повышает базовую версию lectrs до 0.11.0. + + + Полные примечания к выпуску Elects доступны по адресу https://github.com/romanz/electrs/blob/master/RELEASE-NOTES.md#0110-nov-16-2025. +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/242 +backupIgnore: + - data/electrs/db/bitcoin diff --git a/electrs/docker-compose.yml b/electrs/docker-compose.yml new file mode 100644 index 0000000..b9f5165 --- /dev/null +++ b/electrs/docker-compose.yml @@ -0,0 +1,54 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_ELECTRS_IP + APP_PORT: 3006 + + app: + image: getumbrel/umbrel-electrs:v1.0.4@sha256:fa2fd04f4c7515aad84f21640f5feab1417bc18e20bc65cda7ed97e59b8458db + depends_on: + - electrs + restart: on-failure + environment: + ELECTRUM_HIDDEN_SERVICE: "${APP_ELECTRS_RPC_HIDDEN_SERVICE}" + ELECTRUM_LOCAL_SERVICE: "${DEVICE_DOMAIN_NAME}" + ELECTRS_HOST: "${APP_ELECTRS_NODE_IP}" + BITCOIN_HOST: "${APP_BITCOIN_NODE_IP}" + RPC_USER: "${APP_BITCOIN_RPC_USER}" + RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}" + RPC_PORT: "${APP_BITCOIN_RPC_PORT}" + networks: + default: + ipv4_address: $APP_ELECTRS_IP + + electrs: + image: getumbrel/electrs:v0.11.0@sha256:0a2c6f573abfd8d724651c6ba1c1f3a9c740219c1cf0f4468043c3342170d8a5 + restart: always + environment: + ELECTRS_LOG_FILTERS: "INFO" + ELECTRS_NETWORK: "${APP_BITCOIN_NETWORK_ELECTRS}" + ELECTRS_DAEMON_RPC_ADDR: "${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}" + ELECTRS_DAEMON_P2P_ADDR: "${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_P2P_WHITEBIND_PORT-${APP_BITCOIN_P2P_PORT}}" + ELECTRS_ELECTRUM_RPC_ADDR: "0.0.0.0:${APP_ELECTRS_NODE_PORT}" + ELECTRS_SERVER_BANNER: "DFWebOS Electrs (${APP_VERSION})" + ELECTRS_DB_DIR: "/data/db" + volumes: + - "${APP_BITCOIN_DATA_DIR}:/data/.bitcoin:ro" + - "${APP_DATA_DIR}/data/electrs:/data" + ports: + - "${APP_ELECTRS_NODE_PORT}:${APP_ELECTRS_NODE_PORT}" + networks: + default: + ipv4_address: $APP_ELECTRS_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/electrs/exports.sh b/electrs/exports.sh new file mode 100644 index 0000000..69b8c1b --- /dev/null +++ b/electrs/exports.sh @@ -0,0 +1,7 @@ +export APP_ELECTRS_IP="10.21.22.4" +export APP_ELECTRS_NODE_IP="10.21.21.10" + +export APP_ELECTRS_NODE_PORT="50001" + +rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname" +export APP_ELECTRS_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" \ No newline at end of file diff --git a/electrs/hooks/pre-start b/electrs/hooks/pre-start new file mode 100755 index 0000000..1e8dde5 --- /dev/null +++ b/electrs/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку Electrs до тех пор, пока скрытая служба Tor RPC не будет готова. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach electrs +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/electrs/torrc.template b/electrs/torrc.template new file mode 100644 index 0000000..5b6c699 --- /dev/null +++ b/electrs/torrc.template @@ -0,0 +1,3 @@ +# Электры RPC Скрытая служба +HiddenServiceDir /data/app-$APP_ID-rpc +HiddenServicePort $APP_ELECTRS_NODE_PORT $APP_ELECTRS_NODE_IP:$APP_ELECTRS_NODE_PORT \ No newline at end of file diff --git a/electrumx/data/electrumx/.gitkeep b/electrumx/data/electrumx/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/electrumx/dfwebos-app.yml b/electrumx/dfwebos-app.yml new file mode 100644 index 0000000..65189a8 --- /dev/null +++ b/electrumx/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1.1 +id: electrumx +implements: + - electrs +category: bitcoin +name: ElectrumX +version: "1.16.0-patch.2" +tagline: Легкий сервер Electrum +description: > + Запустите свой личный сервер Electrum и подключите свой кошелек, совместимый с Electrum, + включая BitBoxApp, BlueWallet, Electrum Wallet (Android и настольный компьютер), Nunchuk + (Десктоп), Phoenix и Sparrow Wallet вместо использования сторонних + Сервер Электрум. + + + Работает на ElectrumX от Томаса Фогтлина. + + + Официальное приложение от DFWebOS. +developer: DFWebOS +website: https://dfwebos.com/ +dependencies: + - bitcoin +repo: https://github.com/getumbrel/umbrel-electrumx +support: https://community.getumbrel.com/c/bitcoin-and-lightning +port: 1999 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +releaseNotes: > + Это обновление добавляет поддержку резервного копирования в umbrelOS 1.5. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/1813 +backupIgnore: + - data/electrumx/meta + - data/electrumx/hist diff --git a/electrumx/docker-compose.yml b/electrumx/docker-compose.yml new file mode 100644 index 0000000..103a292 --- /dev/null +++ b/electrumx/docker-compose.yml @@ -0,0 +1,53 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_ELECTRUMX_IP + APP_PORT: 3007 + + app: + image: ghcr.io/getumbrel/umbrel-electrumx:1.0.0@sha256:2352ce668f722118e248c7b4458a6ea4509e5312e3cf1ee3963ddea35d395c09 + depends_on: + - electrumx + restart: on-failure + environment: + ELECTRUM_HIDDEN_SERVICE: "${APP_ELECTRUMX_RPC_HIDDEN_SERVICE}" + ELECTRUM_LOCAL_SERVICE: "${DEVICE_DOMAIN_NAME}" + ELECTRUM_HOST: "${APP_ELECTRUMX_NODE_IP}" + ELECTRUM_PUBLIC_CONNECTION_PORT: "${APP_ELECTRUMX_PUBLIC_CONNECTION_PORT}" + ELECTRUM_RPC_PORT: "${APP_ELECTRUMX_RPC_PORT}" + BITCOIN_HOST: "${APP_BITCOIN_NODE_IP}" + RPC_USER: "${APP_BITCOIN_RPC_USER}" + RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}" + RPC_PORT: "${APP_BITCOIN_RPC_PORT}" + networks: + default: + ipv4_address: $APP_ELECTRUMX_IP + + electrumx: + image: lukechilds/electrumx:v1.16.0@sha256:2949784536f8f85af229004e12e5b5c3a1d7428918a492f77b4e958035c2ae2a + restart: always + init: true + environment: + DAEMON_URL: "http://${APP_BITCOIN_RPC_USER}:${APP_BITCOIN_RPC_PASS}@${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}" + COIN: "BitcoinSegwit" + # https://github.com/spesmilo/electrumx/blob/master/electrumx/lib/coins.py + NET: $APP_ELECTRUMX_BITCOIN_NETWORK + volumes: + - "${APP_DATA_DIR}/data/electrumx:/data" + ports: + - "${APP_ELECTRUMX_PUBLIC_CONNECTION_PORT}:${APP_ELECTRUMX_NODE_PORT}" + networks: + default: + ipv4_address: $APP_ELECTRUMX_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/electrumx/exports.sh b/electrumx/exports.sh new file mode 100644 index 0000000..6a42433 --- /dev/null +++ b/electrumx/exports.sh @@ -0,0 +1,30 @@ +export APP_ELECTRUMX_IP="10.21.22.199" +export APP_ELECTRUMX_NODE_IP="10.21.21.199" + +export APP_ELECTRUMX_NODE_PORT="50001" +export APP_ELECTRUMX_PUBLIC_CONNECTION_PORT="50003" +export APP_ELECTRUMX_RPC_PORT="8000" + +# ElectrumX NET принимает: mainnet, testnet, Signet, regtest, testnet4 +# Electrumx 1.16.0 не поддерживает Signet или TestNet4 (однако последние коммиты в репозитории поддерживают) +export APP_ELECTRUMX_BITCOIN_NETWORK=$APP_BITCOIN_NETWORK +if [[ "${BITCOIN_NETWORK}" == "testnet3" ]]; then + export APP_ELECTRUMX_BITCOIN_NETWORK="testnet" +fi + +for var in \ + IP \ + NODE_IP \ + NODE_PORT \ +; do + electrs_var="APP_ELECTRS_${var}" + electrumx_var="APP_ELECTRUMX_${var}" + if [ -n "${!electrumx_var-}" ]; then + export "$electrs_var"="${!electrs_var:=${!electrumx_var}}" + else + echo "Warning: $electrumx_var is unset or empty" + fi +done + +rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-tpc/hostname" +export APP_ELECTRUMX_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" diff --git a/electrumx/hooks/pre-start b/electrumx/hooks/pre-start new file mode 100755 index 0000000..ea8687a --- /dev/null +++ b/electrumx/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку ElectrumX до тех пор, пока скрытая служба Tor RPC не будет готова. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-tpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach electrumx +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/electrumx/torrc.template b/electrumx/torrc.template new file mode 100644 index 0000000..8ce6933 --- /dev/null +++ b/electrumx/torrc.template @@ -0,0 +1,4 @@ +# ElectrumX RPC Скрытая служба +HiddenServiceDir /data/app-$APP_ID-tpc +HiddenServicePort $APP_ELECTRUMX_NODE_PORT $APP_ELECTRUMX_NODE_IP:$APP_ELECTRUMX_NODE_PORT +HiddenServicePort $APP_ELECTRUMX_PUBLIC_CONNECTION_PORT $APP_ELECTRUMX_NODE_IP:$APP_ELECTRUMX_NODE_PORT \ No newline at end of file diff --git a/element/dfwebos-app.yml b/element/dfwebos-app.yml new file mode 100644 index 0000000..db27c0b --- /dev/null +++ b/element/dfwebos-app.yml @@ -0,0 +1,62 @@ +manifestVersion: 1 +id: element +category: social +name: Element +version: "1.12.15" +tagline: Глянцевый клиент Matrix, совместимый с Synapse. +description: >- + Element — это новый тип приложения для обмена сообщениями. Вы выбираете, где хранить ваши сообщения, что позволяет вам контролировать свои данные. + Вы можете подключить его к приложению Synapse, работающему на вашем DFWebOS, или к любому другому домашнему серверу Matrix. + + + - Это дает вам доступ к открытой сети Матрицы, так что вы можете общаться с кем угодно. Element обеспечивает новый уровень безопасности, добавляя проверку устройства с перекрестной подписью к сквозному шифрованию по умолчанию. + + - Самое лучшее сквозное шифрование и уникальная проверка устройства с перекрестной подписью Element означают, что только те, кто должен участвовать в разговоре, могут читать сообщения - никаких подслушивающих или самозванцев. + + - Самое главное, что Element открыт; Созданный в сети Matrix, он подключается ко всем другим приложениям на базе Matrix, а также подключается к проприетарным системам. Вы можете оставаться в Element, общаясь с друзьями и семьей в других приложениях. + + - Элемент с открытым исходным кодом. Вы точно знаете, что получаете. Полная прозрачность, свобода расширения и настройки при поддержке активного сообщества разработчиков. + + + 🛠️ Начало работы + + + Самый простой способ начать — установить приложение Synapse на свой DFWebOS. Synapse — это домашний сервер Matrix, на котором хранится вся ваша личная история чатов и информация об учетной записи пользователя. + + + Когда вы регистрируетесь или входите в систему через Element, вам нужно будет изменить адрес домашнего сервера, на который вы входите, со значения по умолчанию Matrix.org на http://dfwebos.local:8008 для локального доступа. + + + Для бесперебойного подключения, даже когда вы получаете доступ к Element вдали от дома, просто установите приложение Tailscale на свой DFWebOS и устройство, которое вы используете для доступа к Element, и используйте http://umbrel:8008 в качестве адреса вашего сервера. +developer: New Vector Ltd +website: https://element.io +dependencies: [] +repo: https://github.com/vector-im/element-web +support: https://matrix.to/#/#element-web:matrix.org +port: 8088 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/bb10e17a6256db19767af7eaeb93d665ac275b24 +releaseNotes: >- + Некоторые ключевые моменты этого выпуска включают в себя: + - Добавлено отслеживание аналитики для предварительного просмотра URL-адресов. + - Реализованы складные панели для нового списка комнат с улучшенной производительностью. + - При нажатии на разделитель списка помещений теперь расширяется до последней установленной ширины. + - Спрятаны имена забаненных пользователей за спойлером. + - Исправлен входящий запрос на проверку, появляющийся над запросом «Подтвердите». + - Исправлен список комнат, часто отображающий неправильные значки для звонков. + - Исправлены индикаторы присутствия, которые не отображались без кеша. + - Исправлены команды смайликов, включая устаревшие буферы. + - Исправлен размер иконок значков на правой панели. + - Показывать название пространства вместо «Пустая комната» после создания пространства. + — Удалены эфемерные параметры запроса из URI перенаправления OIDC. + + + Полные примечания к выпуску можно найти по адресу https://github.com/vector-im/element-web/releases. \ No newline at end of file diff --git a/element/docker-compose.yml b/element/docker-compose.yml new file mode 100644 index 0000000..47574bd --- /dev/null +++ b/element/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: element_web_1 + APP_PORT: 80 + + web: + image: vectorim/element-web:v1.12.15@sha256:c7fa40b5ba3891f8af3ce63da0818f457c1802a9ee4d2f5e46a9df36a2388eed + user: "nginx:nginx" + restart: on-failure + stop_grace_period: 1m diff --git a/elements/data/.gitkeep b/elements/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/elements/dfwebos-app.yml b/elements/dfwebos-app.yml new file mode 100644 index 0000000..be591b1 --- /dev/null +++ b/elements/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1.1 +id: elements +category: bitcoin +name: Elements Core +version: "23.3.0" +tagline: Полный узел Liquid Network +description: >- + Elements — это реализация полного узла с открытым исходным кодом для запуска Liquid + Network, решение уровня 2 Bitcoin, обеспечивающее быстрый и конфиденциальный расчет и + выпуск цифровых активов, таких как стейблкоины, токены безопасности и другие финансовые активы. + инструменты на вершине временной цепочки Bitcoin. + + + Это приложение может использовать до 6 ГБ оперативной памяти. Перед установкой и запуском приложения важно убедиться, что ваше устройство соответствует необходимым аппаратным требованиям. +releaseNotes: >- + В этом выпуске обновляются элементы версии 23.2.7 до 23.3.0, а также содержатся различные исправления ошибок и улучшения. В отличие от Bitcoin, Elements не меняет формат кошелька по умолчанию с устаревшего на дескрипторы, потому что многие вещи (например, привязки и выходы) по-прежнему работают только на устаревших кошельках. + + + + Более подробную информацию об этом обновлении можно найти в полных примечаниях к выпуску. + доступен по адресу https://github.com/ElementsProject/elements/releases +developer: Elements Core Developers +website: https://elementsproject.org +dependencies: +- bitcoin +repo: https://github.com/ElementsProject/elements +support: https://t.me/liquid_community +port: 3042 +gallery: +- 1.jpg +- 2.jpg +- 3.jpg +path: '' +deterministicPassword: false +torOnly: false +submitter: Marco Argentieri +submission: https://github.com/getumbrel/umbrel/pull/1319 diff --git a/elements/docker-compose.yml b/elements/docker-compose.yml new file mode 100644 index 0000000..cf87958 --- /dev/null +++ b/elements/docker-compose.yml @@ -0,0 +1,70 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: elements_web_1 + APP_PORT: 8080 + + node: + image: ghcr.io/vulpemventures/elements:23.3.0@sha256:290adece84700db7522998cd5031839c3fb57cf549e8d23fd59c5196188a0db0 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + ports: + - $APP_ELEMENTS_NODE_RPC_PORT:$APP_ELEMENTS_NODE_RPC_PORT # JSONRPC + - $APP_ELEMENTS_NODE_P2P_PORT:$APP_ELEMENTS_NODE_P2P_PORT # P2P PORT + volumes: + - ${APP_DATA_DIR}/data:/home/elements/.elements + command: + - -listen=0 + - -txindex=1 + - -trim_headers=1 + # Current Elements Core требует >8 ГБ RAM для проверки конфиденциальных доказательств во время IBD. + # На данный момент мы пропускаем историческую проверку блоков, так как у нас нет возможности установить ограничение памяти. + - -assumevalid=546a756e0238e8c5c2c8bee43f0395740519f96aaee5994d05ef6569ce2d0821 + - -validatepegin=1 + - -fallbackfee=0.000001 + # Подключиться к сети Биткойн + - -mainchainrpchost=$APP_BITCOIN_NODE_IP + - -mainchainrpcport=$APP_BITCOIN_RPC_PORT + - -mainchainrpcuser=$APP_BITCOIN_RPC_USER + - -mainchainrpcpassword=$APP_BITCOIN_RPC_PASS + # Элементы RPC + - -rpcuser=elements + - -rpcpassword=$APP_PASSWORD + - -rpcbind=0.0.0.0 # can we do better here? + - -rpcallowip=0.0.0.0/0 # can we do better here? + - -rpcport=$APP_ELEMENTS_NODE_RPC_PORT + # P2P + - -port=$APP_ELEMENTS_NODE_P2P_PORT + - -blockfilterindex=1 + - -peerblockfilters=1 + # Включить создание CT со скидкой в ​​основной сети. + - -creatediscountct=1 + + web: + image: ghcr.io/tiero/elements-web:v0.0.3@sha256:b80dc0df2a4693668a97b874aad6d0a8d3239d03f4d05b4342600166934d0b87 + user: "1000:1000" + depends_on: + - node + restart: on-failure + environment: + RPC_USER: elements + RPC_PASS: $APP_PASSWORD + RPC_PORT: $APP_ELEMENTS_NODE_RPC_PORT + RPC_HOST: elements_node_1 + P2P_PORT: $APP_ELEMENTS_NODE_P2P_PORT + # Удаленный + REMOTE_RPC_HOST: $APP_ELEMENTS_RPC_HIDDEN_SERVICE + REMOTE_P2P_HOST: $APP_ELEMENTS_P2P_HIDDEN_SERVICE + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/elements/exports.sh b/elements/exports.sh new file mode 100644 index 0000000..f7c0eb6 --- /dev/null +++ b/elements/exports.sh @@ -0,0 +1,8 @@ +export APP_ELEMENTS_NODE_RPC_PORT="7041" +export APP_ELEMENTS_NODE_P2P_PORT="18332" + +local app_elements_rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname" +local app_elements_p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname" + +export APP_ELEMENTS_RPC_HIDDEN_SERVICE="$(cat "${app_elements_rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" +export APP_ELEMENTS_P2P_HIDDEN_SERVICE="$(cat "${app_elements_p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" \ No newline at end of file diff --git a/elements/hooks/pre-start b/elements/hooks/pre-start new file mode 100755 index 0000000..be5030c --- /dev/null +++ b/elements/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку Elements до тех пор, пока не будут готовы скрытые службы Tor RPC и P2P. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-p2p/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach node +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/elements/torrc.template b/elements/torrc.template new file mode 100644 index 0000000..fe699d2 --- /dev/null +++ b/elements/torrc.template @@ -0,0 +1,7 @@ +# Элементы RPC Скрытая служба +HiddenServiceDir /data/app-$APP_ID-rpc +HiddenServicePort $APP_ELEMENTS_NODE_RPC_PORT elements_node_1:$APP_ELEMENTS_NODE_RPC_PORT + +# элементы p2p скрытая услуга +HiddenServiceDir /data/app-$APP_ID-p2p +HiddenServicePort $APP_ELEMENTS_NODE_P2P_PORT elements_node_1:$APP_ELEMENTS_NODE_P2P_PORT \ No newline at end of file diff --git a/emby/dfwebos-app.yml b/emby/dfwebos-app.yml index c43af01..6ac656e 100644 --- a/emby/dfwebos-app.yml +++ b/emby/dfwebos-app.yml @@ -21,7 +21,7 @@ description: >- Подводя итог, можно сказать, что Emby — идеальное решение для тех, кто хочет получить полный контроль над своей медиатекой и беспрепятственно транслировать ее на различные устройства, сохраняя при этом персонализированную и конфиденциальную среду. developer: Emby LLC website: https://emby.media/ -submitter: dennysubke +submitter: DFofanov submission: https://github.dfv24.com/fofanov.dmitry/DFWebOS-Apps/pulls repo: https://github.com/MediaBrowser/Emby support: https://github.com/MediaBrowser/Emby/issues diff --git a/emby/docker-compose.yml b/emby/docker-compose.yml index 77c6c14..d5f82e7 100644 --- a/emby/docker-compose.yml +++ b/emby/docker-compose.yml @@ -10,7 +10,7 @@ services: server: image: linuxserver/emby:version-4.9.3.0@sha256:dbd1a3c83205445d13aad13362bdfa8478a6912541a1e32d654c550baf494e5a environment: - TZ: Europe/Berlin + TZ: Europe/Moscow UID: 1000 GID: 1000 restart: on-failure diff --git a/enclosed/data/.gitkeep b/enclosed/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/enclosed/dfwebos-app.yml b/enclosed/dfwebos-app.yml new file mode 100644 index 0000000..3bceb17 --- /dev/null +++ b/enclosed/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: enclosed +category: files +name: Enclosed +version: "1.16.0" +tagline: Отправляйте личные и безопасные заметки +description: >- + Enclosed — это минималистичное веб-приложение, предназначенное для отправки личных и безопасных заметок. Если вам нужно поделиться конфиденциальной информацией или просто нужен простой способ отправки зашифрованных сообщений, Enclosed предоставляет удобный интерфейс с надежными функциями безопасности, гарантирующими конфиденциальность ваших данных. + + + Название Enclosed вдохновлено идеей хранить ваши заметки в безопасности, как запечатанный конверт. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ 🛠️ + + Enclosed использует собственные криптографические API-интерфейсы браузера для шифрования и дешифрования заметок с безопасностью и высокой производительностью. Эти API доступны только в безопасном контексте (HTTPS). + Если вы запускаете приложение в незащищенном контексте (HTTP), вы увидите предупреждение в приложении. + + + Вы можете настроить https с помощью приложения Cloudflare Tunnel, доступного в магазине приложений. + Подробную инструкцию по настройке туннеля можно найти здесь: https://github.com/Radiokot/dfwebos-cloudflared/wiki/How-to-set-up-Cloudflare-Tunnel-on-your-DFWebOS +releaseNotes: >- + Это обновление включает в себя различные улучшения и исправления ошибок. + + + Заметные изменения: + - Добавлены индонезийские переводы. + - Обновлен вьетнамский перевод. + - Улучшена обработка настроек по умолчанию при сбросе состояния. + - Добавлена возможность создавать заметки без срока действия. + + + Полные примечания к выпуску можно найти по адресу https://github.com/CorentinTh/enclosed/releases. +developer: Corentin Thomasset +website: https://enclosed.cc/ +dependencies: [] +repo: https://github.com/CorentinTh/enclosed +support: https://github.com/CorentinTh/enclosed/discussions +port: 8788 +gallery: +- 1.jpg +- 2.jpg +- 3.jpg +path: "" +submitter: Zoobdude +submission: https://github.com/getumbrel/dfwebos-apps/pull/1563 diff --git a/enclosed/docker-compose.yml b/enclosed/docker-compose.yml new file mode 100644 index 0000000..3f97403 --- /dev/null +++ b/enclosed/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: enclosed_web_1 + APP_PORT: 8787 + + web: + image: corentinth/enclosed:1.16.0-rootless@sha256:0631baee489b974cf16ffe3884c814e7bcc75df7bd36662b8ded76443b768d06 + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/app/.data diff --git a/endurain/data/app/activity_files/bulk_import/.gitkeep b/endurain/data/app/activity_files/bulk_import/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/endurain/data/app/activity_files/processed/.gitkeep b/endurain/data/app/activity_files/processed/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/endurain/data/app/activity_media/.gitkeep b/endurain/data/app/activity_media/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/endurain/data/app/server_images/.gitkeep b/endurain/data/app/server_images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/endurain/data/app/user_images/.gitkeep b/endurain/data/app/user_images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/endurain/data/db/.gitkeep b/endurain/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/endurain/data/logs/.gitkeep b/endurain/data/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/endurain/dfwebos-app.yml b/endurain/dfwebos-app.yml new file mode 100644 index 0000000..5cee9e0 --- /dev/null +++ b/endurain/dfwebos-app.yml @@ -0,0 +1,59 @@ +manifestVersion: 1.1 +id: endurain +name: Endurain +tagline: Отслеживание фитнеса, с открытым исходным кодом, самостоятельное размещение +category: social +version: "0.17.6" +port: 8865 +description: >- + Endurain — это самостоятельная служба отслеживания фитнеса, предназначенная для предоставления пользователям полного контроля над своими данными и средой хостинга. + + + Он похож на Strava, но ориентирован на конфиденциальность и настройку. + + + Функции: + + - **Бесшовное отслеживание активности**. Импортируйте тренировки с помощью ручного ввода, массовой загрузки (файлы .gpx и .fit) или автоматической синхронизации со Strava и Garmin Connect. + + - **Полное управление снаряжением**. Контролируйте использование и производительность вашей обуви, велосипедов, гидрокостюмов и многого другого. + + - **Персонализированная информационная панель**. Просматривайте ленты активности, еженедельную/ежемесячную статистику и краткий обзор прогресса. + + - **Социальные связи**. Следите за друзьями, делитесь достижениями и создавайте свое фитнес-сообщество. + + - **Настраиваемый интерфейс**. Наслаждайтесь многоязычной поддержкой, темными/светлыми темами и интерфейсами, которые адаптируются к ролям администратора или пользователя. + + - **Комплексное отслеживание здоровья** - Синхронизируйте данные о составе тела и записывайте измерения веса. + + - **Контроль конфиденциальности**. Управляйте тем, кто видит ваши действия, с помощью гибких настроек конфиденциальности. + + - **Сторонняя интеграция**. Подключайтесь к своим любимым фитнес-приложениям для унифицированного опыта. +backupIgnore: + - data/logs/* +developer: João Vitória Silva +website: https://docs.endurain.com/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/2764 +repo: https://github.com/joaovitoriasilva/endurain +support: https://github.com/joaovitoriasilva/endurain/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "admin" +defaultPassword: "admin" +dependencies: [] +releaseNotes: >- + ⚠️ Внимание: ваши пользовательские сеансы будут удалены при обновлении. Пользователям придется пройти аутентификацию еще раз. + + + Исправления ошибок и улучшения: + - Исправлен мобильный OAuth2/SSO, не работающий с системным браузером. + - Исправлен вес, который не сохранялся и не отображался в виде десятичного значения. + - Исправлена неправильная единица измерения каденса. + - Исправлена ошибка, из-за которой страница активности не обновлялась при выборе другого действия из раскрывающегося списка уведомлений. + + + Полные примечания к выпуску можно найти по адресу https://github.com/joaovitoriasilva/endurain/releases. +path: "" diff --git a/endurain/docker-compose.yml b/endurain/docker-compose.yml new file mode 100644 index 0000000..2ce4bc9 --- /dev/null +++ b/endurain/docker-compose.yml @@ -0,0 +1,46 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: endurain_app_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + app: + image: ghcr.io/endurain-project/endurain:v0.17.6@sha256:d18d18d69b0c280db85c6f91172b678fcfc58b081e835aa6284b63b0fb87e023 + environment: + UID: "1000" + GID: "1000" + DB_TYPE: postgres + DB_HOST: endurain_db_1 + DB_PORT: 5432 + DB_PASSWORD: endurain + SECRET_KEY: ${APP_PASSWORD} + BEHIND_PROXY: "true" + env_file: + - ${APP_DATA_DIR}/settings.env + volumes: + - ${APP_DATA_DIR}/data/app:/app/backend/data + - ${APP_DATA_DIR}/data/logs:/app/backend/logs + depends_on: + db: + condition: service_healthy + restart: on-failure + + db: + image: postgres:17.4@sha256:4aed4b0525233308fc5de1b8d47f92326460d598dc5f004d14b41f183360b4e9 + user: "1000:1000" + environment: + POSTGRES_PASSWORD: endurain + POSTGRES_DB: endurain + POSTGRES_USER: endurain + PGDATA: /var/lib/postgresql/data/pgdata + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + restart: on-failure + healthcheck: + test: ["CMD-SHELL", "pg_isready -U endurain"] + interval: 5s + timeout: 5s + retries: 5 diff --git a/endurain/hooks/pre-start b/endurain/hooks/pre-start new file mode 100755 index 0000000..ce7a0bf --- /dev/null +++ b/endurain/hooks/pre-start @@ -0,0 +1,114 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот сценарий проверяет файл среды на наличие значений заполнителей и заменяет их сгенерированными ключами или системными переменными. + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="$APP_DIR/data" +DESIRED_OWNER="1000:1000" +ENV_FILE="$APP_DIR/settings.env" + +# Проверьте, существует ли файл +if [ ! -f "$ENV_FILE" ]; then + echo "Error: Environment file not found at $ENV_FILE" + exit 1 +fi + +# Проверьте, установлено ли значение FERNET_KEY на "changeme". +if grep -Eq '^FERNET_KEY= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for FERNET_KEY detected. Generating a new key..." + + # Создать новый ключ FERNET + FERNET_KEY=$(python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())") + + # Замените заполнитель новым ключом + sed -i -E 's|^FERNET_KEY= *changeme$|FERNET_KEY="'"$FERNET_KEY"'"|' "$ENV_FILE" + + echo "Updated FERNET_KEY in $ENV_FILE" +else + echo "FERNET_KEY is already set. No changes made." +fi + +# Проверьте, установлено ли значение ENDURAIN_HOST на "changeme". +if grep -Eq '^ENDURAIN_HOST= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for ENDURAIN_HOST detected. Adding proper hostname..." + + # Замените заполнитель именем хоста + sed -i -E 's|^ENDURAIN_HOST= *changeme$|ENDURAIN_HOST="'"http://${DEVICE_DOMAIN_NAME}:8865"'"|' "$ENV_FILE" + + echo "Updated ENDURAIN_HOST in $ENV_FILE" +else + echo "ENDURAIN_HOST is already set. No changes made." +fi + +set_correct_permissions() { + local -r path="${1}" + + # Проверьте, существует ли путь (файл или каталог) + if [[ -e "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + echo "Changed ownership of ${path} to ${DESIRED_OWNER}" + fi + else + echo "Skipping ${path} - path does not exist" + fi +} + +# Обработка реструктуризации каталогов для версии 0.13.0. +restructure_directories() { + local -r app_dir="${APP_DATA_DIR}/app" + + # Проверьте, нужно ли нам делать реструктуризацию + if [[ -d "${app_dir}/files" && ! -d "${app_dir}/activity_files" ]]; then + echo "Restructuring directories for Endurain v0.13.0..." + + # Переименуйте каталог файлов в Activity_files + if mv "${app_dir}/files" "${app_dir}/activity_files" 2>/dev/null; then + echo "Renamed ${app_dir}/files to ${app_dir}/activity_files" + else + echo "Failed to rename ${app_dir}/files to ${app_dir}/activity_files" + fi + fi + + # Создайте новые каталоги, если они не существуют. + mkdir -p "${app_dir}/activity_media" + echo "Created ${app_dir}/activity_media directory" + + mkdir -p "${app_dir}/server_images" + echo "Created ${app_dir}/server_images directory" + + # Переместить каталог журналов из app/logs в журналы (на корневом уровне). + if [[ -d "${app_dir}/logs" && ! -d "${APP_DATA_DIR}/logs" ]]; then + if mv "${app_dir}/logs" "${APP_DATA_DIR}/logs" 2>/dev/null; then + echo "Moved ${app_dir}/logs to ${APP_DATA_DIR}/logs" + else + echo "Failed to move ${app_dir}/logs to ${APP_DATA_DIR}/logs" + fi + elif [[ ! -d "${APP_DATA_DIR}/logs" ]]; then + # Создайте каталог журналов, если он не существует. + mkdir -p "${APP_DATA_DIR}/logs" + echo "Created ${APP_DATA_DIR}/logs directory" + fi +} + +# Выполнить реструктуризацию каталога +if [[ -d "${APP_DATA_DIR}/app" ]]; then + restructure_directories +fi + +# Рекурсивно устанавливайте разрешения для всего каталога /app и его подкаталогов. +if [[ -d "${APP_DATA_DIR}/app" ]]; then + chown -R "${DESIRED_OWNER}" "${APP_DATA_DIR}/app" + echo "Set recursive ownership of ${APP_DATA_DIR}/app to ${DESIRED_OWNER}" +fi + +# Рекурсивно устанавливайте разрешения для всего каталога /logs и его подкаталогов. +if [[ -d "${APP_DATA_DIR}/logs" ]]; then + chown -R "${DESIRED_OWNER}" "${APP_DATA_DIR}/logs" + echo "Set recursive ownership of ${APP_DATA_DIR}/logs to ${DESIRED_OWNER}" +fi + +exit 0 diff --git a/endurain/settings.env b/endurain/settings.env new file mode 100644 index 0000000..49a711b --- /dev/null +++ b/endurain/settings.env @@ -0,0 +1,3 @@ +FERNET_KEY=changeme +GEOCODES_MAPS_API=changeme +ENDURAIN_HOST=changeme diff --git a/esphome/data/.gitkeep b/esphome/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/esphome/data/secrets.yaml b/esphome/data/secrets.yaml new file mode 100644 index 0000000..e69de29 diff --git a/esphome/dfwebos-app.yml b/esphome/dfwebos-app.yml new file mode 100644 index 0000000..00042f6 --- /dev/null +++ b/esphome/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: esphome +category: automation +name: ESPHome +version: "2026.4.3" +tagline: Интеллектуальное управление всеми вашими устройствами ESP8266/ESP32. +description: >- + ESPHome — это система управления вашим ESP8266/ESP32 с помощью простых, но мощных файлов конфигурации и удаленного управления ими через системы домашней автоматизации. +developer: ESPHome +website: https://esphome.io +dependencies: [] +repo: https://github.com/esphome/esphome +support: https://community.home-assistant.io/c/esphome +port: 6052 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +releaseNotes: >- + Это выпуск исправлений с исправлениями ошибок в нескольких компонентах: + - Исправлены триггеры LVGL на вкладках просмотра вкладок. + - Исправлена ошибка Windows EINVAL при проверке строк часового пояса POSIX. + - Исправлен тип генерации кода продолжительности глубокого сна. + - Исправлено устаревшее состояние подключения к Wi-Fi после смены состояний. + - Исправлены шаблонные типы целочисленных полей в поворотном энкодере и компонентах AT581x. + - Исправлены проблемы с загрузкой и подключением к Wi-Fi, когда раздел NVS отсутствует или имеет метку, отличную от умолчанию. + - Исправлен рендеринг RGB565+альфа для многокадровой анимации. + - Унифицированное время ожидания загрузки Nextion TFT до 5000 мс. + - Добавлена подача сторожевого таймера в сенсорный компонент ESP32. + + + Полные примечания к выпуску можно найти по адресу https://esphome.io/changelog/2026.4.3/. +submitter: ShonP40 +submission: https://github.com/getumbrel/dfwebos-apps/pull/43 diff --git a/esphome/docker-compose.yml b/esphome/docker-compose.yml new file mode 100644 index 0000000..c2a6b49 --- /dev/null +++ b/esphome/docker-compose.yml @@ -0,0 +1,9 @@ +version: "3.7" + +services: + server: + image: esphome/esphome:2026.4.3@sha256:d9da091d4d2fc072d238177ce07e02a6cc014b31677da653a36ac68dd6caaccd + network_mode: host + volumes: + - ${APP_DATA_DIR}/data:/config + restart: on-failure diff --git a/etherpad/data/etherpad-var/.gitkeep b/etherpad/data/etherpad-var/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/etherpad/data/etherpad-var/.gitkeep @@ -0,0 +1 @@ + diff --git a/etherpad/data/plugins/.gitkeep b/etherpad/data/plugins/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/etherpad/data/plugins/.gitkeep @@ -0,0 +1 @@ + diff --git a/etherpad/data/postgres_data/.gitkeep b/etherpad/data/postgres_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/etherpad/data/postgres_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/etherpad/dfwebos-app.yml b/etherpad/dfwebos-app.yml new file mode 100644 index 0000000..29be7c0 --- /dev/null +++ b/etherpad/dfwebos-app.yml @@ -0,0 +1,56 @@ +manifestVersion: 1 +id: etherpad +name: Etherpad +tagline: Интуитивно понятный инструмент для совместного написания статей в режиме реального времени. +category: files +version: "2.7.2" +port: 9002 +description: >- + ⚙️ Панель администратора Etherpad доступна по адресу «http://umbrel.local:9002/admin/".». + Вы можете найти свои уникальные учетные данные, щелкнув правой кнопкой мыши значок приложения Etherpad на главном экране DFWebOS и выбрав «Показать учетные данные по умолчанию». + + + 📝 Etherpad — это веб-редактор с открытым исходным кодом для совместной работы в режиме реального времени, который позволяет нескольким пользователям одновременно редактировать документ из разных мест. Это особенно ценно для командной работы, групповых проектов или ситуаций, когда многим людям необходимо одновременно внести свой вклад в один и тот же документ. Одной из выдающихся особенностей Etherpad является функция совместной работы в реальном времени: когда пользователи вносят изменения, эти изменения отображаются в режиме реального времени для всех участников, причем вклады каждого пользователя имеют цветовую маркировку, чтобы их можно было отличить. + + + Платформа спроектирована простой и интуитивно понятной, с понятным и понятным интерфейсом, в котором особое внимание уделяется написанию и редактированию. Etherpad не требует от пользователей регистрации или установки какого-либо программного обеспечения, что позволяет любому быстро начать совместную работу. + + + Еще одной ключевой особенностью Etherpad является система истории версий, которая позволяет пользователям просматривать предыдущие версии документа и возвращаться к ним. Это гарантирует, что изменения можно будет отслеживать и при необходимости восстанавливать, что делает его полезным инструментом для управления долгосрочными совместными проектами. + + + Будучи инструментом с открытым исходным кодом, Etherpad предлагает гибкость в использовании. Пользователи могут запускать его на своих собственных серверах для большего контроля и настройки или просто использовать общедоступный экземпляр, размещенный у различных поставщиков услуг. Платформа обладает широкими возможностями расширения: доступны плагины для дополнительных функций, таких как встраивание изображений, добавление списков задач или даже интеграция с другими инструментами. + + + Etherpad завоевал популярность в академических, деловых кругах и средах разработки благодаря своим простым, но эффективным функциям совместной работы. Пишите ли вы заметки о встречах, составляете отчет или обсуждаете идеи с командой, Etherpad предлагает мощное и удобное решение для совместного написания. +developer: The Etherpad Foundation +website: https://etherpad.org/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2132 +repo: https://github.com/ether/etherpad-lite +support: https://github.com/ether/etherpad-lite/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + ⚠️ Abiword заменен на LibreOffice для импорта/экспорта документов. Если вы использовали Abiword для преобразования DOCX/ODT/PDF, вам необходимо обновить настройки, чтобы они указывали на ваш двоичный файл LibreOffice. + + + Этот выпуск включает в себя различные улучшения и исправления: + - Улучшения доступности, включая исправленную семантику диалогов, лучшее управление фокусом, отсутствие меток значков и правильный атрибут языка на страницах. + - Значок чата теперь снова работает правильно, отключенные переключатели отображаются правильно, а макет имени пользователя больше не переполняется. + - Экспорт конкретной ревизии через `/export/etherpad` теперь возвращает правильную ревизию, а не всегда возвращает последнюю версию. + - Отмена и повтор теперь прокручивают область просмотра по курсору, поэтому отмененные изменения остаются в поле зрения. + - Page Down и Page Up теперь прокручиваются по высоте области просмотра вместо фиксированного количества строк. + - Ввод текста в документе продолжается после изменения выбора панели инструментов вместо перехода на панель инструментов. + - Переводы администратора интерфейс восстановлены на странице `/admin`. + - Неразрывные пробелы теперь сохраняются правильно. + - Язык браузера теперь определяется автоматически, а не жестко запрограммирован на английский язык. + + + Полные примечания к выпуску можно найти по адресу https://github.com/ether/etherpad-lite/releases. +dependencies: [] +path: "" +defaultUsername: "admin" +deterministicPassword: true diff --git a/etherpad/docker-compose.yml b/etherpad/docker-compose.yml new file mode 100644 index 0000000..90988e8 --- /dev/null +++ b/etherpad/docker-compose.yml @@ -0,0 +1,50 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: etherpad_app_1 + APP_PORT: 9001 + + app: + image: etherpad/etherpad:2.7.2@sha256:b723fe5f2594d5cf61f960a203a4eeb554a5d0435c3689722f575f91aa6ace50 + volumes: + - ${APP_DATA_DIR}/data/plugins:/opt/etherpad-lite/src/plugin_packages + - ${APP_DATA_DIR}/data/etherpad-var:/opt/etherpad-lite/var:rw + depends_on: + - postgres + environment: + NODE_ENV: production + ADMIN_PASSWORD: ${APP_PASSWORD} + DB_CHARSET: utf8mb4 + DB_HOST: etherpad_postgres_1 + DB_NAME: etherpad + DB_PASS: admin + DB_PORT: 5432 + DB_TYPE: "postgres" + DB_USER: admin + DEFAULT_PAD_TEXT: + DISABLE_IP_LOGGING: "false" + LOGLEVEL: DEBUG + SOFFICE: null + ALLOW_UNKNOWN_FILE_ENDS: "true" + TRUST_PROXY: "true" + SKIN_NAME: colibris + SKIN_VARIANTS: super-light-toolbar super-light-editor light-background + SHOW_SETTINGS_IN_ADMIN_PAGE: "true" + SUPPRESS_ERRORS_IN_PAD_TEXT: "false" + restart: on-failure + user: "1000:1000" + + postgres: + image: postgres:15-alpine@sha256:93a6166360be8f1d116b7ea97ebb8dea9e2c9c746349e952738bbba72a961d7c + environment: + POSTGRES_DB: etherpad + POSTGRES_PASSWORD: admin + POSTGRES_PORT: 5432 + POSTGRES_USER: admin + PGDATA: /var/lib/postgresql/data/pgdata + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/postgres_data:/var/lib/postgresql/data/pgdata diff --git a/excalidraw/data/.gitkeep b/excalidraw/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/excalidraw/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/excalidraw/dfwebos-app.yml b/excalidraw/dfwebos-app.yml new file mode 100644 index 0000000..b451a09 --- /dev/null +++ b/excalidraw/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: excalidraw +name: Excalidraw +tagline: Виртуальная доска с открытым исходным кодом, нарисованная от руки. +category: files +version: "0.18.0-7" +port: 4422 +description: >- + ✏️ Excalidraw — это бесплатная виртуальная доска с открытым исходным кодом, которая позволяет пользователям создавать диаграммы, эскизы и визуальные концепции в рисованном стиле. Разработанный для имитации внешнего вида неформальных эскизов, он предлагает игривый, но функциональный способ визуализации идей, планирования проектов и совместной работы с другими. В отличие от традиционных инструментов построения диаграмм, которые нацелены на создание гладких, жестких макетов, Excalidraw использует неровные края и плавные линии, что делает его идеальным для творческого мышления, мозговых штурмов и быстрого прототипирования. + + + По своей сути Excalidraw создан для простоты и удобства использования. Пользователи могут рисовать такие фигуры, как прямоугольники, круги и стрелки, добавлять текст и использовать инструмент от руки для набросков идей. Интерфейс интуитивно понятен и минималистичен, что позволяет даже тем, у кого нет опыта проектирования, сразу же начать рисовать. Он поддерживает совместную работу в режиме реального времени, позволяя нескольким людям работать вместе на одном холсте, просто поделившись ссылкой. Эта функция делает его популярным выбором для удаленных команд, преподавателей и координаторов, которым требуется общее визуальное пространство для взаимодействия. + + + Одной из выдающихся особенностей Excalidraw является возможность работы в автономном режиме. Будучи прогрессивным веб-приложением, оно работает непосредственно в браузере и сохраняет данные локально, поэтому пользователи могут продолжать работу даже без подключения к Интернету. Он также поддерживает экспорт рисунков в несколько форматов, включая PNG, SVG и JSON, что упрощает использование контента, созданного в Excalidraw, в другом месте. + + + Поскольку Excalidraw имеет открытый исходный код, у него появилось много поклонников среди разработчиков. Кодовая база доступна на GitHub, что позволяет участникам расширять ее функции или интегрировать ее в другие платформы. Эта гибкость привела к его использованию в таких инструментах, как Obsidian, Visual Studio Code и различных средах управления проектами, где визуальное сотрудничество является ценным активом. + + + В целом, Excalidraw выделяется как легкая, доступная и управляемая сообществом альтернатива более сложному программному обеспечению для проектирования и построения диаграмм. Его ориентация на ясность, сотрудничество и свободу рисовать без проблем делает его любимым инструментом мыслителей, мастеров и команд по всему миру. +developer: Excalidraw Team +website: https://excalidraw.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/1538 +repo: https://github.com/ozencb/excalidraw-persist +support: https://github.com/ozencb/excalidraw-persist/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Это обновление содержит несколько новых функций и исправлений: + - Совместное использование досок теперь поддерживается через общие ссылки с отдельными разрешениями на редактирование и только чтение. + - Идентификаторы плат были перенесены в UUID с автоматическим переносом существующих плат. + - Сохранение теперь происходит постепенно, синхронизируя только измененные элементы для повышения производительности. + - В интерфейсе вкладка "Корзина" переименована в "Архив". + - Исправлена кнопка копирования URL-адреса, не работающая при соединениях, отличных от HTTPS. + - Исправлены различные проблемы с загрузкой состояний и обработкой ошибок. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/excalidraw/docker-compose.yml b/excalidraw/docker-compose.yml new file mode 100644 index 0000000..1a66b13 --- /dev/null +++ b/excalidraw/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: excalidraw_app_1 + APP_PORT: 80 + + app: + image: ghcr.io/ozencb/excalidraw-persist:0.18.0-persist.7@sha256:8c86a50d299cdcd27e178e80e7567479bf9b6c5eb62d08abbbfcd5ddba60bc26 + restart: on-failure + environment: + - PORT=4000 + - NODE_ENV=production + - DB_PATH=/app/data/database.sqlite + volumes: + - ${APP_DATA_DIR}/data:/app/data:rw diff --git a/fedimint-gateway/data/entrypoint.sh b/fedimint-gateway/data/entrypoint.sh new file mode 100755 index 0000000..43cff37 --- /dev/null +++ b/fedimint-gateway/data/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# Bcrypt хэширует пароль перед передачей его шлюзу +export FM_GATEWAY_BCRYPT_PASSWORD_HASH=$(gateway-cli create-password-hash $APP_PASSWORD \ + | sed 's/^"//; s/"$//' \ + | sed 's/\$/$$/g' +) + +gatewayd lnd diff --git a/fedimint-gateway/dfwebos-app.yml b/fedimint-gateway/dfwebos-app.yml new file mode 100644 index 0000000..431b5e7 --- /dev/null +++ b/fedimint-gateway/dfwebos-app.yml @@ -0,0 +1,65 @@ +manifestVersion: 1 +id: fedimint-gateway +category: bitcoin +name: Fedimint Lightning Gateway +version: "v0.11.1" +tagline: Маршрутизация Lightning для Федиминтов +description: >- + Шлюз Fedimint Lightning — это кошелек для электронных денег, который соединяет пользователей Fedimint с более широкой сетью Lightning. Операторы могут получать комиссию, предоставляя исходящие + и входящую ликвидность Lightning через существующий узел LND. + + # Ключевые характеристики + - Модель доверия: как и узел Lightning, шлюз Lightning не является хранителем платежей, которые он маршрутизирует. Шлюзы Lightning должны доверять федерациям, которым они предоставляют услуги ликвидности, но пользователям не обязательно доверять шлюзу Lightning. + + - Поддержка нескольких федераций: один шлюз может обслуживать несколько Fedimint одновременно и обменивать электронные деньги, когда платежи происходят между федерациями, полностью минуя сеть Lightning. + + - Управление ликвидностью: также как и узел Lightning, шлюзы должны поддерживать балансы электронных денег в каждой федерации для облегчения входящих платежей, аналогично входящей ликвидности в Lightning. + + # Управление шлюзом Lightning + + 1. Установить шлюз Lightning легко: всего один щелчок, и он подключается к уже подготовленному узлу LND! + + 2. Убедитесь, что ваш узел LND имеет достаточную связь с более широкой сетью Lightning, в идеале со сбалансированной исходящей и входящей ликвидностью. + + 3. Затем операторы должны подключиться к федерации, используя код приглашения федерации. + + 4. После подключения операторы должны привязать некоторую сумму денег к федерации, чтобы обеспечить входящую ликвидность. + + 5. После того, как оператор получил электронные деньги, URL-адрес подключения шлюза Lightning может быть предоставлен опекунам. Затем опекуны объявят, что этот шлюз Lightning предоставляет федерации услуги Lightning. + + 6. Все готово! Fedimint теперь может отправлять и получать платежи через сеть Lightning. +developer: Fedimint Developers +website: https://fedimint.org/ +dependencies: + - bitcoin + - lightning +repo: https://github.com/fedimint/fedimint +support: https://github.com/fedimint/fedimint/issues +port: 8178 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +defaultUsername: "" +defaultPassword: "" +submitter: Fedimint Developers +submission: https://github.com/getumbrel/dfwebos-apps/pull/4554 +releaseNotes: >- + ⚠️ Изменилось поведение шлюза при первой загрузке: вместо автоматического создания учетных данных теперь отображается мнемонический экран настройки/восстановления. При автоматизации установки используйте флаг Skip_setup. + + + Основные моменты этого выпуска: + - Восстановление шлюза и управление мнемоникой — создайте или восстановите шлюз на основе мнемоники при первой загрузке, а также экспортируйте/импортируйте коды приглашения федерации для восстановления. + - Обнаружение опекуна через Pkarr — опекуны теперь публикуют свою личность и адреса API в децентрализованной системе DNS Pkarr для обнаружения одноранговых узлов без централизованной координации. + - Капитальный ремонт шлюза интерфейс — отправка/получение BOLT12, канал одним щелчком мыши открывается для существующих пиров, отображение баланса в sats/BTC, фильтрация платежей, вкладки пиров и заметок, а также модернизированный дизайн в стиле Material. + - Значительно меньшее использование памяти — исправлена проблема с кэшированием обратной трассировки, из-за которой объем шлюзовой памяти уменьшался с ~1,6 ГБ до менее 200 МБ, с настроенными настройками RocksDB по умолчанию для ограниченных сред. + - Комплексная наблюдаемость — метрики Prometheus для сети, соединений iroh, обработки HTLC, вызовов RPC Bitcoin и задержки между шлюзом и узлом LN. + - Параллельная обработка HTLC для повышения пропускной способности платежей. + - Роль менеджера по ликвидности с ограниченными разрешениями + - Экспорт/импорт кодов приглашения федерации для облегчения восстановления. + - Исправление миграции БД, включенное в этот выпуск патча. + + + Полные примечания к выпуску можно найти по адресу https://github.com/fedimint/fedimint/releases. \ No newline at end of file diff --git a/fedimint-gateway/docker-compose.yml b/fedimint-gateway/docker-compose.yml new file mode 100644 index 0000000..af8dab0 --- /dev/null +++ b/fedimint-gateway/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: fedimint-gateway_gatewayd_1 + APP_PORT: 8178 # ui + + gatewayd: + image: fedimint/gatewayd:v0.11.1@sha256:65365fceb2e85dfb01837553be53a3372f118e094a23f672ef52bc38baf28ddf + restart: on-failure + ports: + - 8177:8177/udp # iroh + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + FM_GATEWAY_DATA_DIR: "/data" + FM_GATEWAY_NETWORK: ${APP_BITCOIN_NETWORK_ELECTRS} + FM_GATEWAY_LISTEN_ADDR: 0.0.0.0:8178 + FM_GATEWAY_IROH_LISTEN_ADDR: 0.0.0.0:8177 + APP_PASSWORD: "${APP_PASSWORD}" + + # Переменные среды подключения LND + FM_LND_RPC_ADDR: "https://${APP_LIGHTNING_NODE_IP}:${APP_LIGHTNING_NODE_GRPC_PORT}" + FM_LND_TLS_CERT: "/lnd/tls.cert" + FM_LND_MACAROON: "/lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/admin.macaroon" + + # Переменные среды подключения Bitcoind + FM_BITCOIND_USERNAME: ${APP_BITCOIN_RPC_USER} + FM_BITCOIND_PASSWORD: ${APP_BITCOIN_RPC_PASS} + FM_BITCOIND_URL: "http://${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}" + entrypoint: /data/entrypoint.sh diff --git a/fedimintd/data/.gitkeep b/fedimintd/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/fedimintd/dfwebos-app.yml b/fedimintd/dfwebos-app.yml new file mode 100644 index 0000000..d11f49f --- /dev/null +++ b/fedimintd/dfwebos-app.yml @@ -0,0 +1,96 @@ +manifestVersion: 1 +id: fedimintd +category: bitcoin +name: Fedimint +version: "v0.11.1" +tagline: Федеративный монетный двор электронных денег Чаумиан для Bitcoin +description: >- + Fedimint — это федерированный монетный двор электронных денег Chaumian, предназначенный для хранения и проведения транзакций биткойнов в сообществе. Это позволяет группам доверенных лиц, + называемые опекунами, для совместного управления монетным двором электронных денег с мультиподписями. + + # Создание федерации + + Создать Федиминт можно двумя способами: + + - Единая Федерация Хранителей — Один Хранитель, управляющий собственным монетным двором. + + - Групповая федерация — несколько стражей вместе управляют монетным двором (минимум 4 стража). + + [Дополнительные рекомендации по развертыванию см. здесь](https://github.com/fedimint/fedimint/blob/master/docs/deploying.md) + + # Церемония шаг за шагом + + 1. Установите и запустите это приложение Fedimint (fedimintd) на своем DFWebOS. + Каждый участвующий опекун запускает свой собственный экземпляр fedimintd. + + 2. Установите пароль + При первом запуске fedimintd каждый хранитель должен создать безопасный пароль. + + 3. Создайте код установки. + После ввода пароля для каждого опекуна генерируется уникальный код настройки. + + 4. Коды настройки обмена + Все опекуны должны делиться своими кодами настройки друг с другом (каждому опекуну нужен код каждого другого опекуна). + + 5. Распределенная генерация ключей (DKG) + После ввода всех кодов настройки начинается процесс DKG. Здесь совместно создаются криптографические ключи федерации. + Этот шаг может занять некоторое время, пока все опекуны подключатся. + + 6. Федерация завершена! + Как только DKG завершится, ваша федерация заработает. Ваша панель опекуна будет доступна для мониторинга. Теперь у вас есть работающий Федиминт! + + # Включение платежей Lightning + + Fedimint поддерживает платежи Lightning через шлюз Lightning. Чтобы использовать Lightning в вашей федерации, есть два варианта: + + 1. Запустите свой собственный! - [Разверните шлюз Lightning на своем DFWebOS](https://apps.dfwebos.com/app/fedimint-gateway). + + 2. Используйте существующий шлюз Lightning. [Обратитесь в Discord, чтобы настроить](https://chat.fedimint.org). + + +developer: Fedimint Developers +website: https://fedimint.org/ +dependencies: + - bitcoin +repo: https://github.com/fedimint/fedimint +support: https://github.com/fedimint/fedimint/issues +port: 8175 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Fedimint Developers +submission: https://github.com/getumbrel/dfwebos-apps/pull/3371 +releaseNotes: >- + Этот выпуск включает в себя значительные улучшения в работе шлюза, обнаружении опекунов и общей надежности: + + + Улучшения шлюза: + - Новая мнемоника первой загрузки и порядок восстановления шлюзов. + - Экспорт и импорт кодов приглашения федерации для упрощения восстановления. + - Поддержка отправки/получения BOLT12 в шлюзе интерфейс + - Переключение отображения баланса между msat, sats и BTC. + - Канал в один клик открывается для существующих пиров + - Фильтрация событий платежей в журнале платежей + - В шлюз интерфейс добавлены вкладки Peers и Notes. + - Параллельная обработка HTLC для повышения пропускной способности платежей. + + Улучшения Стража и Федерации: + - Стражи теперь публикуют свою личность в децентрализованной системе DNS Pkarr для упрощения обнаружения пиров. + - Модернизированная настройка и приборная панель интерфейс с дизайном в стиле Material. + - Отображение QR-кода и сканирование кодов настройки + - Индикатор подключения к сети в настройках и на панели управления интерфейс + - Код установки теперь включает размер федерации для проверки. + - Максимальный лимит опекунов увеличен до 19. + + Производительность и надежность: + - Значительное снижение использования памяти — исправлена проблема с кэшированием обратной трассировки, из-за которой объем шлюзовой памяти уменьшался с ~1,6 ГБ до менее 200 МБ. + - Настройки RocksDB по умолчанию настроены для меньшего использования памяти в ограниченных средах. + - Расширенные метрики Prometheus для сети, соединений iroh, обработки HTLC и вызовов RPC Bitcoin. + - Исправлена проблема с миграцией БД. + + + Полные примечания к выпуску можно найти по адресу https://github.com/fedimint/fedimint/releases. \ No newline at end of file diff --git a/fedimintd/docker-compose.yml b/fedimintd/docker-compose.yml new file mode 100644 index 0000000..dcb8154 --- /dev/null +++ b/fedimintd/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: fedimintd_fedimintd_1 + APP_PORT: 8175 # ui + + fedimintd: + image: fedimint/fedimintd:v0.11.1@sha256:ba23a29ae5b71cf7685c0a4f6594ac92dc9fd6c8915fccc09c8100710177283e + ports: + - 8173:8173/tcp # p2p tls + - 8173:8173/udp # p2p iroh + - 8174:8174/udp # api iroh + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + FM_ENABLE_IROH: "true" + FM_DATA_DIR: "/data" + FM_BITCOIN_NETWORK: ${APP_BITCOIN_NETWORK_ELECTRS} + FM_BITCOIND_USERNAME: ${APP_BITCOIN_RPC_USER} + FM_BITCOIND_PASSWORD: ${APP_BITCOIN_RPC_PASS} + FM_BITCOIND_URL: "http://${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}" + FM_BIND_UI: 0.0.0.0:8175 + restart: on-failure diff --git a/file-browser/data/filebrowser.db b/file-browser/data/filebrowser.db new file mode 100644 index 0000000..e69de29 diff --git a/file-browser/dfwebos-app.yml b/file-browser/dfwebos-app.yml new file mode 100644 index 0000000..8bf2882 --- /dev/null +++ b/file-browser/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: file-browser +category: files +name: File Browser +version: "2.63.2" +tagline: Просматривайте и управляйте файлами, которые вы загружаете на свой DFWebOS. +description: >- + Браузер файлов позволяет загружать, удалять, просматривать, переименовывать и редактировать папки и файлы. + + + Легко управляйте файлами в папке хранения Umbrel, где в настоящее время хранятся загрузки из таких приложений, как Transmission, Sonarr, Radarr и Lidarr. +releaseNotes: >- + Ключевые обновления в этой версии включают в себя: + - Добавлена операция копирования при перетаскивании при удерживании клавиши Ctrl. + - Исправлена ошибка, при которой отрицательная длина загрузки принималась при загрузке TUS. + - Исправлена проверка разрешения на загрузку, когда общий доступ включен. + - Исправлены ограниченные разрешения по умолчанию для пользователей с автоматической аутентификацией через прокси-сервер. + - Исправлена проверка разрешения на загрузку в обработчике ресурсов. + - Исправлено принудительное соблюдение границ каталогов при сопоставлении путей правил. + - Исправлена проверка разрешений владельца общего ресурса при общедоступном доступе. + + + Полные примечания к выпуску доступны по адресу https://github.com/filebrowser/filebrowser/releases. +developer: File Browser +website: https://filebrowser.org/ +dependencies: [] +repo: https://github.com/filebrowser/filebrowser +support: https://github.com/filebrowser/filebrowser/issues +port: 7421 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "/files/" +deterministicPassword: false +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/169 diff --git a/file-browser/docker-compose.yml b/file-browser/docker-compose.yml new file mode 100644 index 0000000..c9c2f2e --- /dev/null +++ b/file-browser/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: file-browser_server_1 + APP_PORT: 80 + + server: + image: filebrowser/filebrowser:v2.63.2@sha256:4dce87308b9f9cfbcf8d0a284fc9565d2b515530a6bae2d920b388161e093f26 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/database/ + - ${APP_DATA_DIR}/data:/config/ + - ${DFWEBOS_ROOT}/data/storage:/data + environment: + - FB_PORT=80 + - FB_DATABASE=/database/filebrowser.db + - FB_ROOT=/data + - FB_NOAUTH=true diff --git a/file-browser/exports.sh b/file-browser/exports.sh new file mode 100644 index 0000000..18e15ff --- /dev/null +++ b/file-browser/exports.sh @@ -0,0 +1,22 @@ +DFWEBOS_DATA_DIR="${DFWEBOS_ROOT}/data" +DFWEBOS_DATA_STORAGE_DIR="${DFWEBOS_DATA_DIR}/storage" +DESIRED_OWNER="1000:1000" + +if [[ ! -d "${DFWEBOS_DATA_STORAGE_DIR}" ]]; then + mkdir -p "${DFWEBOS_DATA_STORAGE_DIR}" +fi + +filebrowser_correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +filebrowser_correct_permission "${DFWEBOS_DATA_DIR}" +filebrowser_correct_permission "${DFWEBOS_DATA_STORAGE_DIR}" \ No newline at end of file diff --git a/file-drop/dfwebos-app.yml b/file-drop/dfwebos-app.yml new file mode 100644 index 0000000..dd92096 --- /dev/null +++ b/file-drop/dfwebos-app.yml @@ -0,0 +1,24 @@ +manifestVersion: 1 +id: file-drop +name: File Drop +version: "1.1.1" +tagline: "Децентрализованный, анонимный и безопасный обмен файлами" +category: files +description: "File Drop — это децентрализованное приложение с открытым исходным кодом для анонимного обмена изображениями, видео и другими файлами. Он использует одноранговые протоколы и межпланетную файловую систему (IPFS) для обеспечения прямой бессерверной передачи файлов, повышая конфиденциальность и безопасность." +releaseNotes: >- + Этот выпуск содержит различные исправления ошибок и улучшения производительности. +developer: "besoeasy" +website: "https://github.com/besoeasy/file-drop" +repo: "https://github.com/besoeasy/file-drop" +support: "https://github.com/besoeasy/file-drop/issues" +port: 3232 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +path: "/" +defaultUsername: "" +defaultPassword: "" +submitter: besoeasy +submission: https://github.com/getumbrel/dfwebos-apps/pull/2392 diff --git a/file-drop/docker-compose.yml b/file-drop/docker-compose.yml new file mode 100644 index 0000000..3bb9420 --- /dev/null +++ b/file-drop/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: file-drop_app_1 + APP_PORT: 3232 + + app: + image: ghcr.io/besoeasy/file-drop:1.1.1@sha256:672d05e260c88bd6d923b2b0b3b845bd80b35e0255cec35b2f047aa7a6525e5f + user: "1000:1000" + restart: on-failure + stop_grace_period: 5m + environment: + - NODE_ENV=production diff --git a/firefly-iii-importer/dfwebos-app.yml b/firefly-iii-importer/dfwebos-app.yml new file mode 100644 index 0000000..5c9b872 --- /dev/null +++ b/firefly-iii-importer/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1.1 +id: firefly-iii-importer +category: finance +name: Firefly III Importer +version: "2.3.2" +tagline: Импортируйте свои транзакции в Firefly III. +description: >- + Firefly III — менеджер ваших личных финансов. Импортер данных создан, чтобы помочь вам импортировать транзакции в Firefly III. Он отделен от Firefly III по соображениям безопасности и обслуживания. + + + Импортер данных не подключается к вашему банку напрямую. Вместо этого он использует Nordigen и SaltEdge для подключения к более чем 6000 банкам по всему миру. Эти услуги бесплатны для пользователей Firefly III, но требуют регистрации. Имейте в виду, что эти службы имеют собственную политику конфиденциальности и использования данных. + + + Импортер данных может импортировать файлы CSV, которые вы скачали из своего банка. + + + Импортер данных можно запустить один раз для массового импорта. Вы также можете запускать его регулярно, чтобы быть в курсе новых транзакций. +developer: Firefly III +website: https://www.firefly-iii.org/ +dependencies: + - firefly-iii +repo: https://github.com/firefly-iii/data-importer +support: https://docs.firefly-iii.org/references/data-importer/json/ +port: 30010 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +releaseNotes: >- + ⚠️ Некоторые изменения в этой версии могут привести к дублированию транзакций из-за изменений в процедурах обработки данных. + + + В этом выпуске добавлена поддержка новых токенов доступа UUID и исправлено несколько проблем: + - Добавлена поддержка новых токенов доступа UUID, используемых Firefly III v6.6.0 и более поздних версий. + - Исправлена ошибка включения обнаружения дубликатов банковских операций из-за идентификаторов учетных записей, привязанных к сеансу. + - Исправлен импорт GoCardless, не отправлявший уведомления об ошибках по истечении срока действия EUA. + - Исправлены проблемы с включением импортера банковских операций при указании диапазонов дат. + - Исправлена ошибка «Невозможно изменить информацию заголовка» в конечной точке автозагрузки. + - Исправлены запросы SimpleFIN диапазона дат, превышающие 90 дней, которые не были правильно разбиты на части. + - Исправлены проблемы с аутентификацией OAuth в импортере. + + + Полные примечания к выпуску можно найти по адресу https://github.com/firefly-iii/data-importer/releases. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/948 diff --git a/firefly-iii-importer/docker-compose.yml b/firefly-iii-importer/docker-compose.yml new file mode 100644 index 0000000..373b0da --- /dev/null +++ b/firefly-iii-importer/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: firefly-iii-importer_importer_1 + APP_PORT: 8080 + + importer: + image: fireflyiii/data-importer:version-2.3.2@sha256:4e2cbcb0d95c34850534a3772f1732c00f6412077db33b1863703a1b628bdc12 + restart: on-failure + environment: + # контейнер firefly-iii: + - FIREFLY_III_URL=http://firefly-iii_server_1:8080 + - VANITY_URL=http://${DEVICE_DOMAIN_NAME}:30009 diff --git a/firefly-iii-importer/hooks/pre-start b/firefly-iii-importer/hooks/pre-start new file mode 100755 index 0000000..aabf602 --- /dev/null +++ b/firefly-iii-importer/hooks/pre-start @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Отложить запуск Firefly III Importer до тех пор, пока не запустится основное приложение Firefly III. + +FIREFLY_CONTAINER_NAME="firefly-iii_server_1" + +while true; do + if [ "$(docker ps -q -f name=$FIREFLY_CONTAINER_NAME)" ]; then + # Если серверный контейнер firefly-iii запущен, мы прерываем работу и выходим, чтобы импортер мог запустить + echo "$FIREFLY_CONTAINER_NAME is running" + break + else + # Если контейнер не запущен, подождите 5 секунд, а затем проверьте еще раз. + echo "Waiting for $FIREFLY_CONTAINER_NAME to start..." + sleep 5 + fi +done \ No newline at end of file diff --git a/firefly-iii/data/logs/.gitkeep b/firefly-iii/data/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/firefly-iii/data/mysql/.gitkeep b/firefly-iii/data/mysql/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/firefly-iii/data/upload/.gitkeep b/firefly-iii/data/upload/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/firefly-iii/dfwebos-app.yml b/firefly-iii/dfwebos-app.yml new file mode 100644 index 0000000..dd6e8a6 --- /dev/null +++ b/firefly-iii/dfwebos-app.yml @@ -0,0 +1,62 @@ +manifestVersion: 1.1 +id: firefly-iii +category: finance +name: Firefly III +version: "6.6.2" +tagline: Ваш личный финансовый менеджер +description: >- + Firefly III — менеджер ваших личных финансов. Это самостоятельный хостинг с открытым исходным кодом. Это означает, что оно бесплатное, в нем нет рекламы и отслеживания. + + + Полное управление транзакциями + + Firefly III имеет систему двойной бухгалтерии. Вы можете быстро вводить и организовывать свои транзакции в нескольких валютах. + + + Расширенный механизм правил + + Используйте правила, чтобы быстро преобразовать сокращенные записи в подробные транзакции или очистить ужасные файлы CSV вашего банка. + + + Бюджеты, категории и теги + + Назовите свой яд. Нравится ли вам работать с тегами? Вам нужно спланировать свои расходы? Хотите классифицировать все расходы на хобби? Не смотрите дальше. Firefly III поддерживает все виды. Бюджеты могут быть расширены за счет ограничений в нескольких валютах, поэтому вы можете планировать как ежедневные семейные расходы, так и то, что вы тратите в имперских кредитах при посещении Татуина. + + + Информативные отчеты + + Firefly III имеет расширенные возможности отчетности, показывающие ваши расходы за неделю, месяц или год. Но это также может помочь вам проверить свои учетные записи с помощью подробного просмотра списков. Или, возможно, сравнить бюджеты или теги? Это все возможно. + + + JSON отдых API + + Для продвинутых и мобильных пользователей Firefly III предлагает расширенный JSON REST API, который позволяет вам использовать наиболее важные функции Firefly III. Создавайте транзакции, управляйте категориями и получайте данные диаграмм из любого приложения или системы. +backupIgnore: + - data/logs/* +developer: Firefly III +website: https://www.firefly-iii.org/ +dependencies: [] +repo: https://github.com/firefly-iii/firefly-iii +support: https://docs.firefly-iii.org/firefly-iii +port: 30009 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +releaseNotes: >- + 🚨 Исправление безопасности: токены OAuth могли генерироваться до подтверждения вашего состояния 2FA, что потенциально позволяло получить доступ к вашим данным, несмотря на включение MFA. Пожалуйста, обновите версию при первой же возможности. + + + Ключевые улучшения в этом выпуске: + - Исправлен столбец текущего баланса, который не обновлялся мгновенно для новых записей с использованием правил. + - Исправлен валидатор года, принимающий неверные годы при сохранении или редактировании транзакции. + - Улучшена проверка пароля. + - Исправлена сморщенная боковая панель, расширяющаяся при навигации по значкам. + + + Полные примечания к выпуску можно найти по адресу https://github.com/firefly-iii/firefly-iii/releases. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/378 diff --git a/firefly-iii/docker-compose.yml b/firefly-iii/docker-compose.yml new file mode 100644 index 0000000..ddb2709 --- /dev/null +++ b/firefly-iii/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: firefly-iii_server_1 + APP_PORT: 8080 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: fireflyiii/core:version-6.6.2@sha256:783676cad3a9aed58539ae270d6849f15abefc4300175f1526b3f46b74ad96ce + # Этот образ запускается под именем user/group www-data:www-data. + # user: "1000:1000" + restart: on-failure + environment: + APP_KEY: $APP_FIREFLY_III_APP_KEY + DB_HOST: firefly-iii_db_1 + DB_PORT: 3306 + DB_CONNECTION: mysql + DB_DATABASE: fireflyiii + DB_USERNAME: fireflyiii + DB_PASSWORD: moneyprintergobrrr + volumes: + - ${APP_DATA_DIR}/data/upload:/var/www/html/storage/upload + - ${APP_DATA_DIR}/data/logs:/var/www/html/storage/logs + + db: + image: mariadb:10.9.4@sha256:f5146e2e0999a6afcf2a9134bb415ad068bf80ec29704f374f6f7dabb145738d + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/mysql:/var/lib/mysql + environment: + MYSQL_DATABASE: "fireflyiii" + MYSQL_USER: "fireflyiii" + MYSQL_PASSWORD: "moneyprintergobrrr" + MYSQL_ROOT_PASSWORD: "moneyprintergobrrr" diff --git a/firefly-iii/exports.sh b/firefly-iii/exports.sh new file mode 100644 index 0000000..58de982 --- /dev/null +++ b/firefly-iii/exports.sh @@ -0,0 +1 @@ +export APP_FIREFLY_III_APP_KEY=$(derive_entropy "env-${app_entropy_identifier}-APP_KEY" | head -c32) \ No newline at end of file diff --git a/firefly-iii/hooks/pre-start b/firefly-iii/hooks/pre-start new file mode 100755 index 0000000..e809fad --- /dev/null +++ b/firefly-iii/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Мы вынуждены запустить user/group 33 +# Поэтому мы устанавливаем владельца каталогов данных на 33:33. +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")/data" + +DESIRED_OWNER="33:33" + +LOGS_DATA_DIR="${APP_DATA_DIR}/logs" +UPLOAD_DATA_DIR="${APP_DATA_DIR}/upload" + +invoiceninja_correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +invoiceninja_correct_permission "${LOGS_DATA_DIR}" +invoiceninja_correct_permission "${UPLOAD_DATA_DIR}" diff --git a/firefox/data/config/.gitkeep b/firefox/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/firefox/dfwebos-app.yml b/firefox/dfwebos-app.yml new file mode 100644 index 0000000..76605ba --- /dev/null +++ b/firefox/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1.2 +id: firefox +category: networking +name: Firefox +version: "139.0.4" +tagline: "Firefox — бесплатный веб-браузер с открытым исходным кодом." +description: >- + ⚠️ Уведомление об удалении: приложение Firefox отключено, поскольку больше нет обновлений, работающих без HTTPS. + + + Приобретите браузер, который защитит самое важное. + + + Никакой сомнительной политики конфиденциальности или лазейки для рекламодателей. Просто молниеносный браузер, который вас не продаст. + + + Получите всю скорость и инструменты без вторжения в личную жизнь. Браузер Firefox собирает так мало данных о вас, что нам даже не требуется ваш адрес электронной почты для загрузки. Это связано с тем, что в отличие от других браузеров мы не имеем финансовой заинтересованности в слежении за вами в Интернете. + + + Firefox предназначен для всех: + + + Доступный на более чем 90 языках и совместимый с компьютерами под управлением Windows, Mac и Linux, Firefox работает независимо от того, что вы используете и где находитесь. Для наилучшего результата убедитесь, что ваша операционная система обновлена. +releaseNotes: >- + В этом выпуске Firefox исправлено множество ошибок и улучшены: + + + - Исправлено зависание Firefox при переключении между приложениями или открытии определенных панелей в браузере. + - Исправлен сложный выбор опций раскрывающегося меню на странице настроек Firefox при выборе через поиск на странице. + - Исправлены различные проблемы с выбором при тройном щелчке по тексту в некоторых ситуациях. + - Исправлено неправильное имя файла, используемое при установке изображения в качестве обоев рабочего стола в Windows. + - Различные исправления безопасности + + + Полные примечания к выпуску доступны по адресу https://www.mozilla.org/en-US/firefox/notes/. +developer: Mozilla Foundation +website: https://www.mozilla.org/en-US/firefox/ +dependencies: [] +repo: https://support.mozilla.org/en-US/contribute +support: https://support.mozilla.org/en-US/products/firefox +port: 3434 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/253 +disabled: true diff --git a/firefox/docker-compose.yml b/firefox/docker-compose.yml new file mode 100644 index 0000000..2d33362 --- /dev/null +++ b/firefox/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: firefox_server_1 + APP_PORT: 3000 + + server: + image: linuxserver/firefox:139.0.4@sha256:01c090309f63bc619a1df80bf14fdc87cb6fd922d956da48a968a60ab5a0df6d + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + shm_size: "1gb" diff --git a/fizzy/data/app/.gitkeep b/fizzy/data/app/.gitkeep new file mode 100644 index 0000000..d3f5a12 --- /dev/null +++ b/fizzy/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/fizzy/dfwebos-app.yml b/fizzy/dfwebos-app.yml new file mode 100644 index 0000000..d917c20 --- /dev/null +++ b/fizzy/dfwebos-app.yml @@ -0,0 +1,30 @@ +manifestVersion: 1 +id: fizzy +category: social +name: Fizzy +version: "754aaa5" +tagline: Канбан, каким он должен быть. Не так, как было. +description: >- + Fizzy — это свежая, современная и восхитительно простая канбан-доска от компании 37signals (создателей Basecamp и HEY). + + + Устали от раздутых инструментов, таких как Trello или Jira? Fizzy убирает ненужные функции и предоставляет быстрый, увлекательный и интуитивно понятный способ отслеживания задач, ошибок, идей, проблем или небольших проектов. Благодаря красочному интерфейс, плавным перетаскиваемым доскам и автоматическому закрытию неактивных карточек ваш рабочий процесс будет легким и сосредоточенным. + + + Идеально подходит для личного использования, небольших команд или тех, кто работает на DFWebOS и хочет управлять проектами с учетом конфиденциальности и без раздувания — Канбан, каким он должен быть. +releaseNotes: "" +developer: 37signals +website: https://www.fizzy.do +dependencies: [] +repo: https://github.com/basecamp/fizzy +support: https://github.com/basecamp/fizzy/issues +port: 8005 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +submitter: Maurice Wipf +submission: https://github.com/getumbrel/dfwebos-apps/pull/4238 diff --git a/fizzy/docker-compose.yml b/fizzy/docker-compose.yml new file mode 100644 index 0000000..4c9a364 --- /dev/null +++ b/fizzy/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: fizzy_server_1 + APP_PORT: 80 + PROXY_AUTH_ADD: 'false' + + server: + image: ghcr.io/mauricewipf/fizzy-umbrel:754aaa5@sha256:3c74a27d749db915c76654bf7590b4d2eee5eeb9cb495e23a52ebe3c51b5e372 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/app:/rails/storage + environment: + RAILS_ENV: production + SECRET_KEY_BASE: ${APP_SEED} + DATABASE_ADAPTER: sqlite + ACTIVE_STORAGE_SERVICE: local + SOLID_QUEUE_IN_PUMA: 'true' + FORCE_SSL: 'false' + ASSUME_SSL: 'false' + deploy: + resources: + limits: + memory: 2G + cpus: '2' + reservations: + memory: 512M + cpus: '0.5' + restart: on-failure diff --git a/flaresolverr/dfwebos-app.yml b/flaresolverr/dfwebos-app.yml new file mode 100644 index 0000000..9ef5026 --- /dev/null +++ b/flaresolverr/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: flaresolverr +category: networking +name: flaresolverr +version: "3.4.6" +tagline: Прокси-сервер для обхода защиты Cloudflare и DDoS-GUARD +description: > + FlareSolverr — это прокси-сервер, предназначенный для обхода защиты от ботов и DDoS от Cloudflare и DDoS-GUARD. + Он работает путем запуска прокси-сервера и ожидания запросов пользователей. + + + Когда запрос получен, он использует Selenium с undetected-chromedriver для запуска безголового браузера (Chrome). + Этот браузер переходит по запрошенному URL-адресу, автоматически решая проблемы безопасности. + После устранения проблемы HTML-код и необходимые файлы cookie отправляются обратно пользователю. + + + Эти возвращенные файлы cookie затем можно использовать с другими HTTP-клиентами для прямого доступа к защищенному контенту. + Он поддерживает как временные, так и постоянные пользовательские сеансы. + + + Примечание. Используйте http://flaresolverr_server_1:8191/v1 в качестве URL-адреса для интеграции с другими приложениями. +developer: FlareSolverr +website: https://github.com/FlareSolverr/FlareSolverr +dependencies: [] +repo: https://github.com/FlareSolverr/FlareSolverr +support: https://github.com/FlareSolverr/FlareSolverr/issues +port: 8191 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +releaseNotes: "" +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/4125 diff --git a/flaresolverr/docker-compose.yml b/flaresolverr/docker-compose.yml new file mode 100644 index 0000000..afea1ec --- /dev/null +++ b/flaresolverr/docker-compose.yml @@ -0,0 +1,23 @@ +services: + app_proxy: + environment: + APP_HOST: flaresolverr_web_1 + APP_PORT: 8000 + + web: + image: mrsunglasses/flaresolverr-status:0.0.2@sha256:5a12b6ee183b64b87546b5f30537abaf333f7b2cd83856e6e2bcca874d165dc9 + environment: + - URL=http://flaresolverr_server_1:8191/v1 + restart: on-failure + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + + server: + image: ghcr.io/flaresolverr/flaresolverr:v3.4.6@sha256:7962759d99d7e125e108e0f5e7f3cdbcd36161776d058d1d9b7153b92ef1af9e + environment: + LOG_LEVEL: info + restart: on-failure diff --git a/flatnotes/data/.gitkeep b/flatnotes/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/flatnotes/dfwebos-app.yml b/flatnotes/dfwebos-app.yml new file mode 100644 index 0000000..bb9e84d --- /dev/null +++ b/flatnotes/dfwebos-app.yml @@ -0,0 +1,41 @@ +manifestVersion: 1 +id: flatnotes +category: files +name: flatnotes +version: "5.5.4" +tagline: Самостоятельное приложение для создания заметок без базы данных. +description: > + 📝 Flatnotes — это чистое, автономное приложение для создания заметок, которое с уважением относится к вашим идеям. Каждая написанная вами заметка живет как обычный файл Markdown в простой папке на вашем сервере. + Никаких баз данных, скрывающихся в фоновом режиме, никакой привязки к поставщику, никакой сложной структуры. Вы всегда полностью контролируете свои мысли и данные. + + + + Интерфейс не отвлекает вас, поэтому вы можете полностью сосредоточиться на письме. Быстро создавайте заметки, добавляйте теги и просматривайте свои знания с помощью мощного полнотекстового поиска. + Викиссылки позволяют легко объединять идеи, превращая ваши заметки в сеть личных знаний. Переключайтесь между необработанным Markdown и усовершенствованным редактором WYSIWYG всякий раз, когда у вас меняется настроение. + + + + Flatnotes остается легким, но функциональным. Все синхронизируется мгновенно, даже если вы редактируете файлы вне приложения. + Просматривайте информацию с любого устройства с адаптивным дизайном, который удобен независимо от того, находитесь ли вы за столом или вдали от мира. + Темизация сделает ваше пространство уютным благодаря красивым светлым и темным режимам. + + + + Flatnotes освобождает ваши заметки от проприетарных рамок и позволяет им дышать как Markdown, ориентированный на будущее. + Он может служить вашим личным дневником, помощником в исследованиях, цифровым садом или чем-то еще, во что вырастет ваше творчество. Чистое письмо. Чистая собственность. Нулевой шум. +developer: Adam Dullage +website: https://github.com/dullage/flatnotes +dependencies: [] +repo: https://github.com/dullage/flatnotes +support: https://github.com/dullage/flatnotes/issues +port: 8523 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "admin" +deterministicPassword: true +releaseNotes: "" +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3895 diff --git a/flatnotes/docker-compose.yml b/flatnotes/docker-compose.yml new file mode 100644 index 0000000..658428d --- /dev/null +++ b/flatnotes/docker-compose.yml @@ -0,0 +1,20 @@ +services: + app_proxy: + environment: + APP_HOST: flatnotes_server_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + server: + image: dullage/flatnotes:v5.5.4@sha256:a509830073d6548d35450a98be3a432716430b674cc70ac93cbbaed1555b5a28 + environment: + PUID: 1000 + PGID: 1000 + FLATNOTES_AUTH_TYPE: "password" + FLATNOTES_USERNAME: "admin" + FLATNOTES_PASSWORD: ${APP_PASSWORD} + FLATNOTES_SECRET_KEY: ${APP_SEED} + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data diff --git a/forgejo/data/db/.gitkeep b/forgejo/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/forgejo/data/forgejo/config/.gitkeep b/forgejo/data/forgejo/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/forgejo/data/forgejo/data/.gitkeep b/forgejo/data/forgejo/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/forgejo/dfwebos-app.yml b/forgejo/dfwebos-app.yml new file mode 100644 index 0000000..a2b6036 --- /dev/null +++ b/forgejo/dfwebos-app.yml @@ -0,0 +1,62 @@ +manifestVersion: 1.1 +id: forgejo +category: developer +name: Forgejo +version: "11.0.11" +tagline: Самостоятельная легкая кузница программного обеспечения +description: >- + Forgejo — это легковесная платформа программного обеспечения с автономным размещением, разработанная как полностью автономная и уважающая конфиденциальность альтернатива GitHub, GitLab и Bitbucket. Это ответвление Gitea с дополнительными функциями и улучшениями, реализованными сообществом. Forgejo написан на Go и может работать на оборудовании с низкими ресурсами, таком как Raspberry Pi. + + + 🔑 Ключевые особенности: + + + 🏠 Полностью автономный и приватный + + 🎯 Отслеживание проблем и управление проектами + + 👥 Управление учетной записью/организацией/хранилищем + + 🕶️ Поддержка Tor + + 🛠️ Перехватчики/ключи развертывания репозитория Git + + 📝 Проблемы с репозиторием, запросы на включение и вики + + 👤 Добавить/удалить соавторов репозитория + + 🌐 Граватар и собственный исходный код + + 🖥️ Админ-панель + + ⚙️ Действия Forgejo для CI/CD + + 🚀 Легкий и производительный + + + 🌍 Forgejo представлен вам инклюзивным сообществом под эгидой Codeberg e.V., демократической некоммерческой организации. Это 100% бесплатное программное обеспечение, ориентированное на безопасность, масштабирование, федерацию и конфиденциальность. +developer: Forgejo Community +website: https://forgejo.org/ +dependencies: [] +repo: https://codeberg.org/forgejo/forgejo +support: https://codeberg.org/forgejo/forgejo/issues +port: 8101 +path: "" +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + 🚨 Этот выпуск включает важные исправления безопасности: + - Исправлена проверка запроса PKCE для провайдера удостоверений OAuth при использовании алгоритма S256. + - Исправлено неправильное применение области действия при использовании токенов носителя OAuth с базовой аутентификацией HTTP. + - Исправлены отсутствующие проверки разрешений в конечных точках вложений, которые позволяли изменять вложения, которыми пользователь не владел. + - Исправлены уведомления по электронной почте о новых выпусках, отправляемые пользователям, которые потеряли доступ к репозиторию или неактивны. + - Исправлены отсутствующие проверки разрешений в проектах, принадлежащих пользователю/организации, которые допускали несанкционированные изменения состояния проекта. + - Исправлена отсутствующая проверка разрешений, которая позволяла несанкционированно отменить автоматическое слияние запросов на включение. + - Исправлена уязвимость обхода пути в параметрах перенаправления после входа в систему, которая могла допускать произвольные перенаправления. + + + Полные примечания к выпуску доступны по адресу https://forgejo.org/releases/. +submitter: John Wilddip +submission: https://github.com/getumbrel/dfwebos-apps/pull/2221 diff --git a/forgejo/docker-compose.yml b/forgejo/docker-compose.yml new file mode 100644 index 0000000..b5ba52a --- /dev/null +++ b/forgejo/docker-compose.yml @@ -0,0 +1,50 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: forgejo_server_1 + APP_PORT: 8101 + PROXY_AUTH_ADD: "false" + + server: + image: codeberg.org/forgejo/forgejo:11.0.11-rootless@sha256:3372178750d690c577487dbf37b07d6a20cf2364acf876ca217d0ffa13046590 + user: "1000:1000" + restart: on-failure + ports: + - "${APP_FORGEJO_SSH_PORT}:${APP_FORGEJO_SSH_PORT}" + volumes: + - ${APP_DATA_DIR}/data/forgejo/data:/var/lib/gitea + - ${APP_DATA_DIR}/data/forgejo/config:/etc/gitea + environment: + FORGEJO__security__INSTALL_LOCK: "true" + FORGEJO__server__DOMAIN: "${APP_DOMAIN}" + FORGEJO__server__HTTP_PORT: 8101 + FORGEJO__server__SSH_DOMAIN: "${APP_DOMAIN}" + FORGEJO__server__SSH_PORT: "${APP_FORGEJO_SSH_PORT}" + FORGEJO__server__SSH_LISTEN_PORT: "${APP_FORGEJO_SSH_PORT}" + FORGEJO__server__START_SSH_SERVER: "true" + FORGEJO__database__DB_TYPE: "postgres" + FORGEJO__database__HOST: "forgejo_db_1:5432" + FORGEJO__database__NAME: "forgejo" + FORGEJO__database__USER: "forgejo" + FORGEJO__database__PASSWD: "forgejo" + depends_on: + db: + condition: service_healthy + + db: + image: postgres:17.3@sha256:0321e2252ebfeecb8bc1a899755084d29bce872953e1a5a3e25ec0860b739098 + restart: on-failure + user: "1000:1000" + environment: + POSTGRES_USER: forgejo + POSTGRES_PASSWORD: forgejo + POSTGRES_DB: forgejo + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U forgejo"] + interval: 5s + timeout: 5s + retries: 5 diff --git a/forgejo/exports.sh b/forgejo/exports.sh new file mode 100644 index 0000000..bfb7c22 --- /dev/null +++ b/forgejo/exports.sh @@ -0,0 +1,2 @@ +export APP_FORGEJO_SSH_PORT="2223" +export APP_FORGEJO_TOR_HS_EXTRA_PORTS="22:forgejo_server_1:${APP_FORGEJO_SSH_PORT}" diff --git a/formicaio/data/formicaio/.gitkeep b/formicaio/data/formicaio/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/formicaio/dfwebos-app.yml b/formicaio/dfwebos-app.yml new file mode 100644 index 0000000..69d8757 --- /dev/null +++ b/formicaio/dfwebos-app.yml @@ -0,0 +1,96 @@ +manifestVersion: 1 +id: formicaio +name: Formicaio +tagline: Запускайте узлы в одноранговой (P2P) сети Autonomi. +category: crypto +version: "0.6.2" +port: 52100 +description: >- + ## Упростите свою децентрализованную работу с Formicaio + + Formicaio — это интуитивно понятное приложение, созданное для того, чтобы помочь вам запускать узлы на + сеть [Autonomi](https://autonomi.com). Эта P2P-сеть позволяет пользователям + для совместного использования хранилища и пропускной способности в обмен на токены ANT, токен ERC-20 + в сети Arbitrum One. + + Название «Формикайо» происходит от итальянского слова «муравейник». + символизируя совместную и структурированную природу как муравьев, так и + децентрализованную сеть, которую он поддерживает. Точно так же, как муравьи работают вместе, чтобы строить и + поддерживать свои колонии, Formicaio дает пользователям возможность сотрудничать и вносить свой вклад + в сеть Autonomi. + + ## Управление узлами стало проще + + С Formicaio вы можете легко запускать узлы и управлять ими с помощью графического + пользовательский интерфейс (GUI) или терминал. Такая гибкость позволяет выполнять + различные действия над отдельными узлами или группами выбранных узлов, в том числе: + - Создание новых узлов + - Запуск или остановка узлов + - Переработка узлов для создания нового идентификатора узла. + - Удаление узлов + - Обновление узлов при появлении новой двоичной версии. + - Просмотр журналов отдельных узлов в режиме реального времени + - Мониторинг использования памяти и процессора с помощью подробных диаграмм. + - Сортировка узлов по различным критериям, таким как дата создания, статус или количество подключенных узлов. + + Серверная часть Formicaio активно отслеживает ваши узлы, предоставляя информацию в режиме реального времени. + обновления статуса и статистика, включая: + - Баланс вознаграждений для каждого узла + - Использование памяти и процессора + - Количество записей, хранящихся локально + - Текущие одноранговые соединения + - Пиры в таблице маршрутизации + - Пиры, которые избегали узла(ов) + - Предполагаемое общее количество узлов в сети + + ## Настраиваемый мониторинг и управление + + Панель настроек позволяет настраивать задачи мониторинга и управления узлами, включая: + - Автоматическое обновление узлов при появлении новой двоичной версии. + - Настройки задержки для обновлений узлов. + - Частота проверок версии двоичного файла узла. + - Частота запросов баланса токенов + - Частота получения метрик и информации об узлах + - Конфигурация адреса контракта токена ERC20 и URL-адреса RPC для запросов баланса вознаграждения. + + ## Типы соединений для узлов + + При настройке узлов вы можете определить тип их подключения и собственный каталог данных: + - Поддержка UPnP: попытки использовать UPnP для открытия порта на домашнем маршрутизаторе для входящих соединений. Если ваш маршрутизатор не поддерживает UPnP, создайте узлы с отключенным UPnP, чтобы обеспечить подключение. + - IP-адрес прослушивания: этот адрес определяет, к какому сетевому интерфейсу будет привязан узел для входящих подключений. Приложение поддерживает адреса IPv4 (например, `0.0.0.0`, `127.0.0.1`) и IPv6 (например, `::`, `fe80::1`), позволяя пользователям контролировать, доступен ли узел на всех интерфейсах, только локально или в определенной сети. Такая гибкость полезна для запуска узлов в различных средах, таких как локальная разработка, частные сети или общедоступные развертывания. + - Каталог пользовательских данных: в этом каталоге узел будет хранить свои постоянные данные, такие как фрагменты, журналы и файлы конфигурации. Назначая уникальный каталог данных каждому узлу или группе узлов, пользователи могут запускать несколько узлов на одном компьютере без конфликтов данных. Эта опция особенно полезна для расширенных настроек или при запуске узлов с разными жесткими дисками или точками монтирования. +widgets: + - id: "formicaio-stats" + type: "four-stats" + refresh: "5s" + endpoint: "formicaio_proxy:52100/api/stats_widget" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "Total balance" + text: "1.7181" + subtext: "" + - title: "Active nodes" + text: "15/15" + subtext: "" + - title: "Stored records" + text: "69" + subtext: "" + - title: "Network size" + text: "3897207" + subtext: "" +developer: bochaco +website: https://github.com/bochaco/formicaio +submitter: bochaco +submission: https://github.com/getumbrel/dfwebos-apps/pull/1565 +dependencies: [] +repo: https://github.com/bochaco/formicaio +support: https://github.com/bochaco/formicaio/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: "" +path: "" diff --git a/formicaio/docker-compose.yml b/formicaio/docker-compose.yml new file mode 100644 index 0000000..f98a414 --- /dev/null +++ b/formicaio/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: formicaio_proxy_1 + APP_PORT: 52100 + + proxy: + image: bochaco/formicaio_proxy:0.3.0@sha256:49a8f7b1787aa356c9c444fe75b90fbd09da4d9a0be00c3f753e997a3196e1f9 + user: 1000:1000 + environment: + FORMICAIO_ADDR: host.docker.internal:3000 + FORMICAIO_PROXY_PORT: 52100 + extra_hosts: + - host.docker.internal:host-gateway + + app: + image: bochaco/formicaio:0.6.2-native-lcd-disabled@sha256:45d03ee6f65cfc294ba718e5d9e6607009b87331e9886965c4a14714de5a2148 + restart: on-failure + user: 1000:1000 + network_mode: host + stop_grace_period: 5s + environment: + DB_PATH: /data + NODE_MGR_ROOT_DIR: /data + LEPTOS_SITE_ADDR: 0.0.0.0:3000 + volumes: + - ${APP_DATA_DIR}/data/formicaio:/data diff --git a/fossflow/data/diagrams/.gitkeep b/fossflow/data/diagrams/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/fossflow/dfwebos-app.yml b/fossflow/dfwebos-app.yml new file mode 100644 index 0000000..f2bad45 --- /dev/null +++ b/fossflow/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: fossflow +category: networking +name: FossFLOW +version: "0da9ff3" +tagline: Создавайте красивые изометрические диаграммы инфраструктуры. +description: >- + FossFLOW - это многофункциональное прогрессивное веб-приложение (PWA) с открытым исходным кодом, созданное для разработки элегантных и профессиональных **изометрических диаграмм**. + Оно легкое, быстрое и дружелюбное к приватности: все работает локально в вашем браузере. + + + ✨ Ключевые возможности + - 🎨 **Изометрические диаграммы** - создавайте впечатляющие технические и архитектурные диаграммы в 3D-стиле без лишних усилий. + - 💾 **Автосохранение** - ваша работа автоматически сохраняется каждые 5 секунд, поэтому прогресс не теряется. + - 🔒 **Приватность прежде всего** - 100% на стороне клиента; все данные хранятся локально в вашем браузере. + - 📤 **Импорт/экспорт** - сохраняйте и делитесь своей работой в виде JSON-файлов и открывайте ее в любое время. + - 🎯 **Хранилище сессии** - быстрое сохранение без дополнительных запросов и диалогов. + - 🌐 **Офлайн-поддержка** - создавайте и редактируйте диаграммы даже без подключения к интернету. + - 🌍 **Многоязычный интерфейс** - доступно на 8 языках: English, 简体中文, Espanol, Portugues, Francais, हिन्दी, বাংলা, Русский. + + + 🚀 **Почему FossFLOW?** + + + FossFLOW дает возможности изометрического проектирования всем: разработчикам, сетевым инженерам, дизайнерам и преподавателям. + Он отлично подходит для визуализации архитектуры систем, рабочих процессов и инфраструктурных схем без необходимости в платных инструментах или учетных записях. +developer: stan-smith +website: https://github.com/stan-smith/FossFLOW +repo: https://github.com/stan-smith/FossFLOW +support: https://github.com/stan-smith/FossFLOW/issues +port: 8176 +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3959 +releaseNotes: >- + Этот выпуск включает в себя: + - Добавлена поддержка базовой HTTP-аутентификации. + - Исправлены сбои в положении значков при размещении значков. + - Вкладки настроек стали прокручиваемыми, чтобы предотвратить скрытие контента. + - Устранены уязвимости безопасности в зависимостях. + + + Полные примечания к выпуску можно найти по адресу: https://github.com/stan-smith/FossFLOW/blob/master/CHANGELOG.md. +dependencies: [] +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +permissions: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/fossflow/docker-compose.yml b/fossflow/docker-compose.yml new file mode 100644 index 0000000..10d73d9 --- /dev/null +++ b/fossflow/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: fossflow_web_1 + APP_PORT: "80" + + web: + image: stnsmith/fossflow:master-0da9ff3@sha256:5554f931d6197ae1e3c12045089d436dc42181e5f94dc7cfff6dd0357a8b0089 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/diagrams:/data/diagrams + environment: + - NODE_ENV=production + - ENABLE_SERVER_STORAGE=true + - STORAGE_PATH=/data/diagrams + - ENABLE_GIT_BACKUP=false diff --git a/freshrss/data/.gitkeep b/freshrss/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/freshrss/dfwebos-app.yml b/freshrss/dfwebos-app.yml new file mode 100644 index 0000000..3dc9967 --- /dev/null +++ b/freshrss/dfwebos-app.yml @@ -0,0 +1,65 @@ +manifestVersion: 1 +id: freshrss +category: social +name: FreshRSS +version: "1.28.1" +tagline: Бесплатный автономный агрегатор RSS-каналов. +description: >- + FreshRSS — агрегатор и программа чтения RSS. Это позволяет вам легко читать и следить за контентом с нескольких веб-сайтов одновременно. + быстрый взгляд без необходимости переходить с одного веб-сайта на другой. + + + FreshRSS имеет множество функций, в том числе: + + - Агрегация RSS и Atom + + - Отметьте статью как избранную, если она вам понравилась или вы хотите прочитать ее позже. + + - Функционал фильтрации и поиска помогает легко находить статьи. + + - Статистика, показывающая частоту публикаций на всех веб-сайтах, на которые вы подписаны. + + - Импорт/экспорт ваших каналов в формат OPML (подробнее) + + - и многое другое! +releaseNotes: >- + В этом выпуске основное внимание уделяется исправлениям ошибок, в частности устранению проблем версии 1.28.0. + + + Новые возможности: + - Настраиваемое сообщение для закрытых регистраций. + - Имя пользователя теперь отображается в журналах доступа Apache для запросов API. + + + Исправления ошибок: + - Исправлено нежелательное расширение сохраненных поисков в фильтрах. + - Исправлена кодировка действий фильтра для меток. + - Исправлена функция поиска по тегам. + - Исправлено обновление ленты с помощью токенов, когда анонимное обновление отключено. + - Исправлен доступ к RSS и OPML по токену. + - Исправлен ярлык для следующей непрочитанной статьи. + - Исправлено время жизни cookie пользовательского сеанса. + - Исправлена кнопка проверки канала при изменении URL-адреса канала. + - Скрытые каналы больше не учитываются в категории непрочитанных статей. + + + Улучшения производительности: + - Отключен подсчет статей в метках пользователей для Ajax-запросов. + + + Полные примечания к выпуску доступны по адресу https://github.com/FreshRSS/FreshRSS/releases. +developer: FreshRSS Org +website: https://freshrss.org/ +dependencies: [] +repo: https://github.com/FreshRSS/FreshRSS +support: https://github.com/FreshRSS/FreshRSS/issues +port: 3432 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/700 diff --git a/freshrss/docker-compose.yml b/freshrss/docker-compose.yml new file mode 100644 index 0000000..64c8978 --- /dev/null +++ b/freshrss/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: freshrss_server_1 + APP_PORT: 80 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: linuxserver/freshrss:1.28.1@sha256:873fa0d53fbdfeca6f9fcd1c001aeec3db80e5918637f90dc4489495bb858253 + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data:/config diff --git a/frigate/data/config/config.yml b/frigate/data/config/config.yml new file mode 100644 index 0000000..b32f410 --- /dev/null +++ b/frigate/data/config/config.yml @@ -0,0 +1,14 @@ +mqtt: + enabled: False + +cameras: + name_of_your_camera: # <------ Name the camera + ffmpeg: + inputs: + - path: rtsp://10.0.10.10:554/rtsp # <----- The stream you want to use for detection + roles: + - detect + detect: + enabled: False # <---- disable detection until you have a working camera feed + width: 1280 # <---- update for your camera's resolution + height: 720 # <---- update for your camera's resolution \ No newline at end of file diff --git a/frigate/data/storage/.gitkeep b/frigate/data/storage/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frigate/dfwebos-app.yml b/frigate/dfwebos-app.yml new file mode 100644 index 0000000..54c91e6 --- /dev/null +++ b/frigate/dfwebos-app.yml @@ -0,0 +1,58 @@ +manifestVersion: 1 +id: frigate +category: automation +name: Frigate +version: "0.17.1" +tagline: Полный и локальный сетевой видеорегистратор +description: >- + Полноценный локальный сетевой видеорегистратор, разработанный для Home Assistant с обнаружением объектов ИИ. + Использует OpenCV и Tensorflow для локального обнаружения объектов в реальном времени для IP-камер. + + + 🛠️ НАСТРОЙКА + + + - Вы можете настраивать свои камеры прямо в приложении Фрегат, нет необходимости вручную редактировать файлы конфигурации. + + + - Ваш пароль RTSP (при необходимости) — это «пароль приложения по умолчанию», который отображается на странице Frigate в магазине приложений (отображается после установки). +releaseNotes: >- + ⚠️ Как обычно, Фрегат попытается обновить свою конфигурацию автоматически. Перед обновлением по-прежнему рекомендуется создать резервную копию текущей конфигурации и базы данных. + + + 🚨 Это служебная версия с исправлениями безопасности и ошибками: + - Конечная точка необработанной конфигурации ограничена только ролью администратора. + - Исправлена аутентификация между камерами на временной шкале и в конечных точках мультимедиа. + - Исправлен формат ввода РКНН ArcFace. + - Исправлена попытка очистки хранилища, когда Фрегат находится в безопасном режиме. + + + Другие улучшения в этом обновлении включают в себя: + - Улучшено воспроизведение видео в деталях отслеживания. + - Исправлен поиск предварительного просмотра для корректной обработки отсутствующих предварительного просмотра. + - Исправлена логика кодирования миниатюр. + - Исправлена обработка конфигурации go2rtc. + - Исправлены проблемы с GenAI. + - Исправлена поддержка аудиособытий. + - Push-уведомления теперь фильтруются по доступу к камере роли пользователя. + - Различные исправления и улучшения интерфейс. + + + Полные примечания к выпуску доступны по адресу https://github.com/blakeblackshear/frigate/releases. +developer: Blake Blackshear +website: https://frigate.video/ +repo: https://github.com/blakeblackshear/frigate +support: https://github.com/blakeblackshear/frigate/issues +port: 5004 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +deterministicPassword: true +dependencies: [] +permissions: + - GPU +submitter: ~dibref-labter +submission: https://github.com/getumbrel/dfwebos-apps/pull/843 diff --git a/frigate/docker-compose.yml b/frigate/docker-compose.yml new file mode 100644 index 0000000..b8db177 --- /dev/null +++ b/frigate/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: frigate_web_1 + APP_PORT: 5000 + PROXY_AUTH_ADD: "false" + + web: + privileged: true # this may not be necessary for all setups + restart: on-failure + image: ghcr.io/blakeblackshear/frigate:0.17.1@sha256:1724960349dad0bd2ae8ec884171a6fd5755a4dc242a0e66cadbda9c0e85c99b + shm_size: "128mb" # update for your cameras based on calculation above + volumes: + - /etc/localtime:/etc/localtime:ro + - ${APP_DATA_DIR}/data/config:/config + - ${APP_DATA_DIR}/data/storage:/media/frigate + # - тип: tmpfs # Дополнительно: 1 ГБ памяти, уменьшает износ карты SSD/SD + # target: /tmp/cache + # tmpfs: + # size: 1000000000 + ports: + - "8554:8554" # RTSP feeds + - "8555:8555/tcp" # WebRTC over tcp + - "8555:8555/udp" # WebRTC over udp + environment: + FRIGATE_RTSP_PASSWORD: ${APP_PASSWORD} diff --git a/frigate/hooks/pre-start b/frigate/hooks/pre-start new file mode 100755 index 0000000..8b53aab --- /dev/null +++ b/frigate/hooks/pre-start @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Если каталог конфигурации не существует, то это установка до версии 0.13.2, которая должна обрабатывать критические изменения фрегата: +# https://github.com/blakeblackshear/frigate/releases/tag/v0.13.0 + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")/data" +CONFIG_DIR="${APP_DATA_DIR}/config" +OLD_CONFIG_FILE="${APP_DATA_DIR}/config.yml" + +# Создайте новый каталог конфигурации, если он не существует. +if [ ! -d "${CONFIG_DIR}" ]; then + mkdir -p "${CONFIG_DIR}" && chown 1000:1000 "${CONFIG_DIR}" + + # Переместите старый файл config.yml в каталог конфигурации, если он существует. + # Если он не существует, значит, пользователь удалил его. + if [ -f "${OLD_CONFIG_FILE}" ]; then + mv "${OLD_CONFIG_FILE}" "${CONFIG_DIR}/" + else + echo "The old Frigate config file does not exist." + fi +fi diff --git a/fulcrum/data/fulcrum-logs/.gitkeep b/fulcrum/data/fulcrum-logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/fulcrum/data/fulcrum/.gitkeep b/fulcrum/data/fulcrum/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/fulcrum/dfwebos-app.yml b/fulcrum/dfwebos-app.yml new file mode 100644 index 0000000..d6fb322 --- /dev/null +++ b/fulcrum/dfwebos-app.yml @@ -0,0 +1,44 @@ +manifestVersion: 1.1 +id: fulcrum +implements: + - electrs +category: bitcoin +name: Fulcrum +version: "2.1.0" +tagline: Быстрый и маневренный сервер Electrum +description: >- + Запустите свой личный сервер Electrum и подключите свой кошелек, совместимый с Electrum, + включая BitBoxApp, BlueWallet, Electrum Wallet (Android и настольный компьютер), Nunchuk + (Десктоп), Phoenix и Sparrow Wallet вместо использования сторонних + Сервер Электрум. + + + При поддержке Fulcrum от Кэлина Кулиану +developer: Calin Culianu +website: https://fulcrumserver.org/ +submitter: Sahil Phule +submission: https://github.com/getumbrel/dfwebos-apps/pull/1531 +dependencies: + - bitcoin +repo: https://github.com/cculianu/Fulcrum +support: https://github.com/cculianu/Fulcrum/issues +port: 2109 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +releaseNotes: >- + Fulcrum 2.1.0 — это незначительное обновление, добавляющее поддержку нового протокола Electrum Cash v1.6, которое включает улучшения в основном для Bitcoin. Он также содержит исправления ошибок, оптимизации и улучшения пиринга. + + + Ключевые улучшения: + - Поддержка протокола Electrum Cash v1.6. + - Улучшено поведение пиринга. Fulcrum больше не поддерживает активные соединения со всеми узлами, что снижает накладные расходы на соединение. + - Исправлена тайная ошибка сбоя при использовании UPnP с более чем 1024 подключенными клиентами. + + + Полные примечания к выпуску доступны по адресу https://github.com/cculianu/Fulcrum/releases/tag/v2.1.0. +backupIgnore: + - data/fulcrum/fulc2_db diff --git a/fulcrum/docker-compose.yml b/fulcrum/docker-compose.yml new file mode 100644 index 0000000..46f1fee --- /dev/null +++ b/fulcrum/docker-compose.yml @@ -0,0 +1,69 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_FULCRUM_IP + APP_PORT: 3006 + + app: + image: nmfretz/umbrel-fulcrum:1.0.1@sha256:7ebcb84446e55dbbde7711a4ac2d65ca65c55d0092e6640b41ca2d9c4539a3ff + depends_on: + - fulcrum + restart: on-failure + environment: + ELECTRUM_HIDDEN_SERVICE: "${APP_FULCRUM_RPC_HIDDEN_SERVICE}" + ELECTRUM_LOCAL_SERVICE: "${DEVICE_DOMAIN_NAME}" + ELECTRUM_HOST: "${APP_FULCRUM_NODE_IP}" + ELECTRUM_PUBLIC_CONNECTION_PORT: ${APP_FULCRUM_NODE_PORT} + BITCOIN_HOST: "${APP_BITCOIN_NODE_IP}" + RPC_USER: "${APP_BITCOIN_RPC_USER}" + RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}" + RPC_PORT: "${APP_BITCOIN_RPC_PORT}" + volumes: + - "${APP_DATA_DIR}/data/fulcrum-logs:/fulcrum-logs" + networks: + default: + ipv4_address: $APP_FULCRUM_IP + + fulcrum: + image: cculianu/fulcrum:v2.1.0@sha256:71cb19ce9f8318edae1b581a793588c98f55f2f28c12e17327c478ed963ef4e3 + init: true + # Положитесь на стандартный SIGTERM Docker; Fulcrum считает SIGTERM/SIGINT/SIGQUIT изящным + # Щедрый льготный период предотвращает SIGKILL во время checkpoint/flush при выходе + stop_grace_period: 5m + restart: on-failure + user: "1000:1000" + environment: + TCP: 0.0.0.0:${APP_FULCRUM_NODE_PORT} + ADMIN: 0.0.0.0:${APP_FULCRUM_ADMIN_PORT} + BITCOIND: ${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT} + RPCUSER: ${APP_BITCOIN_RPC_USER} + RPCPASSWORD: ${APP_BITCOIN_RPC_PASS} + PEERING: "false" + ANNOUNCE: "false" + DATA_DIR: /data + # Exec Fulcrum как PID1, поэтому он получает SIGTERM напрямую; FIFO+tee зеркально отображает вывод в журналы докера и /logs/fulcrum.log + # rm -f делает создание FIFO идемпотентным в циклах restarts/crash + command: > + sh -c 'rm -f /tmp/fulcrum.pipe; mkfifo /tmp/fulcrum.pipe; + tee -a /logs/fulcrum.log < /tmp/fulcrum.pipe & + exec Fulcrum -D /data _ENV_ > /tmp/fulcrum.pipe 2>&1' + volumes: + - "${APP_DATA_DIR}/data/fulcrum:/data" + - "${APP_DATA_DIR}/data/fulcrum-logs:/logs" + ports: + - "${APP_FULCRUM_NODE_PORT}:${APP_FULCRUM_NODE_PORT}" + networks: + default: + ipv4_address: $APP_FULCRUM_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/fulcrum/exports.sh b/fulcrum/exports.sh new file mode 100644 index 0000000..ee16104 --- /dev/null +++ b/fulcrum/exports.sh @@ -0,0 +1,22 @@ +export APP_FULCRUM_IP="10.21.22.200" +export APP_FULCRUM_NODE_IP="10.21.21.200" + +export APP_FULCRUM_NODE_PORT="50002" +export APP_FULCRUM_ADMIN_PORT="8000" + +for var in \ + IP \ + NODE_IP \ + NODE_PORT \ +; do + electrs_var="APP_ELECTRS_${var}" + fulcrum_var="APP_FULCRUM_${var}" + if [ -n "${!fulcrum_var-}" ]; then + export "$electrs_var"="${!electrs_var:=${!fulcrum_var}}" + else + echo "Warning: $fulcrum_var is unset or empty" + fi +done + +rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname" +export APP_FULCRUM_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" diff --git a/fulcrum/hooks/pre-start b/fulcrum/hooks/pre-start new file mode 100755 index 0000000..5beed29 --- /dev/null +++ b/fulcrum/hooks/pre-start @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# Удалите устаревший хук после обновления, если он присутствует. +POST_UPDATE_HOOK="${APP_DATA_DIR}/hooks/post-update" +if [[ -e "${POST_UPDATE_HOOK}" ]]; then + echo "App: ${APP_ID} - Removing '${POST_UPDATE_HOOK}'" + rm -f -- "${POST_UPDATE_HOOK}" || echo "App: ${APP_ID} - Warning: failed to remove '${POST_UPDATE_HOOK}'" +fi + +# Если ${APP_DATA_DIR}/data/fulcrum-logs не существует, мы создаем его и устанавливаем право собственности 1000:1000. +if [[ ! -d "${APP_DATA_DIR}/data/fulcrum-logs" ]]; then + mkdir -p "${APP_DATA_DIR}/data/fulcrum-logs" + chown 1000:1000 "${APP_DATA_DIR}/data/fulcrum-logs" +fi + +# Мы выполняем однократную повторную синхронизацию для пользователей версий до 2.0, удаляя старые данные опоры, если они есть. +# Почему мы удаляем вместо попытки однократного запуска `--db-upgrade`: +# - Fulcrum 2.0 использует новый, несовместимый формат DB; 1.x требует `--db-upgrade` для преобразования +# - Обновление 1.x -> 2.0 необратимо и прерывать его небезопасно; перезагрузка во время обновления +# может уничтожить как старый, так и новый DBs (см. примечания к выпуску Fulcrum 2.0) +# - Мы не можем гарантировать, что пользователи не перезапустят приложение во время обновления, которое может занять несколько часов в основной сети. +# и в течение этого времени пользователи вообще не получат обратной связи от приложения. +# - Помеченное однократное удаление с последующей новой синхронизацией является детерминированным, идемпотентным и позволяет избежать +# частичная миграция или заблокированные состояния, если пользователи перезагружаются в неподходящее время +FULCRUM_DATA_DIR="${APP_DATA_DIR}/data/fulcrum" +POST_2_0_FLAG="${APP_DATA_DIR}/POST_2_0_VERSION" + +mkdir -p "${FULCRUM_DATA_DIR}" + +if [[ ! -f "${POST_2_0_FLAG}" ]]; then + # Проверьте, есть ли в каталоге какие-либо записи (файлы или каталоги), включая точечные файлы. + if [[ -n "$(find "${FULCRUM_DATA_DIR}" -mindepth 1 -maxdepth 1 -print -quit 2>/dev/null)" ]]; then + echo "App: ${APP_ID} - Pre-2.0 data detected, clearing '${FULCRUM_DATA_DIR}' once" + # Безопасно удалить все записи (обрабатывает точечные файлы и имена с пробелами) + find "${FULCRUM_DATA_DIR}" -mindepth 1 -maxdepth 1 -exec rm -rf {} + + fi + touch "${POST_2_0_FLAG}" +fi + +# Отложите загрузку Fulcrum до тех пор, пока скрытая служба Tor RPC не будет готова. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach fulcrum +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi diff --git a/fulcrum/torrc.template b/fulcrum/torrc.template new file mode 100644 index 0000000..44496c8 --- /dev/null +++ b/fulcrum/torrc.template @@ -0,0 +1,3 @@ +# Fulcrum RPC Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-rpc +HiddenServicePort $APP_FULCRUM_NODE_PORT $APP_FULCRUM_NODE_IP:$APP_FULCRUM_NODE_PORT diff --git a/ghost/data/content/.gitkeep b/ghost/data/content/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ghost/data/content/.gitkeep @@ -0,0 +1 @@ + diff --git a/ghost/data/db/.gitkeep b/ghost/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ghost/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/ghost/dfwebos-app.yml b/ghost/dfwebos-app.yml new file mode 100644 index 0000000..57539ba --- /dev/null +++ b/ghost/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1 +id: ghost +name: Ghost +tagline: Платформа, позволяющая авторам публиковать, развивать и монетизировать свой контент. +category: files +version: "6.32.0" +port: 3368 +description: >- + Ghost — это мощная система управления контентом (CMS) с открытым исходным кодом, предназначенная в первую очередь для профессиональных блоггеров, журналистов и создателей контента. В отличие от более традиционных платформ CMS, таких как WordPress, которые предлагают широкий спектр плагинов и возможностей настройки, Ghost фокусируется на предоставлении оптимизированной, быстрой и минималистской платформы, в которой приоритет отдается написанию и публикации. Первоначально он был создан для блоггеров, но со временем он расширился и стал включать в себя больше функций, таких как управление членством, информационные бюллетени по электронной почте и инструменты монетизации. + + + Платформа известна своей скоростью и производительностью, обеспечивая быструю загрузку веб-сайтов. Это важно для улучшения пользовательского опыта и поисковой оптимизации (SEO). Пользовательский интерфейс Ghost спроектирован так, чтобы быть чистым, интуитивно понятным и не отвлекающим внимание, что позволяет создателям сосредоточиться исключительно на своем контенте, не увязая в ненужных опциях или настройках. + + + Одной из выдающихся особенностей Ghost является функциональность членства и подписки. Создатели контента могут монетизировать свою работу, предлагая читателям платные подписки, предоставляя им эксклюзивный контент или информационные бюллетени. Это делает Ghost идеальным выбором для тех, кто хочет построить бизнес на своем контенте, например, для премиальных блогов или новостных агентств. + + + Хотя Ghost спроектирован простым и понятным, он также предлагает разработчикам возможности настройки. Пользователи могут изменять темы, добавлять собственный код или интегрировать сторонние сервисы, что позволяет им адаптировать платформу в соответствии со своими потребностями. Кроме того, Ghost включает в себя встроенные функции SEO, такие как настраиваемые метаописания, чистые URL-адреса и акцент на быстрый и адаптивный дизайн, все из которых способствуют повышению рейтинга в поисковых системах. + + + В целом Ghost — это высокоэффективная и удобная платформа для создания и публикации контента. Его ориентация на скорость, простоту и монетизацию делает его отличным вариантом для всех, кто хочет создать профессиональное присутствие в Интернете без сложностей, присущих другим платформам CMS. + + + ⚠️ Ваш опубликованный веб-сайт будет доступен по адресу «http://umbrel.local:3368".». Самый простой способ предоставить доступ к вашему сайту общедоступному Интернету — использовать приложение «Cloudflare Tunnel» из магазина приложений DFWebOS и туннелировать к своему собственному домену. +developer: Ghost Foundation Ltd +website: https://ghost.org/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2178 +repo: https://github.com/TryGhost/Ghost +support: https://github.com/TryGhost/Ghost/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg + - 7.jpg +releaseNotes: >- + Основные моменты последних выпусков включают в себя: + - Добавлена кнопка "Поделиться" в сообщениях. + - Добавлена поддержка базового URL-адреса CDN для тем и общедоступных ресурсов. + - Добавлен ярлык в фильтр поиска по уровню участников. + - Исправлена глубокая ссылка на экраны администратора при выходе из системы. + - Исправлены отсутствующие уровни вебхука, отредактированного участником. + - Улучшена фильтрация списка участников. + + + Полные примечания к выпуску можно найти по адресу https://github.com/TryGhost/Ghost/releases. +dependencies: [] +path: "/ghost" +defaultUsername: "" +defaultPassword: "" diff --git a/ghost/docker-compose.yml b/ghost/docker-compose.yml new file mode 100644 index 0000000..a51e8ba --- /dev/null +++ b/ghost/docker-compose.yml @@ -0,0 +1,32 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: ghost_web_1 + APP_PORT: 2368 + PROXY_AUTH_ADD: "false" + + web: + image: ghost:6.32.0@sha256:34d92a88d64c2614c3924c089cf69754d2b73dd4140f8fc66fd28faa0ccc19f7 + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/content:/var/lib/ghost/content:rw + environment: + database__client: mysql + database__connection__host: ghost_db_1 + database__connection__user: root + database__connection__password: dfwebos + database__connection__database: ghost + url: http://${DEVICE_DOMAIN_NAME}:3368 + security__staffDeviceVerification: "false" + + db: + image: mysql:8.4.4@sha256:339598fe066c73daa4120f2d9dfefd3146c3519cd324748e1d3f9d2b6c71d10b + restart: on-failure + user: "1000:1000" + environment: + MYSQL_ROOT_PASSWORD: dfwebos + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql:rw diff --git a/ghostfolio/data/postgres/.gitkeep b/ghostfolio/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ghostfolio/data/redis/.gitkeep b/ghostfolio/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ghostfolio/dfwebos-app.yml b/ghostfolio/dfwebos-app.yml new file mode 100644 index 0000000..8a6d7a4 --- /dev/null +++ b/ghostfolio/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: ghostfolio +category: finance +name: Ghostfolio +version: "3.0.1" +tagline: Управляйте своим богатством как босс +description: >- + Ghostfolio — это панель управления вашими личными финансами с открытым исходным кодом, ориентированная на конфиденциальность. + + + Разбейте распределение активов, узнайте свой собственный капитал и создавайте надежные, основанные на данных + инвестиционные решения. + + + Защитите свои активы. Уточните свою личную инвестиционную стратегию. + + + Ghostfolio дает занятым людям возможность отслеживать акции, ETF или криптовалюты. + без отслеживания. +backupIgnore: + - data/redis/* +developer: Ghostfolio +website: https://ghostfol.io/ +dependencies: [] +repo: https://github.com/ghostfolio/ghostfolio +support: https://github.com/ghostfolio/ghostfolio/discussions +port: 3334 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +releaseNotes: >- + Этот выпуск включает в себя улучшения и исправления ошибок: + - Перенесен на Material Design 3 для обновленного внешнего вида. + - Общая сумма, изменения и производительность с учетом валютных эффектов на странице анализа перенесены в общедоступную версию. + - Кнопки копирования в буфер обмена для ISIN и символа в диалоговом окне сведений о хранении перемещены в общедоступную версию. + - Исправлена метка денежных средств в таблице активов на портфолио и общедоступных страницах. + - Улучшен стиль кнопок и полей ввода в различных компонентах. + + + Полные примечания к выпуску можно найти по адресу https://github.com/ghostfolio/ghostfolio/releases. +submitter: BeauAgst +submission: https://github.com/getumbrel/dfwebos-apps/pull/396 diff --git a/ghostfolio/docker-compose.yml b/ghostfolio/docker-compose.yml new file mode 100644 index 0000000..6849234 --- /dev/null +++ b/ghostfolio/docker-compose.yml @@ -0,0 +1,47 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: ghostfolio_server_1 + APP_PORT: 3334 + + server: + image: ghostfolio/ghostfolio:3.0.1@sha256:e1b0fb31b888bddcdb4dd14899ea6b5696555782e8a121ccc795feae489f1447 + init: true + restart: on-failure + environment: + NODE_ENV: production + HOST: 0.0.0.0 + PORT: 3334 + ACCESS_TOKEN_SALT: $APP_GHOSTFOLIO_ACCESS_TOKEN_SALT + DATABASE_URL: postgresql://${APP_GHOSTFOLIO_DB_USERNAME}:${APP_GHOSTFOLIO_DB_PASSWORD}@ghostfolio_postgres_1:5432/${APP_GHOSTFOLIO_DB_DATABASE_NAME} + JWT_SECRET_KEY: ${APP_SEED} + POSTGRES_DB: ${APP_GHOSTFOLIO_DB_DATABASE_NAME} + POSTGRES_USER: ${APP_GHOSTFOLIO_DB_USERNAME} + POSTGRES_PASSWORD: ${APP_GHOSTFOLIO_DB_PASSWORD} + REDIS_HOST: ghostfolio_redis_1 + REDIS_PASSWORD: ${APP_GHOSTFOLIO_REDIS_PASSWORD} + REDIS_PORT: 6379 + + postgres: + image: postgres:14-bullseye@sha256:c2a30d08a6f9e6c365595fd086c9e0436064c52425f15f72379ecf0807bac518 + restart: on-failure + stop_grace_period: 1m + user: "1000:1000" + environment: + POSTGRES_USER: ${APP_GHOSTFOLIO_DB_USERNAME} + POSTGRES_PASSWORD: ${APP_GHOSTFOLIO_DB_PASSWORD} + POSTGRES_DB: ${APP_GHOSTFOLIO_DB_DATABASE_NAME} + PGDATA: /var/lib/postgresql/data + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + + redis: + image: redis:6.2-bullseye@sha256:5cdb2ac6f780e1d250787f4a887c1ed1166e3389757189ea913059409acc6f7c + restart: on-failure + user: "1000:1000" + command: > + --requirepass ${APP_GHOSTFOLIO_REDIS_PASSWORD} + volumes: + - ${APP_DATA_DIR}/data/redis:/data diff --git a/ghostfolio/exports.sh b/ghostfolio/exports.sh new file mode 100644 index 0000000..36f4434 --- /dev/null +++ b/ghostfolio/exports.sh @@ -0,0 +1,5 @@ +export APP_GHOSTFOLIO_ACCESS_TOKEN_SALT=$(derive_entropy "env-${app_entropy_identifier}-APP_ACCESS_TOKEN_SALT" | head -c32) +export APP_GHOSTFOLIO_DB_DATABASE_NAME="ghostfolio" +export APP_GHOSTFOLIO_DB_USERNAME="ghostfolio" +export APP_GHOSTFOLIO_DB_PASSWORD="moneyprintergobrrr" +export APP_GHOSTFOLIO_REDIS_PASSWORD="moneyprintergobrrr" \ No newline at end of file diff --git a/gitea-mirror/data/.gitkeep b/gitea-mirror/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/gitea-mirror/dfwebos-app.yml b/gitea-mirror/dfwebos-app.yml new file mode 100644 index 0000000..6b7ca42 --- /dev/null +++ b/gitea-mirror/dfwebos-app.yml @@ -0,0 +1,50 @@ +manifestVersion: 1 +id: gitea-mirror +name: Gitea Mirror +tagline: Автоматически зеркалируйте репозитории GitHub на экземпляр Gitea. +category: developer +version: "3.15.6" +port: 4322 +description: >- + Gitea Mirror автоматически зеркалирует ваши репозитории GitHub на автономный экземпляр Gitea. Он поддерживает зеркалирование общедоступных и частных репозиториев, организаций, помеченных репозиториев, задач, вики и запросов на включение. + + + Чтобы начать работу, настройте свои учетные данные GitHub и Gitea через веб-интерфейс. Приложение будет периодически синхронизировать ваши репозитории в соответствии с настроенным вами графиком. + + + Ключевые особенности включают в себя: + - Зеркальные репозитории от GitHub до Gitea + - Поддержка организаций и избранных репозиториев. + - Проблема и зеркалирование вики + - Настраиваемые интервалы синхронизации и планирование + - Очистка репозитория и управление сиротами + - Аутентификация на основе заголовка для единого входа обратного прокси-сервера. + + + **Подключение к Gitea на :DFWebOS** Если на вашем DFWebOS установлено приложение Gitea, используйте http://gitea_server_1:8085` в качестве URL-адреса Gitea в настройках зеркала. + + + **Токен доступа Gitea** должен иметь следующие разрешения: + - написать: хранилище + - читать: пользователь + - напишите:организация (необязательно) +developer: RayLabs HQ +website: https://github.com/raylabshq/gitea-mirror +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/4721 +repo: https://github.com/raylabshq/gitea-mirror +support: https://github.com/raylabshq/gitea-mirror/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: >- + ✨ Новые возможности + - Добавлено предупреждение при подключении к серверу Forgejo старше версии 15.0.0, на котором имеется известная ошибка, приводящая к сбою зеркалирования частного репозитория — предупреждение объясняет проблему и содержит ссылки на исправление. + + + Полные примечания к выпуску можно найти по адресу https://github.com/raylabshq/gitea-mirror. +path: "" diff --git a/gitea-mirror/docker-compose.yml b/gitea-mirror/docker-compose.yml new file mode 100644 index 0000000..0cfaf2f --- /dev/null +++ b/gitea-mirror/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: gitea-mirror_web_1 + APP_PORT: 4321 + + web: + image: ghcr.io/raylabshq/gitea-mirror:v3.15.6@sha256:ad2d7f59d2616edd7e0907c8feb07e6e08199b4818c711ee9c7b06df9600b442 + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data:/app/data + environment: + BETTER_AUTH_SECRET: ${APP_SEED} + BETTER_AUTH_URL: http://${DEVICE_DOMAIN_NAME}:${APP_GITEA_MIRROR_PORT} + BETTER_AUTH_TRUSTED_ORIGINS: "*" + NODE_ENV: production + DATABASE_URL: file:data/gitea-mirror.db + HOST: 0.0.0.0 + PORT: "4321" + PUBLIC_BETTER_AUTH_URL: http://${DEVICE_DOMAIN_NAME}:${APP_GITEA_MIRROR_PORT} + MIRROR_ISSUE_CONCURRENCY: "3" + MIRROR_PULL_REQUEST_CONCURRENCY: "5" + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=3", "--spider", "http://localhost:4321/api/health"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 15s diff --git a/gitea-mirror/exports.sh b/gitea-mirror/exports.sh new file mode 100644 index 0000000..c353991 --- /dev/null +++ b/gitea-mirror/exports.sh @@ -0,0 +1,16 @@ +export APP_GITEA_MIRROR_PORT="4322" + +local_ips=$(hostname --all-ip-addresses 2> /dev/null) || local_ips="" +export APP_GITEA_MIRROR_LOCAL_IPS="${local_ips}" + +# Создайте URLs с http:// и портом, разделенными запятыми. +ips_with_port=$(for ip in $local_ips; do + # Оберните адреса IPv6 в [] + if [[ "$ip" == *:* ]]; then + echo -n "http://[$ip]:$APP_GITEA_MIRROR_PORT," + else + echo -n "http://$ip:$APP_GITEA_MIRROR_PORT," + fi +done | sed 's/,$//') + +export APP_GITEA_MIRROR_LOCAL_URLS="${ips_with_port}" diff --git a/gitea/data/db/.gitkeep b/gitea/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/gitea/data/gitea/config/.gitkeep b/gitea/data/gitea/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/gitea/data/gitea/data/.gitkeep b/gitea/data/gitea/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/gitea/dfwebos-app.yml b/gitea/dfwebos-app.yml new file mode 100644 index 0000000..8e1a560 --- /dev/null +++ b/gitea/dfwebos-app.yml @@ -0,0 +1,54 @@ +manifestVersion: 1.1 +id: gitea +category: developer +name: Gitea +version: "1.26.1" +tagline: Безболезненный самостоятельный сервис Git +description: >- + Gitea — это безболезненный самостоятельный сервис Git. Это похоже на + GitHub, Bitbucket и GitLab. Это облегченный код, управляемый сообществом. + хостинг-решение, написанное на Go. Минимальные требования Gitea позволяют ему работать + без проблем на недорогом оборудовании, таком как Raspberry Pi. Функции: + + + - Полностью автономный и частный + - Трекер проблем + - Управление счетом/организацией/репозиторием + - Поддержка Tor + - Перехватчики/ключи развертывания репозитория Git + - Проблемы с репозиторием, запросы на включение и вики. + - Добавить/удалить соавторов репозитория + - Граватар и собственный источник + - Панель администратора +developer: Gitea +website: https://gitea.io/en-us/ +dependencies: [] +repo: https://github.com/go-gitea/gitea +support: https://discourse.gitea.io +port: 8085 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Это выпуск с исправлением ошибок, устраняющий проблемы, обнаруженные в версии 1.26.0: + - Исправлена утечка групп параллелизма действий между ветками. + - Исправлена авторизация контейнера для публичных экземпляров. + - Исправлено экранирование URL-адреса для OAuth2. + - Исправлена проблема, из-за которой изменение видимости организации вызывало проблемы, когда пользователи разветвляли ее репозитории. + - Исправлен доступ к бейджам пользователей. + - Исправлен возврат пакета RPM к noarch, когда запрошенная арка отсутствует. + - Исправлены диаграммы Русалки, которые не работали, когда метки узлов содержат разрывы строк. + - Исправлено смещение расположения кнопок при сворачивании дерева файлов в редакторе. + - Исправлен поиск уполномоченных по организационной группе и рецензентов для получения разрешений членов команды. + - Исправлен дамп с типом почтового индекса по умолчанию, создающий несжатый почтовый индекс. + - Различные дополнительные исправления ошибок и улучшения стабильности. + + + Полные примечания к выпуску: https://github.com/go-gitea/gitea/releases. +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/d62e00353917143a3a10d3b376859f51b665d150 diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml new file mode 100644 index 0000000..3bae125 --- /dev/null +++ b/gitea/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: gitea_server_1 + APP_PORT: 8085 + PROXY_AUTH_ADD: "false" + + server: + image: gitea/gitea:1.26.1-rootless@sha256:4c4256497e2e237ddebdd30986c7ce52cb6f936b3e90c34bb9f4665714599f62 + user: "1000:1000" + restart: on-failure + ports: + - "${APP_GITEA_SSH_PORT}:${APP_GITEA_SSH_PORT}" + volumes: + - ${APP_DATA_DIR}/data/gitea/data:/var/lib/gitea + - ${APP_DATA_DIR}/data/gitea/config:/etc/gitea + environment: + GITEA__security__INSTALL_LOCK: "true" + GITEA__server__DOMAIN: "${APP_DOMAIN}" + GITEA__server__HTTP_PORT: 8085 + GITEA__server__SSH_DOMAIN: "${APP_DOMAIN}" + GITEA__server__SSH_PORT: "${APP_GITEA_SSH_PORT}" + GITEA__server__SSH_LISTEN_PORT: "${APP_GITEA_SSH_PORT}" + GITEA__server__START_SSH_SERVER: "true" + GITEA__database__DB_TYPE: "mysql" + GITEA__database__HOST: "gitea_db_1:3306" + GITEA__database__NAME: "gitea" + GITEA__database__USER: "gitea" + GITEA__database__PASSWD: "moneyprintergobrrr" + + db: + image: mariadb:11.2.4@sha256:e9ea1dbab6783ff0281e41e3357d950a5f598b2033559b8443e03b181807910b + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: "gitea" + MYSQL_USER: "gitea" + MYSQL_PASSWORD: "moneyprintergobrrr" + MYSQL_DATABASE: "gitea" diff --git a/gitea/exports.sh b/gitea/exports.sh new file mode 100644 index 0000000..fe27d17 --- /dev/null +++ b/gitea/exports.sh @@ -0,0 +1,2 @@ +export APP_GITEA_SSH_PORT="2222" +export APP_GITEA_TOR_HS_EXTRA_PORTS="22:gitea_server_1:${APP_GITEA_SSH_PORT}" \ No newline at end of file diff --git a/gitingest/dfwebos-app.yml b/gitingest/dfwebos-app.yml new file mode 100644 index 0000000..b7ec92f --- /dev/null +++ b/gitingest/dfwebos-app.yml @@ -0,0 +1,54 @@ +manifestVersion: 1 +id: gitingest +name: Gitingest +tagline: Простой способ сделать репозитории Git удобными для LLM +category: developer +version: "0.3.1" +port: 8895 +description: >- + Gitingest — это инструмент с открытым исходным кодом, который преобразует репозитории Git в структурированные текстовые сводки, удобные для LLM, что упрощает анализ и обработку кода с помощью моделей ИИ, таких как ChatGPT и Claude. Просто заменив «github.com» на «gitingest.com» в любом URL-адресе репозитория, пользователи могут мгновенно создать оптимизированный для ИИ дайджест кодовой базы. Кроме того, кнопка одним нажатием обеспечивает плавную интеграцию с GitHub, обеспечивая бесперебойный рабочий процесс для разработчиков. + + + Инструмент предлагает интеллектуальное форматирование для структурированного представления содержимого репозитория, что повышает эффективность работы LLM. Пользователи могут либо положиться на службу GitIngest по умолчанию, либо настроить свои собственные настройки для дополнительной гибкости. Уделяя большое внимание конфиденциальности, Gitingest не собирает данные и работает полностью в автономном режиме, что делает его безопасным выбором как для разработчиков, так и для организаций. + + + Gitingest особенно полезен для разработчиков ИИ, создающих точные подсказки, для команд, работающих с разработкой с помощью ИИ, и для всех, кому нужно быстрое понимание базы кода. В рамках экосистемы GitIngest он также предоставляет инструменты CLI и пакеты Python для более расширенного использования. Если вы хотите оптимизировать рабочий процесс разработки на базе ИИ или улучшить понимание сложных репозиториев, Gitingest предлагает простое, но мощное решение. +developer: Romain Courtois +website: https://gitingest.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2225 +repo: https://github.com/cyclotruc/gitingest +support: https://github.com/cyclotruc/gitingest/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + В этом выпуске представлены новые функции и улучшения Gitingest. + + + Новые функции включают в себя: + — Поддержка подмодулей Git. + - Система кэширования для более быстрого обслуживания ранее созданных дайджестов. + - Улучшенное ведение журнала для лучшего устранения неполадок. + + + Ключевые улучшения: + - Улучшенная обработка больших файлов благодаря улучшенной обработке размера. + - Улучшена очистка временных файлов после обработки. + — Улучшена обработка ошибок сети во время оценки токена. + — Улучшено сопоставление шаблонов для правил включения и исключения. + + + Исправления ошибок включают: + - Исправлена обработка кеша для подпутей репозитория. + - Исправлены проблемы с отображением дерева каталогов. + - Решены проблемы с запуском контейнера + — Улучшена обработка файлов gitignore и gitingestignore. + + + Полные примечания к выпуску можно найти по адресу https://github.com/cyclotruc/gitingest/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/gitingest/docker-compose.yml b/gitingest/docker-compose.yml new file mode 100644 index 0000000..37dc007 --- /dev/null +++ b/gitingest/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: gitingest_app_1 + APP_PORT: 8000 + + app: + image: ghcr.io/coderamp-labs/gitingest:v0.3.1@sha256:0107c1e389d9e5e86dc3052defe024bd2439b776a1904ae4ee14f1cfb16e3b77 + restart: on-failure + user: "1000:1000" + environment: + # Разрешает основной адрес .local, Tailscale MagicDNS и адреса IP хост-компьютера. + - ALLOWED_HOSTS=${DEVICE_DOMAIN_NAME},${DEVICE_HOSTNAME},${APP_GITINGEST_LOCAL_IPS} diff --git a/gitingest/exports.sh b/gitingest/exports.sh new file mode 100644 index 0000000..0defa3c --- /dev/null +++ b/gitingest/exports.sh @@ -0,0 +1,3 @@ +# Получите все локальные адреса IP и разделите их запятыми. +local_ips=$(hostname --all-ip-addresses 2> /dev/null | tr ' ' ',') || local_ips="" +export APP_GITINGEST_LOCAL_IPS="${local_ips}" \ No newline at end of file diff --git a/gitlab/data/config/.gitkeep b/gitlab/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/gitlab/data/data/.gitkeep b/gitlab/data/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/gitlab/data/logs/.gitkeep b/gitlab/data/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/gitlab/dfwebos-app.yml b/gitlab/dfwebos-app.yml new file mode 100644 index 0000000..3329705 --- /dev/null +++ b/gitlab/dfwebos-app.yml @@ -0,0 +1,80 @@ +manifestVersion: 1.1 +id: gitlab +name: GitLab +tagline: Программное обеспечение. Быстрее. +category: developer +version: "18.10.1-1" +port: 8929 +description: >- + ⚠️ Это приложение потребляет много оперативной памяти (рекомендуется +6 ГБ), и его запуск может занять 15–20 минут после установки на устройствах с низким энергопотреблением. + + + 🔐 После установки приложения вы можете создать новую учетную запись пользователя через веб-интерфейс или подключиться через SSH/Terminal и изменить пароль root, выполнив команду `gitlab-rake "gitlab:password:reset[root]"`. + + + GitLab — это комплексный веб-инструмент жизненного цикла DevOps, который обеспечивает надежную платформу для управления проектами и репозиториями. Он предлагает широкий спектр функций, которые охватывают весь жизненный цикл разработки программного обеспечения, включая контроль версий, CI/CD, проверку кода, отслеживание проблем и многое другое. Все операции выполняются в безопасной среде совместной работы, гарантируя безопасность и доступность вашего кода и данных. + + + 📁 Управление репозиторием + + GitLab предоставляет полнофункциональный графический интерфейс для создания, управления и организации репозиториев. Вы можете с легкостью клонировать, разветвлять и просматривать репозитории. Также доступны расширенные функции, такие как управление ветвями, тегирование и слияние, обеспечивающие эффективный контроль версий и совместную работу. + + + 🔄️ Непрерывная интеграция/непрерывное развертывание (CI/CD) + + Автоматизируйте процесс разработки программного обеспечения с помощью мощных конвейеров CI/CD GitLab. Легко настраивайте сборки, тесты и развертывания, чтобы оптимизировать рабочий процесс. GitLab CI/CD поддерживает несколько языков и платформ, обеспечивая совместимость с вашими существующими инструментами и процессами. + + + 🛡️ Безопасность и соответствие требованиям + + Обеспечьте безопасность и соответствие своих проектов с помощью встроенных функций безопасности GitLab. Выполняйте статическое и динамическое тестирование безопасности приложений (SAST/DAST), сканирование зависимостей, сканирование контейнеров и многое другое. GitLab также предлагает журналы аудита, управление соответствием и проверки качества кода для поддержания высоких стандартов. + + + 👥 Сотрудничество и проверка кода + + Улучшите сотрудничество в команде с помощью интегрированных инструментов GitLab для проверки кода и обсуждения. Проводите экспертные оценки, оставляйте комментарии и предлагайте изменения непосредственно на платформе. Система мерж-реквестов GitLab упрощает процесс проверки кода, позволяя легко предлагать, обсуждать и утверждать изменения. + + + 📈 Управление проектами + + Эффективно управляйте своими проектами с помощью функций управления проектами GitLab. Отслеживайте проблемы, планируйте спринты и визуализируйте прогресс с помощью досок, контрольных точек и диаграмм сгорания. GitLab также интегрируется с популярными инструментами управления проектами, обеспечивая плавную синхронизацию задач и обновлений. + + + 🛠️ Другие особенности: + + Используйте обширный набор инструментов GitLab для оптимизации процесса разработки. Используйте интегрированную вики для документации, управляйте пакетами с помощью встроенного реестра пакетов GitLab, отслеживайте производительность с помощью интеграции Prometheus и Grafana и развертывайте приложения с поддержкой Kubernetes. GitLab также предлагает надежные API для расширения функциональности и интеграции с другими сервисами. + + + GitLab — это ваша универсальная платформа DevOps, позволяющая вашей команде легко и эффективно создавать, развертывать проекты и управлять ими. +developer: GitLab +website: https://about.gitlab.com +submitter: hugofnm +submission: https://github.com/getumbrel/dfwebos-apps/pull/1290 +repo: https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/docker +support: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск GitLab содержит множество новых функций и улучшений. + + + GitLab интерфейс может не отвечать на запросы в течение нескольких минут после обновления, что совершенно нормально. + + + Ключевые улучшения в этом выпуске: + - Обнаружение ложных срабатываний SAST с помощью агентской платформы GitLab Duo теперь общедоступно. + - Вход без пароля с использованием паролей с использованием биометрических данных или PIN-кода устройства. + - Новый список рабочих элементов, объединяющий эпики, проблемы и другие рабочие элементы в одном унифицированном представлении с поддержкой сохраненных представлений. + - Секретное обнаружение ложных срабатываний на базе ИИ для снижения усталости от оповещений (бета-версия) + — Обеспечьте соблюдение соглашений об именах заголовков мерж-реквеста с использованием шаблонов регулярных выражений. + - Пользовательские агенты теперь могут подключаться к внешним источникам данных через протокол контекста модели (MCP). + - Входные данные уровня задания CI/CD с безопасностью типов, значениями по умолчанию и поддержкой проверки. + + + Полные примечания к выпуску доступны по адресу: https://about.gitlab.com/releases/2026/03/19/gitlab-18-10-released/. +dependencies: [] +path: "" +deterministicPassword: true +defaultUsername: "root" diff --git a/gitlab/docker-compose.yml b/gitlab/docker-compose.yml new file mode 100644 index 0000000..1bff055 --- /dev/null +++ b/gitlab/docker-compose.yml @@ -0,0 +1,34 @@ +version: "3.7" + +services: + + app_proxy: + environment: + APP_HOST: gitlab_gitlab_1 + APP_PORT: 8929 + PROXY_AUTH_ADD: "false" + + gitlab: + image: gitlab/gitlab-ce:18.10.1-ce.0@sha256:6024d9f2a8d52dd56ffa8b510fcfc368d7ddaed1102f76ed6c419289e68921b0 + restart: on-failure + hostname: '${DEVICE_DOMAIN_NAME}:8929' + ulimits: + nofile: + soft: 4096 + hard: 8192 + environment: + PUID: 1000 + PGID: 1000 + GITLAB_OMNIBUS_CONFIG: | + # Добавьте сюда любую другую конфигурацию gitlab.rb, каждую на отдельной строке. + gitlab_rails['initial_root_password'] = '${APP_PASSWORD}' + gitlab_rails['gitlab_shell_ssh_port'] = 2424 + nginx['listen_port'] = 8929 + nginx['listen_https'] = false + ports: + - '2424:22' + volumes: + - ${APP_DATA_DIR}/data/config:/etc/gitlab + - ${APP_DATA_DIR}/data/logs:/var/log/gitlab + - ${APP_DATA_DIR}/data/data:/var/opt/gitlab + shm_size: '256m' diff --git a/gitlab/hooks/pre-start b/gitlab/hooks/pre-start new file mode 100755 index 0000000..ee8d94e --- /dev/null +++ b/gitlab/hooks/pre-start @@ -0,0 +1,222 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт обновляет Gitlab, следуя пути миграции, который, по утверждению Gitlab docs/tools, безопасен. +# https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/ + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" + +GITLAB_RAILS_VERSION_FILE="${APP_DATA_DIR}/data/data/gitlab-rails/VERSION" + +APP_COMPOSE_FILE="${APP_DATA_DIR}/docker-compose.yml" +APP_COMPOSE_BACKUP_FILE="${APP_DATA_DIR}/docker-compose.yml.bak" + +# Список версий на пути миграции +# gitlab в магазине приложений DFWebOS изначально был выпущен с версией 17.2.1. +# инструмент пути миграции: https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/ +VERSIONS=() +VERSIONS+=("17.2.1") +VERSIONS+=("17.3.3") +VERSIONS+=("17.5.1") +# Для образа zengxs/gitlab не существует финального патча 17.5.3, который можно было бы обновить до версии 17.6. +VERSIONS+=("17.6.1") +VERSIONS+=("17.7.0") +VERSIONS+=("17.8.1") +VERSIONS+=("17.9.1") +VERSIONS+=("17.10.1") +VERSIONS+=("17.11.1") +VERSIONS+=("18.0.2") +VERSIONS+=("18.2.1") +VERSIONS+=("18.4.0") +VERSIONS+=("18.5.1") +VERSIONS+=("18.6.2") +VERSIONS+=("18.7.4") +VERSIONS+=("18.8.4") +VERSIONS+=("18.9.3") +VERSIONS+=("18.10.1") + +# Список изображений на пути миграции +# Использование zengxs/gitlab, у которого могут быть не все версии, перечисленные в инструменте пути обновления: https://hub.docker.com/r/zengxs/gitlab/tags +IMAGES=() +IMAGES+=("zengxs/gitlab:17.2.1-ce.0@sha256:ac08a4dd997b6cd5d00d56c0027629de56ac80d9d30f9c4f75a73da73f5ff1b4") +IMAGES+=("zengxs/gitlab:17.3.3-ce.0@sha256:b4369fc8f2a505fdf30bae7fa2befde2a8d6f75c067e5bcf85aeb1c5f345cda0") +IMAGES+=("zengxs/gitlab:17.5.1-ce.0@sha256:61cb4c79fe55de9dc94822d5a64a07ee40ff681d6282ab5733bc8e80479451ff") +IMAGES+=("zengxs/gitlab:17.6.1-ce.0@sha256:fac3ab00c189e7f7ef2d9170abe1028180663f5bb50dd8b84cb79c4f3053df42") +IMAGES+=("zengxs/gitlab:17.7.0-ce.0@sha256:a353041094142d3f3192295d0973e660778db5f7637069f8e035afe45c6b88d1") +IMAGES+=("zengxs/gitlab:17.8.1-ce.0@sha256:963a719edd95cc7c237e9ca4914d75d1ca9f472a3001b76ad9dfb1dad65b4732") +IMAGES+=("zengxs/gitlab:17.9.1-ce.0@sha256:8087be9de83abf3f215694d1fc52d90a0c2a882589016a0b784598723e871325") +IMAGES+=("zengxs/gitlab:17.10.1-ce.0@sha256:c64afa93f40b9cffc1350da62b67ffefdd13123874b595bccfdc389514069f58") +IMAGES+=("zengxs/gitlab:17.11.1-ce.0@sha256:05d73cabf1dbff39b93e7ad0c1ea6bbcbc29642185774cb59e31664f17b0a134") +IMAGES+=("zengxs/gitlab:18.0.2-ce.0@sha256:107ee285aea892fa6ed8e039df8a6d850aa5d3469247e9783dcf765789b70872") +IMAGES+=("gitlab/gitlab-ce:18.2.1-ce.0@sha256:3db5de3ce9fba4511345bb67731a1787e316f73029cdbd309ee947f860d9ff00") +IMAGES+=("gitlab/gitlab-ce:18.4.0-ce.0@sha256:42d4f499ed8f055e91028d87772f8ea65ba4812bd71a54086cfc4aa84604ab7a") +IMAGES+=("gitlab/gitlab-ce:18.5.1-ce.0@sha256:6db4caefb0597c966065f4c3307b60aa00d13559bbe9b0c3b17bc32f0d239ab1") +IMAGES+=("gitlab/gitlab-ce:18.6.2-ce.0@sha256:a4ffd3cf42e6554fcb8a1735cea40ae2e46bec6f31b518f04132a93d7f48ffcf") +IMAGES+=("gitlab/gitlab-ce:18.7.4-ce.0@sha256:9890c6c76625070ae420784f1d6d157498a75b6f65d075c0e1e55c2a25a3f5ab") +IMAGES+=("gitlab/gitlab-ce:18.8.4-ce.0@sha256:0a2e4a47b0c3f8b2682f4a4406f2d1ad0713024bd4e849355b07e93fbf85049b") +IMAGES+=("gitlab/gitlab-ce:18.9.3-ce.0@sha256:eec7f29ca83c8b54ecb1154c5c36b87a67c6b9cedaea763868b014e6a0539756") +IMAGES+=("gitlab/gitlab-ce:18.10.1-ce.0@sha256:6024d9f2a8d52dd56ffa8b510fcfc368d7ddaed1102f76ed6c419289e68921b0") + +find_index() { + local -r value="${1}" + shift + local -r array=("$@") + + for i in "${!array[@]}"; do + if [[ "${array[$i]}" == "${value}" ]]; then + echo $i + exit + fi + done + + echo -1 +} + +wait_for_migrations_complete() { + local start_time=$(date +%s) + local max_wait_time=$((1 * 60 * 60)) # 1 hour in seconds + + while true; do + # Мы установили некоторое максимальное время ожидания, чтобы предотвратить бесконечный цикл, если что-то пошло не так. + # Возможно, в будущем нам захочется решить эту проблему лучше. + local current_time=$(date +%s) + local elapsed_time=$((current_time - start_time)) + if [[ ${elapsed_time} -ge ${max_wait_time} ]]; then + echo "Maximum migration wait time of 1 hour exceeded. Exiting as something is likely wrong..." + exit 1 + fi + + # Установите +e, потому что эта команда завершится неудачно, пока gitlab-psql не будет готов принимать соединения, и мы не хотим завершать сценарий в случае сбоя. + set +e + echo "Running gitlab-psql command to check if batched migrations are complete" + # https://docs.gitlab.com/ee/update/background_migrations.html#from-the-database + command_output=$(docker exec gitlab_gitlab_1 gitlab-psql -tAc "SELECT COUNT(*) FROM batched_background_migrations WHERE status NOT IN(3, 6);" 2>&1) + # Передача команды psql в scripts/app Compose приводит к разделению аргументов команды, что приводит к ошибкам psql. + # Использование приведенной выше команды `docker exec` позволяет обойти эту проблему, но нам следует вернуться к этому в будущем, чтобы отказаться от привязки этого сценария к Docker. + # command_output=$("${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" exec gitlab gitlab-psql -tAc "SELECT COUNT(*) FROM batched_background_migrations WHERE status NOT IN(3, 6);" 2>&1) + exit_code=$? + # Установите -e, чтобы восстановить поведение по умолчанию. + set -e + + if [[ ${exit_code} -eq 0 ]]; then + remaining_migrations=$(echo "${command_output}" | tr -d '[:space:]') + echo "Parsed remaining batched migrations: '${remaining_migrations}'" + + # Мы хотим продолжить только в том случае, если осталось "0" пакетных миграций. + if [[ "${remaining_migrations}" == "0" ]]; then + echo "GitLab migration completed successfully." + return + fi + else + echo "Command failed with exit code ${exit_code}. Error output: ${command_output}" + fi + + echo "Waiting 30 seconds before checking migration status again..." + sleep 30 + done +} + +check_compose_file() { + local -r image="${1}" + + gitlab_image=$(cat "${APP_COMPOSE_FILE}" 2>/dev/null | yq '.services.gitlab.image' || true) + + if [[ "${gitlab_image}" != "${image}" ]]; then + echo "The docker-compose.yml now looks bad. Restoring..." + + mv "${APP_COMPOSE_BACKUP_FILE}" "${APP_COMPOSE_FILE}" + + exit + fi +} + +get_version() { + cat "${GITLAB_RAILS_VERSION_FILE}" +} + +# Здесь начинается выполнение основного скрипта +# ================================ + +# Если файл версии gitlab-rails еще не существует +# Тогда скорее всего это новая установка +# Поэтому делать нечего +if [[ ! -f "${GITLAB_RAILS_VERSION_FILE}" ]]; then + exit +fi + +current_version=$(get_version) +echo "Current GitLab version: ${current_version}" + +# проверьте, добавлен ли к текущей версии "-patch", и выйдите, если это так, мы позволяем миграции завершиться +# мы добавляем "-patch" в версию ниже во время миграции +if [[ "${current_version}" == *"-patch"* ]]; then + echo "Active GitLab version is undergoing migration. Exiting..." + exit +fi + +# Проверьте, есть ли активная версия в списке миграции +active_version_idx=$(find_index "${current_version}" "${VERSIONS[@]}") +if [[ "${active_version_idx}" == "-1" ]]; then + echo "Active version is not supported in the list of migrations" + exit +fi + +# Проверьте, обновлено ли уже +if [[ "${VERSIONS[-1]}" == "${current_version}" ]]; then + echo "GitLab is already on the latest major version. No migration needed." + exit +fi + +# Защита от ошибок логики миграции из-за дрейфа списка version/image. +if [[ "${#VERSIONS[@]}" -ne "${#IMAGES[@]}" ]]; then + echo "Migration configuration error: VERSIONS (${#VERSIONS[@]}) and IMAGES (${#IMAGES[@]}) length mismatch." + exit 1 +fi + +# Перебирать версии, игнорируя предыдущие версии. +for i in "${!VERSIONS[@]}"; do + [[ "${i}" -le "${active_version_idx}" ]] && continue + + version="${VERSIONS[$i]}" + image="${IMAGES[$i]}" + + echo "Migrating to version: ${version} (${image})" + echo + + cp --archive "${APP_COMPOSE_FILE}" "${APP_COMPOSE_BACKUP_FILE}" + + yq -i ".services.gitlab.image = \"${image}\"" "${APP_COMPOSE_FILE}" + + check_compose_file "${image}" + + # Отметить текущую версию как находящуюся в середине обновления. + current_version=$(get_version) + sed -i "s/${current_version}/${current_version}-patch/" "${GITLAB_RAILS_VERSION_FILE}" + + # Запустить приложение + # перехват перед запуском будет выполнен в подоболочке, но завершится при проверке -patch, чтобы позволить завершить миграцию + "${DFWEBOS_ROOT}/scripts/app" start gitlab + + echo "Waiting for update to complete..." + + # Подождите, пока приложение выполнит миграцию. + # Указывается выходными данными бегуна gitlab-rails + wait_for_migrations_complete + + # Остановить приложение + "${DFWEBOS_ROOT}/scripts/app" stop gitlab + + # Удалить изображение промежуточной версии + # Если это не последнее изображение + # В противном случае его придется загрузить заново + if [[ "${version}" != "${VERSIONS[-1]}" ]]; then + echo "Deleting intermediary image: ${image}" + + docker rmi "${image}" || true + fi +done + +# Удалить файл резервной копии +rm -rf "${APP_COMPOSE_BACKUP_FILE}" + +echo "Migration completed successfully" diff --git a/grafana/data/.gitkeep b/grafana/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/grafana/dfwebos-app.yml b/grafana/dfwebos-app.yml new file mode 100644 index 0000000..1e86971 --- /dev/null +++ b/grafana/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: grafana +name: Grafana +tagline: Платформа с открытым исходным кодом для мониторинга и наблюдения +category: networking +version: "13.0.1" +port: 3030 +description: >- + Grafana позволяет вам запрашивать, визуализировать, предупреждать и понимать ваши показатели независимо от того, где они хранятся. Создавайте, исследуйте и делитесь информационными панелями со своей командой и развивайте культуру, основанную на данных: + + + - Визуализации: быстрые и гибкие графики на стороне клиента с множеством опций. Плагины панелей предлагают множество различных способов визуализации показателей и журналов. + + + - Динамические информационные панели: создавайте динамические и многократно используемые информационные панели с переменными шаблона, которые отображаются в виде раскрывающихся списков в верхней части информационной панели. + + + - Изучите метрики: изучайте свои данные с помощью специальных запросов и динамической детализации. Разделите просмотр и сравните различные временные диапазоны, запросы и источники данных. + + + - Изучите журналы: испытайте волшебство переключения с метрик на журналы с сохраненными фильтрами меток. Быстро просматривайте все свои журналы или транслируйте их в прямом эфире. + + + - Оповещения: визуально определите правила оповещений для наиболее важных показателей. Grafana будет постоянно оценивать и отправлять уведомления в такие системы, как Slack, PagerDuty, VictorOps, OpsGenie. + + + - Смешанные источники данных: смешивайте разные источники данных на одном графике! Вы можете указать источник данных для каждого запроса. Это работает даже для пользовательских источников данных. + + +developer: Grafana Labs +website: https://grafana.com +repo: https://github.com/grafana/grafana +support: https://grafana.com/help/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск включает в себя функции и исправления ошибок: + - Пользовательские настройки часового пояса приборной панели теперь сохраняются при преобразовании из V1 в V2. + - Подготовка теперь включает ошибки проверки информационной панели в комментариях к запросу на включение. + - Исправлена проблема с миграцией единого хранилища, из-за которой миграция неправильно выполнялась повторно. + + + Полные примечания к выпуску доступны по адресу https://github.com/grafana/grafana/releases. +submitter: phelipebf +submission: https://github.com/getumbrel/dfwebos-apps/pull/1664 +dependencies: [] +path: "" +defaultUsername: "admin" +defaultPassword: "admin" diff --git a/grafana/docker-compose.yml b/grafana/docker-compose.yml new file mode 100644 index 0000000..87f7731 --- /dev/null +++ b/grafana/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + + app_proxy: + environment: + APP_HOST: grafana_web_1 + APP_PORT: 3000 + PROXY_AUTH_WHITELIST: "/api/*" + + web: + image: grafana/grafana:13.0.1@sha256:0f86bada30d65ef9d0183b90c1e2682ac92d53d95da8bed322b984ea78a4a73a + user: 1000:1000 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/var/lib/grafana diff --git a/habitica/data/db/.gitkeep b/habitica/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/habitica/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/habitica/data/dbconf/.gitkeep b/habitica/data/dbconf/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/habitica/data/dbconf/.gitkeep @@ -0,0 +1 @@ + diff --git a/habitica/dfwebos-app.yml b/habitica/dfwebos-app.yml new file mode 100644 index 0000000..3ce2ff8 --- /dev/null +++ b/habitica/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1 +id: habitica +name: Habitica +tagline: РПГ для вашей жизни +category: files +version: "5.47.2" +port: 3944 +description: >- + Habitica — это приложение для повышения производительности, которое сочетает в себе управление задачами с элементами ролевых игр для создания увлекательного и мотивирующего опыта. Превращая повседневные задачи и цели в квесты, пользователям предлагается выполнять их в обмен на награды, такие как очки опыта, золото и внутриигровые предметы. Habitica позволяет пользователям настраивать различные типы задач, такие как ежедневные привычки, списки дел и долгосрочные цели. Выполняя задания, пользователи повышают уровень своих аватаров, открывают новые функции и получают награды, которые могут включать в себя варианты настройки их персонажей или даже виртуальных питомцев. + + + Одной из ключевых особенностей Habitica является ее ориентация на формирование привычек и личностный рост. Приложение отслеживает прогресс с течением времени, помогая пользователям развивать хорошие привычки и избавляться от плохих. Геймификация Habitica делает выполнение задач более приятным, поскольку пользователи получают удовлетворение от того, что их аватары становятся сильнее и зарабатывают внутриигровые достижения за выполнение реальных задач. + + + Помимо индивидуального использования, Habitica предлагает социальные функции, такие как присоединение к группам и участие в соревнованиях с друзьями или более широким сообществом. Это добавляет уровень ответственности и способствует чувству товарищества, благодаря чему легче сохранять мотивацию. В целом, Habitica превращает обыденные задачи в более интерактивный и увлекательный опыт, побуждая пользователей работать над достижением своих целей, наслаждаясь путешествием. +developer: HabitRPG, Inc. +website: https://habitica.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2849 +repo: https://github.com/HabitRPG/habitica +support: https://github.com/HabitRPG/habitica/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg +releaseNotes: >- + Это обновление включает исправления ошибок и улучшения: + - Исправлен поиск групповых планов с истекшим сроком действия с использованием даты создания вместо идентификатора клиента, который мог быть пустым после отмены. + - Исправлена отсутствующая цена по умолчанию на фоне последнего события для лучшей совместимости с мобильными устройствами. + - Восстановлен случайно удаленный CSS для анимированных GIF-файлов. + + + Полные примечания к выпуску можно найти на сайте https://github.com/HabitRPG/habitica/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/habitica/docker-compose.yml b/habitica/docker-compose.yml new file mode 100644 index 0000000..9024f2a --- /dev/null +++ b/habitica/docker-compose.yml @@ -0,0 +1,39 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: habitica_server_1 + APP_PORT: 3000 + + server: + image: awinterstein/habitica-server:5.47.2@sha256:3827aeb8246fd4f4630b738944164d38b00f54a3d55a966eedeced4eddb2aa1d + restart: on-failure + depends_on: + - mongo + environment: + - NODE_DB_URI=mongodb://habitica_mongo_1/habitica + - BASE_URL=http://${DEVICE_DOMAIN_NAME}:3944 + - INVITE_ONLY=false + # EMAIL_SERVER_URL=mail.example.com + # EMAIL_SERVER_PORT=587 + # EMAIL_SERVER_AUTH_USER=mail_user + # EMAIL_SERVER_AUTH_PASSWORD=mail_password + # ADMIN_EMAIL=mail@example.com + + mongo: + image: mongo:8.0.11@sha256:5941949d3887e40be5175787aade07dc052f2cddb8ce21b740c3948eba6a3ed0 + restart: on-failure + command: ["--replSet", "rs", "--bind_ip_all", "--port", "27017"] + healthcheck: + test: > + echo "try { rs.status() } catch (err) { rs.initiate({ _id: 'rs', members: [{ _id: 0, host: 'habitica_mongo_1:27017' }] }) }" + | mongosh --port 27017 --quiet + interval: 10s + timeout: 30s + start_period: 0s + start_interval: 1s + retries: 30 + volumes: + - ${APP_DATA_DIR}/data/db:/data/db:rw + - ${APP_DATA_DIR}/data/dbconf:/data/configdb diff --git a/heimdall/config/.gitkeep b/heimdall/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/heimdall/dfwebos-app.yml b/heimdall/dfwebos-app.yml new file mode 100644 index 0000000..f0d41d4 --- /dev/null +++ b/heimdall/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: heimdall +name: Heimdall +tagline: Упорядочите наиболее часто используемые веб-сайты простым способом +category: files +version: "2.7.6" +port: 7392 +description: >- + Heimdall — это панель управления для всех ваших веб-приложений. Однако не обязательно ограничиваться приложениями: вы можете добавлять ссылки на все, что захотите. + + + Heimdall — это элегантное решение для организации всех ваших веб-приложений. Он предназначен именно для этой цели, чтобы вы не потеряли свои ссылки в море закладок. + + + Почему бы не использовать его в качестве стартовой страницы браузера? Он даже имеет возможность включить панель поиска с помощью Google, Bing или DuckDuckGo. + + + Вы можете использовать приложение для ссылки на любой сайт или приложение, но приложения Foundation автоматически заполнят значок приложения и предоставят цвет по умолчанию для плитки. Кроме того, расширенные приложения позволяют предоставлять подробную информацию приложениям API, что позволяет просматривать статистику в реальном времени прямо на панели управления. Например, приложения NZBGet и Sabnzbd Enhanced будут отображать размер очереди и скорость загрузки во время загрузки. + + + Поддерживаемые приложения распознаются по названию приложения, введенному в поле заголовка при добавлении приложения. Например, чтобы добавить ссылку на pfSense, начните с ввода «p» в поле заголовка, а затем выберите «pfSense» из списка поддерживаемых приложений. +developer: LinuxServer.io +website: https://heimdall.site +repo: https://github.com/linuxserver/Heimdall +support: https://github.com/linuxserver/Heimdall/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: > + Этот выпуск включает в себя улучшения и исправления ошибок: + + + - Обновлен app.php. + - Добавлен текущий максимальный размер фона. + - Добавлено поле пароля + + + Более подробную информацию можно найти в полных примечаниях к выпуску по адресу https://github.com/linuxserver/Heimdall/releases. +dependencies: [] +path: "" +torOnly: false +defaultUsername: "" +defaultPassword: "" +submitter: AxelPilop +submission: https://github.com/getumbrel/dfwebos-apps/pull/390 diff --git a/heimdall/docker-compose.yml b/heimdall/docker-compose.yml new file mode 100644 index 0000000..e86b495 --- /dev/null +++ b/heimdall/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: heimdall_server_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + server: + image: linuxserver/heimdall:2.7.6@sha256:30c32fb4ebe54282b6e60cb0232f57d5fcda60d87a9b7e9a4d1ef71ad636817d + volumes: + - ${APP_DATA_DIR}/config:/config + environment: + - PUID=1000 + - PGID=1000 + restart: on-failure diff --git a/helipad/data/.gitkeep b/helipad/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/helipad/dfwebos-app.yml b/helipad/dfwebos-app.yml new file mode 100644 index 0000000..3b95d2b --- /dev/null +++ b/helipad/dfwebos-app.yml @@ -0,0 +1,58 @@ +manifestVersion: 1 +id: helipad +category: bitcoin +name: Helipad +version: "0.2.2" +tagline: Просмотр бустов и бустаграмм из приложений Podcasting 2.0 +description: Вертолетная площадка показывает импульсы и сообщения бустаграммы, поступающие на ваш +developer: Podcastindex.org +website: https://podcastindex.org +dependencies: + - lightning +repo: https://github.com/Podcastindex-org/helipad +support: https://podcastindex.social +port: 2112 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +submitter: Podcastindex.org +submission: https://github.com/getumbrel/umbrel/pull/1174 +releaseNotes: >- + Это обновление включает в себя следующие улучшения: + + - Поддержка метаданных Fountain, Podcast Guru и Boostbox для счетов BOLT11. + + - Поддержка ответов LNURL (boostbacks) + + - Новый звук, веб-хук, MIDI-инструмент и триггеры OSC в зависимости от уровня усиления, отправителя, имени приложения и подкаста. + + - Новая опция для отображения обычных счетов Lightning в списке повышения. + + - Новое поле направления веб-перехватчика для указания входящих/исходящих усилений. + + - Новое соединение через веб-сокет для более быстрого доступа к скамьям. + + - Новая возможность оставаться в системе в течение 30 дней. + + - Новое поле action_name в экспорте/отчетах CSV. + + - Новая конечная точка входа в API. + + - Показывать разделенное имя как часть информации о кошельке. + + - Добавить полосу прокрутки в фильтр подкастов. + + - Установите отчет по умолчанию на один месяц назад со временем окончания 23:59:59. + + – Установите формат даты/времени отчета: ГГГГ-ММ-ДД ЧЧ:ММ:СС с отдельным столбцом часового пояса. + + - Переключите данные о ценах BTC на Blockchain.com. + + - Запретить браузеру кэшировать звуки скамейки. + + - Добавить приложение V4VMusic в список приложений. + + - Обновлены прототипы LND и платежные звонки, а также добавлена ​​подписка на счета. \ No newline at end of file diff --git a/helipad/docker-compose.yml b/helipad/docker-compose.yml new file mode 100644 index 0000000..50abd3c --- /dev/null +++ b/helipad/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: helipad_web_1 + APP_PORT: 2112 + + web: + image: podcastindexorg/podcasting20-helipad:0.2.2@sha256:bd300d26dd605dd73bb2c942db67903bbe24f0b63035aa3cd64727df181d4cc5 + init: true + restart: on-failure + stop_grace_period: 1m + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + LND_URL: "$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT" diff --git a/hermes-agent/data/hermes/.gitkeep b/hermes-agent/data/hermes/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/hermes-agent/dfwebos-app.yml b/hermes-agent/dfwebos-app.yml new file mode 100644 index 0000000..e09bada --- /dev/null +++ b/hermes-agent/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: hermes-agent +category: ai +name: Hermes Agent +version: "2026.4.23" +tagline: Агент ИИ, который растет вместе с вами +description: >- + Агент Hermes — это агент ИИ, который становится лучше, чем больше вы его используете, создавая свои собственные навыки, сохраняя пользовательские настройки и обновляя свою память. + + + В DFWebOS он открывается в браузерном терминале, где вы можете напрямую общаться с Hermes, запускать настройку и управлять своим агентом. Также доступна встроенная панель управления для настройки параметров, просмотра сеансов и мониторинга шлюза. + + + Используйте агент Hermes для просмотра веб-страниц, редактирования файлов, запуска команд оболочки, подключения таких сервисов, как Telegram, Signal, WhatsApp и Discord, сохранения повторно используемых навыков и запоминания важных деталей между сеансами. + + + Агент Hermes работает внутри изолированной программной среды приложения DFWebOS, поэтому он может свободно работать в своей собственной среде, в то время как другие ваши приложения и данные остаются отдельными. + + + ## Что он делает + + - **Общайтесь и действуйте**. Задавайте вопросы, автоматизируйте задачи и позвольте Hermes использовать инструменты за вас. + + - **Работает по нескольким каналам** - Подключайте приложения чата и продолжайте общаться с одним и тем же агентом, где захотите. + + - **Запоминает ваш рабочий процесс**. - Сохраняйте настройки, контекст и навыки многократного использования, которые применяются в разных сеансах. + + - **Управляйте им с панели управления**. - Настраивайте параметры, просматривайте действия и контролируйте агента из браузера. +developer: Nous Research +website: https://hermes-agent.nousresearch.com +dependencies: [] +repo: https://github.com/NousResearch/hermes-agent +support: https://github.com/NousResearch/hermes-agent/issues +port: 18790 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "/terminal" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Что нового в Агенте Гермес (2026.4.23): + - Добавляет новый пользовательский интерфейс Hermes с более широкими возможностями взаимодействия с терминалом, наложениями и статусом в реальном времени. + - Расширяет панель управления за счет поддержки плагинов, переключения тем в реальном времени, локализации и адаптивной доработки. + - Улучшает восстановление после перезапуска шлюза, продолжение сеанса и надежность обмена сообщениями. + - Включает множество других исправлений и улучшений в ядре агента, информационной панели, CLI, шлюзе и интеграции. + + + Полная информация на https://github.com/NousResearch/hermes-agent/releases. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/5376 diff --git a/hermes-agent/docker-compose.yml b/hermes-agent/docker-compose.yml new file mode 100644 index 0000000..96c8930 --- /dev/null +++ b/hermes-agent/docker-compose.yml @@ -0,0 +1,49 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: hermes-agent_web_1 + APP_PORT: 18789 + + # Веб-терминал + прокси-сервер панели управления + web: + image: ghcr.io/getumbrel/hermes-agent-umbrel:v2026.4.23-1@sha256:1101da395b9d800a03fbdbe16b9753e872180507608c932e83d9e94e524f7b9a + # В командной строке отображается "dfwebos@hermes" вместо "dfwebos@". + hostname: hermes + init: true + user: "1000:1000" + restart: on-failure + depends_on: + - gateway + volumes: + - ${APP_DATA_DIR}/data/hermes:/opt/data + environment: + APP_SEED: ${APP_SEED} + # Указывает панели мониторинга проверять шлюз через HTTP вместо локального обнаружения PID. + GATEWAY_HEALTH_URL: http://hermes-agent_gateway_1:8642 + + # Шлюз обмена сообщениями Гермес + gateway: + image: nousresearch/hermes-agent:v2026.4.23@sha256:d4ee57f254aabbe10e41c49533bbf3eb98e6b026463c42843a07588e45ddd338 + # Восходящая версия v2026.4.23 начинается с адреса UID 10000, который не может получить доступ к DFWebOS. + # 1000:1000 каталог данных приложения. Запускайте от имени пользователя root, чтобы точка входа восходящего потока могла + # соблюдайте HERMES_UID/HERMES_GID, исправьте право собственности на /opt/data, затем откажитесь от привилегий. + # Удалите, как только основной выпуск будет включать исправление Docker UID/GID. + # например NousResearch/hermes-agent#12696. + user: "0:0" + command: gateway run + stop_grace_period: 1m + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/hermes:/opt/data + environment: + HERMES_UID: "1000" + HERMES_GID: "1000" + # Сервер API предоставляет конечную точку работоспособности, которую панель мониторинга проверяет через GATEWAY_HEALTH_URL. + # Должен быть привязан к 0.0.0.0 (не к 127.0.0.1 по умолчанию), чтобы быть доступным из веб-контейнера. + # Для привязки к 0.0.0.0 требуется ключ API — мы повторно используем APP_SEED, поскольку порт + # Только внутренний (не доступен хосту). + API_SERVER_ENABLED: "true" + API_SERVER_HOST: "0.0.0.0" + API_SERVER_KEY: ${APP_SEED} diff --git a/holesail-switchboard/data/.gitkeep b/holesail-switchboard/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/holesail-switchboard/dfwebos-app.yml b/holesail-switchboard/dfwebos-app.yml new file mode 100644 index 0000000..a3d6345 --- /dev/null +++ b/holesail-switchboard/dfwebos-app.yml @@ -0,0 +1,45 @@ +manifestVersion: 1 +id: holesail-switchboard +category: networking +name: Holesail Switchboard +version: "2.0.8" +tagline: Управляйте несколькими P2P-туннелями Holesail с единой панели управления. +description: >- + Запускаем DFWebOS за домашним маршрутизатором (NAT) без общедоступного домена? Tor слишком медленный? + + + Holesail Switchboard предоставляет веб-интерфейс для управления несколькими серверами и клиентами Holesail. + позволяя вам создавать мгновенные туннели P2P, которые обходят любые ограничения сети, брандмауэра или NAT. + + + Особенности: + - Создавайте и управляйте несколькими P2P-серверами и клиентами с единой панели управления. + - Генерация QR-кода для удобного обмена URL-адресами подключения к серверу. + - Поддержка безопасного режима для частных подключений + - Постоянная конфигурация, выдерживающая перезагрузки. + + + Варианты использования: + - Предоставляйте доступ к Интернету вашим приложениям DFWebOS без переадресации портов. + - Поделитесь доступом к местным услугам с друзьями и семьей. + - Безопасное подключение к удаленным сервисам + + Для получения дополнительной информации: https://github.com/oren-z0/holesail-switchboard/blob/main/docs/DFWebOS.md. +releaseNotes: "" +developer: oren-z0 +website: https://github.com/oren-z0/holesail-switchboard +dependencies: [] +repo: https://github.com/oren-z0/holesail-switchboard +support: https://github.com/oren-z0/holesail-switchboard/discussions +port: 3160 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: oren-z0 +submission: https://github.com/getumbrel/dfwebos-apps/pull/4648 diff --git a/holesail-switchboard/docker-compose.yml b/holesail-switchboard/docker-compose.yml new file mode 100644 index 0000000..157912a --- /dev/null +++ b/holesail-switchboard/docker-compose.yml @@ -0,0 +1,32 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: holesail-switchboard_web_1 + APP_PORT: 3160 + + web: + image: orenz0/holesail-switchboard:v2.0.8@sha256:87bee9070543a0ec929289fc1d6ebe37b899350b4844d35ff1f2b38e689868ad + restart: on-failure + stop_grace_period: 1m + ports: + - 3161:3161 + - 3162:3162 + - 3163:3163 + - 3164:3164 + - 3165:3165 + - 3166:3166 + - 3167:3167 + - 3168:3168 + - 3169:3169 + - 3170:3170 + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + HSSB_DATA_FILE: /data/data.json + HSSB_HOST: 0.0.0.0 + HSSB_PORT: 3160 + HSSB_CLIENT_HOST: 0.0.0.0 + HSSB_FIXED_CLIENT_PORTS: 3161-3170 + HSSB_SUBTITLE: "For more information, visit: https://github.com/oren-z0/holesail-switchboard/blob/main/docs/DFWebOS.md" diff --git a/homarr/data/.gitkeep b/homarr/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/homarr/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/homarr/dfwebos-app.yml b/homarr/dfwebos-app.yml new file mode 100644 index 0000000..6a136e1 --- /dev/null +++ b/homarr/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: homarr +name: Homarr +tagline: Настраиваемая домашняя страница браузера +category: files +version: "1.59.3" +port: 7575 +description: >- + 🦞 Homarr — это современная автономная панель управления, призванная помочь пользователям управлять и организовывать свои веб-приложения и сервисы в одном центральном месте. Он действует как персонализированная домашняя страница, доступная через веб-браузер, позволяя людям иметь быстрый и легкий доступ ко всем важным ссылкам, серверам, контейнерам и API. Это делает его особенно полезным для людей, которые запускают несколько сервисов на своих серверах или устройствах и хотят иметь чистый, унифицированный интерфейс для взаимодействия с ними. + + + Основная цель Homarr — предоставить интуитивно понятный и визуально привлекательный обзор различных самостоятельных сервисов. Пользователи могут создавать настраиваемые карточки или плитки, представляющие различные приложения или конечные точки. Эти плитки можно расположить в соответствии с личными предпочтениями, что упрощает поиск и запуск нужной службы без необходимости запоминать несколько URL-адресов или управлять многочисленными закладками. Панель мониторинга обеспечивает гибкость дизайна, позволяя настраивать макет, цвета и значки в соответствии со стилем пользователя или для повышения удобства использования. + + + Поскольку Homarr размещается самостоятельно, он дает пользователям полный контроль над своими данными и средой. Его можно развернуть на таких устройствах, как домашние серверы, сетевые системы хранения или виртуальные частные серверы. Функции безопасности можно включить, чтобы ограничить доступ только авторизованным пользователям, что гарантирует защиту панели мониторинга и связанных служб от несанкционированного использования. + + + Homarr особенно привлекателен для технических энтузиастов, системных администраторов и всех, кто управляет сложной настройкой автономных приложений. Это упрощает навигацию по различным интерфейсам и упрощает мониторинг и доступ к сервисам. Объединив все в единый, простой в использовании интерфейс, Homarr повышает производительность и организацию. + + + Подводя итог, можно сказать, что Homarr — это настраиваемое и безопасное решение для информационной панели для людей, стремящихся централизовать доступ к своим локальным веб-приложениям. Он повышает удобство, предлагая визуально структурированную и персонализированную точку доступа к различным онлайн-сервисам и инструментам. +developer: homarr-labs +website: https://homarr.dev/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3254 +repo: https://github.com/homarr-labs/homarr +support: https://github.com/homarr-labs/homarr/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Это обновление включает обновление зависимостей: + - Обновлена зависимость sqlite3 для повышения стабильности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/homarr-labs/homarr/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/homarr/docker-compose.yml b/homarr/docker-compose.yml new file mode 100644 index 0000000..90827d7 --- /dev/null +++ b/homarr/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: homarr_web_1 + APP_PORT: 7575 + + web: + image: ghcr.io/homarr-labs/homarr:v1.59.3@sha256:4ffa0d4b24e390fd0050a18103ecfcb009357f6b3a25409fd4dd8cb0b9f3443e + restart: on-failure + environment: + SECRET_ENCRYPTION_KEY: ${APP_SEED} + volumes: + - ${APP_DATA_DIR}/data:/appdata diff --git a/home-assistant-fusion-ui/data/fusion/.gitkeep b/home-assistant-fusion-ui/data/fusion/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/home-assistant-fusion-ui/dfwebos-app.yml b/home-assistant-fusion-ui/dfwebos-app.yml new file mode 100644 index 0000000..592ad62 --- /dev/null +++ b/home-assistant-fusion-ui/dfwebos-app.yml @@ -0,0 +1,31 @@ +manifestVersion: 1 +id: home-assistant-fusion-ui +name: HA-Fusion +tagline: Современная, простая в использовании и производительная панель управления Home Assistant. +category: automation +version: "2024.10.1" +port: 5023 +description: >- + HA-Fusion (Home Assistant Fusion интерфейс) — альтернативный интерфейс для приборной панели Home Assistant, + вдохновлен элегантным и интуитивно понятным дизайном приложения iOS Home. Хотя он не управляет интеграцией, + Цель HA-Fusion — предоставить настраиваемый и визуально привлекательный интерфейс для пользователей, ищущих + чтобы улучшить свой опыт Home Assistant. +developer: Mattias Persson +website: https://github.com/matt8707/ha-fusion +repo: https://github.com/matt8707/ha-fusion +submitter: João Victor +submission: https://github.com/getumbrel/dfwebos-apps/pull/1185 +support: https://github.com/matt8707/ha-fusion/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск включает следующие улучшения: + - Фиксированные элементы изображения добавляют новые функции изображения. + + + Полные примечания к выпуску можно найти на сайте https://github.com/matt8707/ha-fusion/releases. +dependencies: + - home-assistant +path: "" \ No newline at end of file diff --git a/home-assistant-fusion-ui/docker-compose.yml b/home-assistant-fusion-ui/docker-compose.yml new file mode 100644 index 0000000..1b50e6a --- /dev/null +++ b/home-assistant-fusion-ui/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.7" + +services: + # Некоторые запросы API от Fusion не работают, если для app_proxy не установлено значение PROXY_TRUST_UPSTREAM=true. + # приложение_прокси: + # среда: + # APP_HOST: home-assistant-fusion-ui_web_1 + # APP_PORT: 5050 + # PROXY_TRUST_UPSTREAM: "true" + + web: + image: ghcr.io/matt8707/ha-fusion:2024.10.1@sha256:5eea4634ab2b1e7c7523943996d13318d109b293abe8e9e86c38daf5c41830cb + restart: on-failure + user: 1000:1000 + ports: + - 5023:5050 + volumes: + - ${APP_DATA_DIR}/data/fusion:/app/data + environment: + HASS_URL: http://${DEVICE_DOMAIN_NAME}:8123 + extra_hosts: + - "${DEVICE_DOMAIN_NAME}:${APP_HAFUSION_MACHINE_IP}" \ No newline at end of file diff --git a/home-assistant-fusion-ui/exports.sh b/home-assistant-fusion-ui/exports.sh new file mode 100644 index 0000000..6c0ec35 --- /dev/null +++ b/home-assistant-fusion-ui/exports.sh @@ -0,0 +1 @@ +export APP_HAFUSION_MACHINE_IP=$(hostname -I | awk '{print $1}') \ No newline at end of file diff --git a/home-assistant/data/.gitkeep b/home-assistant/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/home-assistant/dfwebos-app.yml b/home-assistant/dfwebos-app.yml new file mode 100644 index 0000000..769cc3d --- /dev/null +++ b/home-assistant/dfwebos-app.yml @@ -0,0 +1,60 @@ +manifestVersion: 1.1 +id: home-assistant +category: automation +name: Home Assistant +version: "2026.4.4" +tagline: Домашняя автоматизация, которая ставит локальный контроль и конфиденциальность на первое место +description: >- + Домашняя автоматизация с открытым исходным кодом, обеспечивающая локальный контроль и конфиденциальность + сначала. Создано мировым сообществом мастеров и энтузиастов DIY. + После запуска Home Assistant автоматически просканирует вашу сеть на наличие известных устройств и позволит вам легко их настроить. + Home Assistant интегрируется с более чем тысячей различных устройств и сервисов. + + + Как только вы интегрируете все свои устройства дома, вы сможете раскрыть возможности Home Assistant. + усовершенствованный механизм автоматизации, который заставит ваш дом работать на вас. Делайте такие вещи, как: + + - Включайте свет, когда солнце садится или когда приходите домой. + + - Получайте оповещения, когда оставляете дверь гаража открытой. + + + Home Assistant хранит ваши данные локально, нет необходимости в облаке. Home Assistant взаимодействует с вашими устройствами локально и переключается на получение данных из облака, если нет другого варианта. Никакие данные не хранятся в облаке, все обрабатывается локально. + + + Примечание. Функция обнаружения USB-адаптера (например, для ключей Zigbee, подключенных непосредственно к устройству, на котором работает DFWebOS) может работать ненадежно для пользователей DFWebOS на Raspberry Pi. +developer: Home Assistant +website: https://home-assistant.io +dependencies: [] +repo: https://github.com/home-assistant/core +support: https://community.home-assistant.io +port: 8123 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +permissions: + - STORAGE_DOWNLOADS +releaseNotes: >- + Этот выпуск исправлений включает исправления ошибок и улучшения во многих интеграциях. + + + Основные исправления и улучшения: + - Исправлен просмотр мультимедиа Kodi. + - Исправлена ошибка ложного повтора аутентификации Victron BLE для нераспознанных байтов рекламного режима. + - Исправлена проверка типа MIME с учетом регистра в Google Generative ИИ TTS. + - Исправлен индикатор MQTT JSON, восстанавливающий отсутствующий цветовой режим при запуске. + - Исправлена обработка соединения IMAP при отмене задачи после потери соединения. + - Исправлено состояние воды и класс устройства для Gardena Bluetooth. + - Исправлена проверка скорости вентилятора Roborock и обработка ошибок. + - Замедлен опрос Tractive API, чтобы избежать ошибок ограничения скорости. + - Обновлен интерфейс до последней версии + + + Полные примечания к выпуску доступны по адресу https://github.com/home-assistant/core/releases/. +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/9d79cffae608c6a6ab077f859c1c531a581cf926 diff --git a/home-assistant/docker-compose.yml b/home-assistant/docker-compose.yml new file mode 100644 index 0000000..71991f8 --- /dev/null +++ b/home-assistant/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.7" + +services: + server: + image: homeassistant/home-assistant:2026.4.4@sha256:c1e5f0147f4cb51ccb05bb30b62a1269cc1bd48a6274792d3b38a77ab274dfd2 + network_mode: host + # интерфейс на порту по умолчанию 8123 + privileged: true + volumes: + - ${APP_DATA_DIR}/data:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/media + - /dev:/dev + - /run/dbus:/run/dbus:ro diff --git a/home-assistant/hooks/pre-start b/home-assistant/hooks/pre-start new file mode 100755 index 0000000..ffa88c9 --- /dev/null +++ b/home-assistant/hooks/pre-start @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# Этот скрипт проверяет, установлена ​​ли в данный момент версия приложения, предшествующая хост-сети, и, если да, +# удаляет старые файлы конфигурации, чтобы позволить Home Assistant правильно инициализироваться. + +APP_DIR="$(dirname "${BASH_SOURCE[0]}")/.." +HOME_ASSISTANT_CONFIG_DIR="${APP_DIR}/data" +PRE_HOST_NETWORK_CONFIGURATION_YAML="${APP_DIR}/configuration.yaml" +PRE_HOST_NETWORK_CONFIGURATION_TEMPLATE="${APP_DIR}/configuration.yaml.template" +CONFIGURATION_YAML="${HOME_ASSISTANT_CONFIG_DIR}/configuration.yaml" + +# Проверьте наличие файлов конфигурации перед хост-сетью и удалите их, если они существуют. +if [[ -f "${PRE_HOST_NETWORK_CONFIGURATION_YAML}" ]] || [[ -f "${PRE_HOST_NETWORK_CONFIGURATION_TEMPLATE}" ]]; then + echo "This is a pre-host-network installation" + + if [[ -f "${PRE_HOST_NETWORK_CONFIGURATION_YAML}" ]]; then + echo "Deleting old configuration.yaml" + rm "${PRE_HOST_NETWORK_CONFIGURATION_YAML}" + fi + + if [[ -f "${PRE_HOST_NETWORK_CONFIGURATION_TEMPLATE}" ]]; then + echo "Deleting old configuration.yaml.template" + rm "${PRE_HOST_NETWORK_CONFIGURATION_TEMPLATE}" + fi + + # Также удалите configuration.yml в каталоге данных. + if [[ -f "${CONFIGURATION_YAML}" ]]; then + echo "Deleting old configuration.yaml in data dir" + rm "${CONFIGURATION_YAML}" + fi +fi \ No newline at end of file diff --git a/homebox/data/.gitkeep b/homebox/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/homebox/dfwebos-app.yml b/homebox/dfwebos-app.yml new file mode 100644 index 0000000..cec9694 --- /dev/null +++ b/homebox/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: homebox +name: HomeBox +tagline: Система инвентаризации и организации, созданная для домашнего пользователя. +category: files +version: "0.25.0" +port: 7745 +description: >- + Homebox — это система инвентаризации и организации, созданная для домашнего пользователя! Homebox, ориентированный на простоту и удобство использования, является идеальным решением для вашего домашнего инвентаря, организации и управления. + + + Homebox в настоящее время находится в стадии бета-тестирования и находится в стадии активной разработки, а это означает, что его функции еще не завершены и могут содержать ошибки. +developer: SysAdmins Media +website: https://homebox.software +repo: https://github.com/sysadminsmedia/homebox +support: https://github.com/sysadminsmedia/homebox/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +path: "" +torOnly: false +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + ⚠️ Перед обновлением настоятельно рекомендуется сохранять резервные копии базы данных и сохраненных вложений. + + + 🚨 В этом выпуске исправлена ​​уязвимость безопасности (CVE-2026-40196), которая позволяла удаленному пользователю по-прежнему получать доступ к своей группе по умолчанию через API. + + + Основные моменты этого выпуска: + - Отношения тегов: теги теперь могут иметь родительские/дочерние отношения и значки. + - Теперь поддерживаются дробные/десятичные числа (например, 1,2, 3,45). + - Пользовательские настройки теперь хранятся в базе данных и сохраняются на всех устройствах и браузерах. + - Добавлена поддержка OpenTelemetry для отслеживания, регистрации и отслеживания ошибок. + - Добавлены OpenFoodFacts, OpenBeautyFacts и OpenProductsFacts в качестве поставщиков поиска штрих-кодов. + + + Полные примечания к выпуску можно найти по адресу https://github.com/sysadminsmedia/homebox/releases. +submitter: Xosten +submission: https://github.com/getumbrel/dfwebos-apps/pull/501 diff --git a/homebox/docker-compose.yml b/homebox/docker-compose.yml new file mode 100644 index 0000000..5d875a6 --- /dev/null +++ b/homebox/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + + app_proxy: + environment: + APP_HOST: homebox_web_1 + APP_PORT: 7745 + + web: + image: ghcr.io/sysadminsmedia/homebox:0.25.0@sha256:6506480a3dfadd2cc885fa97b32d11b0ee28ec58629fa34a76afdb4ac540c7fc + restart: on-failure + user: 1000:1000 + environment: + - HBOX_LOG_LEVEL=info + - HBOX_LOG_FORMAT=text + - HBOX_WEB_MAX_UPLOAD_SIZE=10 + volumes: + - ${APP_DATA_DIR}/data:/data/ diff --git a/homebridge/data/homebridge/.gitkeep b/homebridge/data/homebridge/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/homebridge/dfwebos-app.yml b/homebridge/dfwebos-app.yml new file mode 100644 index 0000000..b14021e --- /dev/null +++ b/homebridge/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1 +id: homebridge +category: automation +name: Homebridge +version: "1.11.3-2026-03-25" +tagline: "Поддержка HomeKit для нетерпеливых" +description: >- + Поддержка HomeKit там, где ее нет. Homebridge позволяет интегрироваться с устройствами умного дома, которые не поддерживают HomeKit. + Существует более 2000 плагинов Homebridge, поддерживающих тысячи различных интеллектуальных аксессуаров. + + + Некоторые из наиболее популярных плагинов включают в себя: + + - Кольцо + + - Гнездо и гнездовые камеры + + - Умный дом TP-Link Kasa + + - Hue/deCONZ (Зигби) + + - Белкин Вемо + + - мой вопрос + + - ЮниФи Защита +developer: Homebridge +website: https://homebridge.io/ +dependencies: [] +repo: https://github.com/homebridge/homebridge +support: https://github.com/homebridge/homebridge/issues +port: 8581 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +permissions: + - GPU +releaseNotes: >- + Этот выпуск включает в себя несколько улучшений и обновлений: + - Обновлен Homebridge до версии 1.11.3. + - Обновлен Homebridge интерфейс до версии 5.20.0. + - Обновлен Node.js до версии 24.14.1. + - Пакет APT Homebridge обновлен до версии 1.8.19. + + + Полные примечания к выпуску можно найти по адресу https://github.com/homebridge/homebridge/releases. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/606 diff --git a/homebridge/docker-compose.yml b/homebridge/docker-compose.yml new file mode 100644 index 0000000..d62c0fd --- /dev/null +++ b/homebridge/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.7" + +services: + server: + image: homebridge/homebridge:2026-03-25@sha256:a420e1e355e79c97df13c43d677a6d20c4ca6a073c889c528a6271f391e91d8c + # контейнер запускается от имени пользователя root + network_mode: host + # доступен в порту 8581 + volumes: + - ${APP_DATA_DIR}/data/homebridge:/homebridge + restart: on-failure diff --git a/homebridge/exports.sh b/homebridge/exports.sh new file mode 100644 index 0000000..d24ce9e --- /dev/null +++ b/homebridge/exports.sh @@ -0,0 +1,5 @@ +# Homebridge работает в режиме хост-сети, поэтому не использует прокси-сервер приложения, необходимый для генерации имени хоста Tor HS. +# Это генерирует поддельное имя хоста HS для Homebridge. +HOMEBRIDGE_TOR_DIR="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}" +mkdir -p "${HOMEBRIDGE_TOR_DIR}" +touch "${HOMEBRIDGE_TOR_DIR}/hostname" diff --git a/homehub/data/app_data/.gitkeep b/homehub/data/app_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/homehub/data/app_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/homehub/data/config/config.yml b/homehub/data/config/config.yml new file mode 100644 index 0000000..9b9af59 --- /dev/null +++ b/homehub/data/config/config.yml @@ -0,0 +1,59 @@ +instance_name: "My Home Hub" +password: "" #leave blank for password less access +admin_name: "Administrator" +feature_toggles: + shopping_list: true + media_downloader: true + pdf_compressor: true + qr_generator: true + notes: true + shared_cloud: true + who_is_home: true + personal_status: true + chores: true + recipes: true + expiry_tracker: true + url_shortener: true + expense_tracker: true + +family_members: + - Mom + - Dad + - Dipanshu + - Vivek + - India + +reminders: + # time_format управляет отображением времени напоминаний в интерфейс. + # Допустимые значения: "12h" (по умолчанию) или "24h". Удалите или оставьте пустым, чтобы вернуться к 12 часам. + time_format: 12h + + # Calendar_start_day определяет, в какой день начинается календарь напоминаний. + # Принимаются полные названия дней недели (sunday..saturday) или числовые значения от 0 до 6, где 0 = воскресенье. + calendar_start_day: sunday #default is Sunday + + # Примеры категорий напоминаний (клавиши строчные, пробелы не рекомендуются) + categories: + - key: health + label: Health + color: "#dc2626" + - key: bills + label: Bills + color: "#0d9488" + - key: school + label: School + color: "#7c3aed" + - key: family + label: Family + color: "#2563eb" +theme: + primary_color: "#1d4ed8" + secondary_color: "#a0aec0" + background_color: "#f7fafc" + card_background_color: "#fff" + text_color: "#333" + sidebar_background_color: "#2563eb" + sidebar_text_color: "#ffffff" + sidebar_link_color: "rgba(255,255,255,0.95)" + sidebar_link_border_color: "rgba(255,255,255,0.18)" + sidebar_active_color: "#3b82f6" diff --git a/homehub/data/media/.gitkeep b/homehub/data/media/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/homehub/data/media/.gitkeep @@ -0,0 +1 @@ + diff --git a/homehub/data/pdfs/.gitkeep b/homehub/data/pdfs/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/homehub/data/pdfs/.gitkeep @@ -0,0 +1 @@ + diff --git a/homehub/data/uploads/.gitkeep b/homehub/data/uploads/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/homehub/data/uploads/.gitkeep @@ -0,0 +1 @@ + diff --git a/homehub/dfwebos-app.yml b/homehub/dfwebos-app.yml new file mode 100644 index 0000000..c4c97fb --- /dev/null +++ b/homehub/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1 +id: homehub +name: HomeHub +tagline: Современный центр семейной организации +category: files +version: "0.2.3.2" +port: 5059 +description: >- + HomeHub 🏡 — это тщательно продуманное веб-приложение, которое служит цифровым командным центром для семей и совместного проживания. Его основная цель — упростить повседневную координацию и общение путем объединения основных бытовых инструментов в одну целостную и простую в использовании платформу. Вместо манипулирования несколькими приложениями или рукописными списками HomeHub предлагает универсальную среду, в которой можно легко организовать все, от домашних дел и продуктов до заметок и общих расходов. + + + Одной из его основных функций является раздел общих заметок, где все члены семьи могут вместе писать, редактировать и обновлять информацию. Это делает его идеальным для быстрых напоминаний, дел или планирования событий в группе. Инструмент списка покупок добавляет еще один уровень удобства, позволяя сотрудничать в режиме реального времени при подготовке к походу за продуктами. Каждый товар можно мгновенно вычеркнуть, информируя всех и избегая повторных покупок. + + + Приложение также включает в себя подробный трекер домашних дел, который помогает назначать домашние дела и управлять ими. Участники могут отслеживать, кто отвечает за уборку, стирку или другие повторяющиеся обязанности, что упрощает поддержание баланса и ответственности в общем жилом пространстве. Для финансовых организаций HomeHub интегрирует трекер расходов, который записывает общие платежи, ежемесячные счета и подписки, помогая пользователям видеть, куда идут их деньги и как распределяются расходы. + + + Помимо управления задачами и финансами, HomeHub добавляет небольшие, но практичные утилиты, которые улучшают повседневную жизнь. Книга рецептов позволяет пользователям сохранять любимые блюда для быстрого доступа, а система отслеживания срока годности помогает предотвратить пищевые отходы, напоминая пользователям, когда срок годности продуктов близок к концу. Существует также легкое средство сокращения ссылок для упрощения URL-адресов, компрессор PDF для управления документами и генератор QR-кода для быстрого обмена. + + + Интерфейс HomeHub разработан с учетом ясности и простоты. Все представлено в элегантном и минималистичном дизайне, который интуитивно понятен даже тем, кто не разбирается в технологиях. Основное внимание уделяется уменьшению беспорядка и созданию приятного цифрового пространства, в котором каждый член семьи может внести равный вклад. + + + По сути, HomeHub превращает управление домашним хозяйством в общий, прозрачный и совместный процесс. Это помогает людям оставаться информированными, организованными и связанными друг с другом, превращая рутину ежедневной координации в нечто плавное, доступное и даже приятное. +developer: Suraj Verma +website: https://github.com/surajverma/homehub +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/4015 +repo: https://github.com/surajverma/homehub +support: https://github.com/surajverma/homehub/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Это обновление включает улучшения пользовательского интерфейса и функциональности виджета погоды: + - Исправлена кнопка удаления и выбор видимости всех меток, когда записей нет. + - Улучшена инициализация виджета погоды, чтобы он работал независимо от других функций. + + + Полные примечания к выпуску можно найти по адресу https://github.com/surajverma/homehub/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/homehub/docker-compose.yml b/homehub/docker-compose.yml new file mode 100644 index 0000000..e804f55 --- /dev/null +++ b/homehub/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: homehub_web_1 + APP_PORT: 5000 + + web: + image: ghcr.io/surajverma/homehub:0.2.3.2@sha256:7ffa2ed369b39bb090b6eae1ee7d27b803215939794107b3e4cbeede627338ec + restart: on-failure + environment: + - FLASK_ENV=production + - SECRET_KEY=${APP_SEED} + volumes: + - ${APP_DATA_DIR}/data/uploads:/app/uploads + - ${APP_DATA_DIR}/data/media:/app/media + - ${APP_DATA_DIR}/data/pdfs:/app/pdfs + - ${APP_DATA_DIR}/data/app_data:/app/data + - ${APP_DATA_DIR}/data/config/config.yml:/app/config.yml:ro diff --git a/hortusfox/data/backup/.gitkeep b/hortusfox/data/backup/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/hortusfox/data/backup/.gitkeep @@ -0,0 +1 @@ + diff --git a/hortusfox/data/db_data/.gitkeep b/hortusfox/data/db_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/hortusfox/data/db_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/hortusfox/data/images/.gitkeep b/hortusfox/data/images/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/hortusfox/data/images/.gitkeep @@ -0,0 +1 @@ + diff --git a/hortusfox/data/logs/.gitkeep b/hortusfox/data/logs/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/hortusfox/data/logs/.gitkeep @@ -0,0 +1 @@ + diff --git a/hortusfox/data/migrate/.gitkeep b/hortusfox/data/migrate/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/hortusfox/data/migrate/.gitkeep @@ -0,0 +1 @@ + diff --git a/hortusfox/data/themes/.gitkeep b/hortusfox/data/themes/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/hortusfox/data/themes/.gitkeep @@ -0,0 +1 @@ + diff --git a/hortusfox/dfwebos-app.yml b/hortusfox/dfwebos-app.yml new file mode 100644 index 0000000..2e37e0a --- /dev/null +++ b/hortusfox/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1 +id: hortusfox +name: HortusFox +tagline: Приложение для совместного отслеживания и управления заводами +category: files +version: "5.7" +port: 8838 +description: >- + 🌿 HortusFox — это автономное веб-приложение, предназначенное для любителей растений, которые хотят управлять своими комнатными растениями и садами структурированным образом и с уважением к конфиденциальности. Оно полностью бесплатное и имеет открытый исходный код, что позволяет пользователям настраивать и расширять программное обеспечение в соответствии со своими личными потребностями. Независимо от того, ухаживаете ли вы за несколькими горшечными растениями на подоконнике или управляете большим садом, HortusFox предоставляет цифровое пространство для отслеживания, организации и планирования всех аспектов ухода за растениями. + + + По своей сути HortusFox позволяет вам каталогизировать ваши растения с подробной информацией, такой как названия видов, примечания, пользовательские атрибуты и изображения. Растения можно сгруппировать по местоположению, что упрощает управление разными комнатами или открытыми пространствами. Система поддерживает повторяющиеся задачи и напоминания о таких действиях, как полив, внесение удобрений или пересадка, помогая вам поддерживать постоянный режим ухода. + + + HortusFox выходит за рамки отслеживания растений, предлагая инструменты для управления сопутствующими предметами, такими как горшки, удобрения и инструменты. Эта функция инвентаризации помогает организовать и учитывать ваши садовые принадлежности. Для садоводов на открытом воздухе интеграция данных о погоде помогает лучше принимать решения, согласовывая график ухода с текущими условиями. + + + Приложение предназначено для совместной работы. Если несколько пользователей управляют одной и той же коллекцией растений, встроенная функция группового чата позволяет им общаться и координировать задачи. HortusFox также включает встроенную функцию распознавания растений, которая помогает идентифицировать неизвестные виды. + + + Интерфейс отзывчив и работает на всех устройствах, гарантируя, что информация о растениях и управление задачами будут легко доступны независимо от того, находитесь ли вы за компьютером или в саду со своим телефоном. Пользователи также могут персонализировать свой опыт, выбирая различные темы, соответствующие их эстетическим предпочтениям. + + + HortusFox идеально подходит для отдельных лиц и семей, которым нравится ухаживать за растениями и которым нужен современный, безопасный и настраиваемый способ поддержки своих садовых работ. Благодаря продуманному дизайну и богатому набору функций он меняет то, как люди взаимодействуют со своими зелеными насаждениями. +backupIgnore: + - data/logs/* +developer: Daniel Brendel +website: https://www.hortusfox.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3245 +repo: https://github.com/danielbrendel/hortusfox-web +support: https://github.com/danielbrendel/hortusfox-web/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + В этом выпуске представлены следующие улучшения: + - Управление локальными темами + - Команда настройки конфигурации AquaShell + + + Полные примечания к выпуску можно найти по адресу https://github.com/danielbrendel/hortusfox-web/releases. +dependencies: [] +path: "" +defaultUsername: "dfwebos@dfwebos.local" +deterministicPassword: true diff --git a/hortusfox/docker-compose.yml b/hortusfox/docker-compose.yml new file mode 100644 index 0000000..0cfe03a --- /dev/null +++ b/hortusfox/docker-compose.yml @@ -0,0 +1,39 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: hortusfox_app_1 + APP_PORT: 80 + + app: + image: ghcr.io/danielbrendel/hortusfox-web:v5.7@sha256:8c286b6656920071c4c10142203566b5305702806117d01a66be6ba66d27a104 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/images:/var/www/html/public/img + - ${APP_DATA_DIR}/data/logs:/var/www/html/app/logs + - ${APP_DATA_DIR}/data/backup:/var/www/html/public/backup + - ${APP_DATA_DIR}/data/themes:/var/www/html/public/themes + - ${APP_DATA_DIR}/data/migrate:/var/www/html/app/migrations + environment: + APP_ADMIN_EMAIL: "dfwebos@dfwebos.local" + APP_ADMIN_PASSWORD: ${APP_PASSWORD} + DB_HOST: hortusfox_db_1 + DB_PORT: 3306 + DB_DATABASE: hortusfox + DB_USERNAME: user + DB_PASSWORD: password + DB_CHARSET: "utf8mb4" + depends_on: + - db + + db: + image: mariadb:11.4.7@sha256:c5c82ddc074b9236fda87127934a1da726ecac68e9de083fd0e0d11a7bedc077 + restart: on-failure + environment: + MYSQL_ROOT_PASSWORD: my-secret-pw + MYSQL_DATABASE: hortusfox + MYSQL_USER: user + MYSQL_PASSWORD: password + volumes: + - ${APP_DATA_DIR}/data/db_data:/var/lib/mysql diff --git a/immich/data/model-cache/.gitkeep b/immich/data/model-cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/immich/data/postgres/.gitkeep b/immich/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/immich/data/redis/.gitkeep b/immich/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/immich/data/upload/.gitkeep b/immich/data/upload/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/immich/dfwebos-app.yml b/immich/dfwebos-app.yml new file mode 100644 index 0000000..eebf640 --- /dev/null +++ b/immich/dfwebos-app.yml @@ -0,0 +1,83 @@ +manifestVersion: 1.1 +id: immich +category: files +name: Immich +version: "v2.7.5" +tagline: Высокопроизводительное решение для резервного копирования фото и видео +description: >- + Высокопроизводительное решение для резервного копирования видео и фотографий на вашем мобильном устройстве с открытым исходным кодом. + + + ⚠️Иммих находится в стадии очень активной разработки. Ожидайте ошибок и изменений. Не используйте его как единственный способ хранения фотографий и видео! + + + Функции: + + - Загружать и просматривать видео и фотографии + + - Автоматическое резервное копирование при открытии приложения + + - Выборочный альбом(ы) для резервного копирования. + + - Загрузка фотографий и видео на локальное устройство + + - Многопользовательская поддержка + + - Альбом и общие альбомы + + - Прокручиваемая/перетаскиваемая полоса прокрутки + + - Поддержка RAW (HEIC, HEIF, DNG, Apple ProRaw) + + - Просмотр метаданных (EXIF, карта) + + - Поиск по метаданным, объектам и тегам изображений. + + - Административные функции (управление пользователями) + + - Фоновое резервное копирование + + - Виртуальный свиток + + - Поддержка OAuth + + - Резервное копирование и воспроизведение LivePhoto + + - Пользовательская структура хранения +releaseNotes: >- + ⚠️ Как обычно, проверьте, совместимо ли ваше мобильное приложение с этой версией Immich. + + + Этот выпуск включает в себя новые функции и исправления ошибок. Основные моменты включают в себя: + - Добавлена поддержка настройки политики безопасности шлема/контента (CSP) через переменную среды IMMICH_HELMET_FILE. + - Добавлена возможность создавать новое лицо/человека на лету в редакторе тегов лиц. + - Добавлено действие «Удалить из альбома» в средстве просмотра ресурсов. + - Добавлено действие «Переместить в заблокированную папку» в представлении папки. + - Добавлены сочетания клавиш для редактора фотографий (нажмите E, чтобы открыть, [ и ], чтобы повернуть, ENTER, чтобы сохранить) + - Улучшено разрешение дубликатов: сервер теперь автоматически предлагает, какой ресурс сохранить, и синхронизирует метаданные. + - При проверке версий теперь используется собственная инфраструктура Immich вместо GitHub. + - Исправлена ошибка, из-за которой загрузка живых фото и видео в Safari перезаписывалась. + - Исправлена XSS-уязвимость в программе просмотра панорамных фотографий. + - Исправлены проблемы с импортом внешней библиотеки. + - Исправлен поиск людей, не показывающий результаты для 3 или менее символов. + - Исправлено ограничение скорости и дедупликация для проверок версий. + + + Полные примечания к выпуску можно найти по адресу https://github.com/immich-app/immich/releases. +developer: Alex Tran +website: https://www.immich.app +dependencies: [] +repo: https://github.com/immich-app/immich +support: https://github.com/immich-app/immich/discussions +port: 2283 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +permissions: + - GPU +submitter: levma +submission: https://github.com/getumbrel/dfwebos-apps/pull/239 diff --git a/immich/docker-compose.yml b/immich/docker-compose.yml new file mode 100644 index 0000000..21a2364 --- /dev/null +++ b/immich/docker-compose.yml @@ -0,0 +1,62 @@ +version: "3.7" + +x-environment: &env + NODE_ENV: "production" + DB_HOSTNAME: "immich_postgres_1" + DB_USERNAME: &db_username "immich" + DB_PASSWORD: &db_password "moneyprintergobrrr" + DB_DATABASE_NAME: &db_database_name "immich" + REDIS_HOSTNAME: "immich_redis_1" + LOG_LEVEL: "log" + JWT_SECRET: ${APP_SEED} + DISABLE_REVERSE_GEOCODING: "false" + REVERSE_GEOCODING_PRECISION: "3" + PUBLIC_LOGIN_PAGE_MESSAGE: "" + IMMICH_MACHINE_LEARNING_URL: "http://immich_machine-learning_1:3003" + +services: + app_proxy: + environment: + APP_HOST: immich_server_1 + APP_PORT: 2283 + PROXY_AUTH_ADD: "false" + + server: + image: ghcr.io/immich-app/immich-server:v2.7.5@sha256:c15bff75068effb03f4355997d03dc7e0fc58720c2b54ad6f7f10d1bc57efaa5 + volumes: + - ${APP_DATA_DIR}/data/upload:/data + environment: + <<: *env + depends_on: + - redis + - postgres + restart: on-failure + + machine-learning: + image: ghcr.io/immich-app/immich-machine-learning:v2.7.5@sha256:a2501141440f10516d329fdfba2c68082e19eb9ba6016c061ac80d23beadf7f3 + volumes: + - ${APP_DATA_DIR}/data/model-cache:/cache + environment: + <<: *env + restart: on-failure + + redis: + image: valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data + + postgres: + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:41eacbe83eca995561fe43814fd4891e16e39632806253848efaf04d3c8a8b84 + # новый образ postgres не работает без root + #user: "1000:1000" + environment: + <<: *env + POSTGRES_PASSWORD: *db_password + POSTGRES_USER: *db_username + POSTGRES_DB: *db_database_name + POSTGRES_INITDB_ARGS: "--data-checksums" + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + restart: on-failure diff --git a/immich/hooks/pre-start b/immich/hooks/pre-start new file mode 100755 index 0000000..6328748 --- /dev/null +++ b/immich/hooks/pre-start @@ -0,0 +1,101 @@ +#!/usr/bin/env bash +# Этот скрипт устанавливает необходимые directories/permissions, которые были изменены в приложении с момента первоначального выпуска. +# Он также выполняет миграцию версий для Immich, чтобы обеспечить безопасное обновление через необходимые промежуточные версии. + +set -euo pipefail + +APP_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" +APP_DATA_DIR="${APP_DIR}/data" +APP_COMPOSE_FILE="${APP_DIR}/docker-compose.yml" +IMMICH_PG_VERSION_FILE="${APP_DATA_DIR}/postgres/PG_VERSION" +IMMICH_UPDATE_FLAG_FILE="${APP_DATA_DIR}/POST_1_136_0_VERSION" +MIGRATION_IN_PROGRESS_FILE="${APP_DATA_DIR}/MIGRATION_IN_PROGRESS" + +# Создайте каталог кеша модели, если он не существует. +MODEL_CACHE_DIR="${APP_DATA_DIR}/model-cache" +[ ! -d "${MODEL_CACHE_DIR}" ] && mkdir -p "${MODEL_CACHE_DIR}" && chown 1000:1000 "${MODEL_CACHE_DIR}" + +# удалить каталог tsdata, если он существует +TYPESENSE_DIR="${APP_DATA_DIR}/tsdata" +[ -d "${TYPESENSE_DIR}" ] && rm -rf "${TYPESENSE_DIR}" + +# удалите старый скрипт после обновления, если он существует +POST_UPDATE_SCRIPT="$(readlink -f $(dirname "${BASH_SOURCE[0]}"))/post-update" +[ -f "${POST_UPDATE_SCRIPT}" ] && rm -f "${POST_UPDATE_SCRIPT}" + +# Если файлы postgres еще не существуют +# Тогда скорее всего это новая установка +# Создайте файл флага, чтобы указать, что это версия 1.136+. +if [[ ! -f "${IMMICH_PG_VERSION_FILE}" ]]; then + touch "${IMMICH_UPDATE_FLAG_FILE}" +fi + +# Выйти, если файл флага существует +if [[ -f "${IMMICH_UPDATE_FLAG_FILE}" ]]; then + echo "Immich update flag file already exists at ${IMMICH_UPDATE_FLAG_FILE}. Skipping migration steps." + exit 0 +fi + +# Проверьте, выполняется ли уже миграция, чтобы предотвратить бесконечные циклы. +if [[ -f "${MIGRATION_IN_PROGRESS_FILE}" ]]; then + echo "Migration already in progress, exiting to prevent loops" + exit 0 +fi + +# Отметить миграцию как выполняемую +touch "${MIGRATION_IN_PROGRESS_FILE}" + +# Если файл флага не существует, сначала обновите его до версии 1.136.0, а затем перейдите к последней версии. +echo "No POST_1_136_0_VERSION flag found - performing update to v1.136.0 and then to latest version" + +# Образы Docker для промежуточного шага v1.136.0 +INTERMEDIATE_SERVER_IMAGE="ghcr.io/immich-app/immich-server:v1.136.0@sha256:8c9633b96ca5b748b10875a99c498ee6f1e5d7f7d1df2bf341909cacb88ad672" +INTERMEDIATE_ML_IMAGE="ghcr.io/immich-app/immich-machine-learning:v1.136.0@sha256:198d52734136fe9840866cc2f48a8141e0d002c2a25be7e35cd28ef7936b6c67" + +# Получить текущие изображения с docker-compose.yml +get_current_images_from_compose() { + local server_image=$(yq '.services.server.image' "${APP_COMPOSE_FILE}" 2>/dev/null || echo "") + local ml_image=$(yq '.services."machine-learning".image' "${APP_COMPOSE_FILE}" 2>/dev/null || echo "") + echo "${server_image}|${ml_image}" +} + +# Обновить файл компоновки новыми изображениями. +update_compose_images() { + local server_image="${1}" + local ml_image="${2}" + + yq -i ".services.server.image = \"${server_image}\"" "${APP_COMPOSE_FILE}" + yq -i ".services.\"machine-learning\".image = \"${ml_image}\"" "${APP_COMPOSE_FILE}" +} + +# Сохраните исходные изображения для последнего шага. +original_images=$(get_current_images_from_compose) +original_server_image=$(echo "${original_images}" | cut -d'|' -f1) +original_ml_image=$(echo "${original_images}" | cut -d'|' -f2) + +echo "Step 1: Updating to v1.136.0 for safe migration" +update_compose_images "${INTERMEDIATE_SERVER_IMAGE}" "${INTERMEDIATE_ML_IMAGE}" + +# Начните с версии 1.136.0 +echo "Starting Immich v1.136.0..." +"${DFWEBOS_ROOT}/scripts/app" start immich + +# Дождитесь завершения запуска и миграции. +echo "Waiting for v1.136.0 to complete startup and migrations..." +sleep 90 + +# Остановить приложение +echo "Stopping Immich v1.136.0..." +"${DFWEBOS_ROOT}/scripts/app" stop immich + +echo "Step 2: Updating to latest version" +update_compose_images "${original_server_image}" "${original_ml_image}" + +# Создайте файл флага, чтобы предотвратить повторный запуск этой миграции. +touch "${IMMICH_UPDATE_FLAG_FILE}" + +# Удалить файл выполнения миграции +rm -f "${MIGRATION_IN_PROGRESS_FILE}" + +echo "Migration completed: v1.136.0 -> latest version" +echo "Created ${IMMICH_UPDATE_FLAG_FILE} flag file" diff --git a/influxdb/data/chronograf/.gitkeep b/influxdb/data/chronograf/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/influxdb/data/influxdb/.gitkeep b/influxdb/data/influxdb/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/influxdb/dfwebos-app.yml b/influxdb/dfwebos-app.yml new file mode 100644 index 0000000..0632ae1 --- /dev/null +++ b/influxdb/dfwebos-app.yml @@ -0,0 +1,84 @@ +manifestVersion: 1.1 +id: influxdb +name: InfluxDB +tagline: Высокопроизводительная база данных временных рядов +category: developer +version: "1.12.3" +port: 8888 +description: >- + InfluxDB — это высокопроизводительная база данных временных рядов с открытым исходным кодом, поставляемая с Chronograf, официальным веб-инструментом визуализации. + Созданный специально для обработки высокочастотных данных, InfluxDB превосходно справляется с управлением и анализом больших объемов информации с метками времени. + + + ⚠️ Для расширенного доступа CLI предоставляются учетные данные администратора по умолчанию. Chronograf предварительно настроен с использованием этих учетных данных и не требует дополнительной настройки. + Чтобы найти эти учетные данные, вы можете щелкнуть правой кнопкой мыши значок приложения InfluxDB на главном экране DFWebOS и выбрать «Показать учетные данные по умолчанию». + + + Зачем использовать InfluxDB? + + + **🚀 Высокая производительность** + + InfluxDB — это высокопроизводительное хранилище данных, написанное специально для данных временных рядов. Он обеспечивает высокую пропускную способность приема, сжатия и выполнения запросов в реальном времени. + + + **💡 SQL-подобные запросы с InfluxQL** + + InfluxDB работает с InfluxQL, SQL-подобным языком запросов для взаимодействия с данными. + Он был тщательно создан, чтобы чувствовать себя знакомым тем, кто работает с другими SQL или SQL-подобными средами, а также предоставляет функции, специфичные для хранения и анализа данных временных рядов. + InfluxQL поддерживает регулярные выражения, арифметические выражения и функции, специфичные для временных рядов, для ускорения обработки данных. + + + **📦 Эффективное сохранение данных и понижение разрешения** + + InfluxDB может обрабатывать миллионы точек данных в секунду. Работа с таким большим объемом данных в течение длительного периода может привести к проблемам с хранением. + InfluxDB автоматически сжимает данные, чтобы минимизировать пространство для хранения. + Кроме того, вы можете легко субдискретизировать данные; сохранение необработанных данных высокой точности в течение ограниченного времени и хранение обобщенных данных более низкой точности гораздо дольше или до конца времени. + + + **📊 Интегрированная визуализация с Chronograf** + + Chronograf — это административный пользовательский интерфейс и механизм визуализации стека. Это упрощает настройку и поддержку мониторинга и оповещений для вашей инфраструктуры. + Он прост в использовании и включает в себя шаблоны и библиотеки, которые позволяют быстро создавать информационные панели с визуализацией ваших данных в реальном времени, а также легко создавать правила оповещений и автоматизации. +developer: InfluxData +website: https://www.influxdata.com/ +repo: https://github.com/influxdata/influxdb +support: https://support.influxdata.com/s/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + В этом выпуске InfluxDB представлена ​​версия 1.12.3. + + + Особенности: + - Добавлена поддержка пропуска проверок разрешений файла сертификата TLS. + - Добавлены настраиваемые предварительные предупреждения об истечении срока действия сертификата TLS. + - Поддержка перезагрузки сертификата TLS без перезапуска. + — Добавление непрерывных запросов и диагностики конфигурации в конечную точку отладки. + - Улучшено ведение журнала удаленных точек и отображение информации о пользователе в журналах запросов. + - Добавлен параметр формата времени для HTTP API. + - Сообщать байты пользовательского запроса + + + Исправления ошибок: + - Исправлен порядок предложений для FUTURE LIMIT и PAST LIMIT в заявлениях о политике хранения. + - Исправлена утечка авторизатора в SHOW QUERIES. + - Устранена утечка блокировки в Store.DeleteSeries(). + - Прекратить чрезмерную регистрацию фантомных осколков. + - Исправлена проверка условия для оптимизации курсора массива. + - Исправлена обработка вложенных файлов при сжатии. + - Уменьшение конфликтов блокировок и гонок в очистителе + - Различные другие исправления стабильности и правильности. + + + Полные изменения можно найти здесь: + - InfluxDB v1.12.3: https://docs.influxdata.com/influxdb/v1/about_the_project/release-notes/ + - Хронограф v1.10.8: https://docs.influxdata.com/chronograf/v1/about_the_project/release-notes/ +dependencies: [] +path: "" +defaultUsername: "admin" +deterministicPassword: true +submitter: phelipebf +submission: https://github.com/getumbrel/dfwebos-apps/pull/1788 diff --git a/influxdb/docker-compose.yml b/influxdb/docker-compose.yml new file mode 100644 index 0000000..edf8eef --- /dev/null +++ b/influxdb/docker-compose.yml @@ -0,0 +1,32 @@ +version: "3.7" + +services: + + app_proxy: + environment: + APP_HOST: influxdb_chronograf_1 + APP_PORT: 8888 + + influxdb: + image: influxdb:1.12.3@sha256:35e9976120a18fff82fefcc06d631de7585f33e7b096e9128465e6c15a9233fc + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/influxdb:/var/lib/influxdb + environment: + INFLUXDB_ADMIN_USER: admin + INFLUXDB_ADMIN_PASSWORD: $APP_PASSWORD + INFLUXDB_HTTP_AUTH_ENABLED: "true" + + chronograf: + image: chronograf:1.10.8@sha256:42e7b310399e57126053f3ff8eb551290b942ebbd8fd08186af03cfce512bbff + user: "1000:1000" + environment: + INFLUXDB_URL: "http://influxdb_influxdb_1:8086" + INFLUXDB_USERNAME: admin + INFLUXDB_PASSWORD: $APP_PASSWORD + volumes: + - ${APP_DATA_DIR}/data/chronograf:/var/lib/chronograf + depends_on: + - influxdb diff --git a/influxdb/hooks/pre-start b/influxdb/hooks/pre-start new file mode 100755 index 0000000..95eb1ff --- /dev/null +++ b/influxdb/hooks/pre-start @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" + +DESIRED_OWNER="1000:1000" + +CHRONOGRAF_DATA_DIR="${APP_DATA_DIR}/chronograf" + +influxdb_correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + chown -R "${DESIRED_OWNER}" "${path}" + fi +} + +influxdb_correct_permission "${CHRONOGRAF_DATA_DIR}" diff --git a/influxdb2/data/config/.gitkeep b/influxdb2/data/config/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/influxdb2/data/config/.gitkeep @@ -0,0 +1 @@ + diff --git a/influxdb2/data/data/.gitkeep b/influxdb2/data/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/influxdb2/data/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/influxdb2/dfwebos-app.yml b/influxdb2/dfwebos-app.yml new file mode 100644 index 0000000..217d4cd --- /dev/null +++ b/influxdb2/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1 +id: influxdb2 +name: InfluxDB 2 +tagline: Ведущая платформа для данных временных рядов +category: developer +version: "2.8.0" +port: 8886 +description: >- + Специально создан для аналитики в реальном времени в любом масштабе. + + + Основано на столбчатой ​​аналитике, оптимизировано для экономичного хранения и создано с использованием стандартов открытых данных. + + - Непревзойденная производительность в масштабе: управляйте миллионами точек данных временных рядов в секунду без ограничений. + + - Столбчатая аналитика: столбчатое хранилище данных обеспечивает на несколько порядков более быстрое выполнение аналитических запросов и сокращение занимаемой памяти. + + - Высокоскоростная обработка: прием миллиардов серий с меньшим количеством процессоров и оперативной памяти за небольшую часть стоимости хранилища. + + - Запросы в реальном времени: ответы на запросы для последних и текущих входящих данных за доли секунды. + + - Неограниченная мощность: анализируйте миллиарды временных рядов и точек данных в секунду без ограничений. + + - Недорогое хранилище объектов с Parquet: разделение вычислительных ресурсов и хранилища с лучшим в категории сжатием для хранения большего количества данных, используя меньше места. + + - Взаимодействие с хранилищами данных: построено на основе стандартов открытых данных для прямого доступа к данным из озер и хранилищ через Apache Iceberg. +developer: InfluxData +website: https://www.influxdata.com/ +repo: https://github.com/influxdata/influxdb +support: https://support.influxdata.com/s/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Что нового в версии 2.8.0: + - Добавлено дополнительное хеширование токенов — при включении все токены API сохраняются в виде хэшей на диске для повышения безопасности. + - Исправлена компиляция в Alpine Linux. + + + Также включено в версию 2.7.12: + - Добавлен параметр --pid-file для записи PID-файла при запуске. + - Добавлен параметр --storage-wal-flush-on-shutdown для очистки WAL при завершении работы, гарантируя запись всех данных на диск. + - Улучшены сообщения об ошибках для отброшенных точек, включая сведения о базе данных и политике хранения. + - Исправлена проблема блокировки в TagValueIterator, которая могла привести к блокировке чтения и записи. + - Улучшено ведение журнала запуска со счетчиком прогресса открытия осколков. + + + Полные примечания к выпуску можно найти по адресу https://docs.influxdata.com/influxdb/v2/reference/release-notes/influxdb/. +dependencies: [] +path: "" +submitter: dirstel +submission: https://github.com/getumbrel/dfwebos-apps/pull/2008 diff --git a/influxdb2/docker-compose.yml b/influxdb2/docker-compose.yml new file mode 100644 index 0000000..aeab99f --- /dev/null +++ b/influxdb2/docker-compose.yml @@ -0,0 +1,14 @@ +services: + app_proxy: + environment: + APP_HOST: influxdb2_app_1 + APP_PORT: 8086 + PROXY_AUTH_WHITELIST: "/api/*,/api/v2/*" + + app: + image: influxdb:2.8.0-alpine@sha256:f15dfc604753f53b180364a331b46c2f4bc5c08a665d025982b301efa69bc2f7 + user: 1000:1000 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/data:/var/lib/influxdb2 + - ${APP_DATA_DIR}/data/config:/etc/influxdb2 diff --git a/invidious/data/companioncache/.gitkeep b/invidious/data/companioncache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/invidious/data/db/.gitkeep b/invidious/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/invidious/dfwebos-app.yml b/invidious/dfwebos-app.yml new file mode 100644 index 0000000..81a735d --- /dev/null +++ b/invidious/dfwebos-app.yml @@ -0,0 +1,70 @@ +manifestVersion: 1.1 +id: invidious +category: social +name: Invidious +version: "2.20260207.0" +tagline: Просматривайте YouTube без отслеживания и рекламы +description: >- + Альтернативный интерфейс с открытым исходным кодом для YouTube. + + + Возможности пользователя: + - Легкий + - Нет рекламы + - Нет отслеживания + - JavaScript не требуется. + - Светлые/Темные темы + - Настраиваемая домашняя страница + - Подписки, независимые от Google + - Уведомления для всех подписанных каналов + - Режим только аудио (с фоновым воспроизведением на мобильном телефоне) + - Поддержка комментариев Reddit. + - Доступно на многих языках благодаря нашим переводчикам + + Импорт/экспорт данных: + - Импорт подписок из YouTube, NewPipe и Freetube. + - Импортировать историю просмотров из NewPipe. + - Экспорт подписок на NewPipe и Freetube. + - Импорт/экспорт данных пользователя Invidious + + Технические характеристики: + - Поддержка встроенного видео + - Разработчик API + - Не использует официальные API YouTube. + - Лицензионное соглашение без участия участника (CLA) +developer: IV-Org +website: https://invidious.io/ +dependencies: [] +repo: https://github.com/iv-org/invidious +support: https://matrix.to/#/#invidious:matrix.org +port: 3420 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +releaseNotes: >- + Этот выпуск усиливает сопутствующий конвейер и устраняет широкий спектр проблем, с которыми сталкиваются пользователи. + + + Основные моменты: + - Прямые трансляции вернулись на страницу «Тенденции», а игровые каналы остаются доступными. + - Ссылки «Смотреть на YouTube» больше не содержат устаревшие временные метки для прямых трансляций. + - Загрузки теперь могут осуществляться через компаньона Invidious, если он доступен. + - На страницах каналов теперь отображаются местоимения создателей и миниатюры тематических плейлистов. + - Количество просмотров похожих видео снова стало точным. + - Импортер плейлистов и плейлист API обрабатывают отсутствующие или пустые данные без сбоев. + - Сообщения сообщества с недоступными видео и переключателями контента DMCA снова работают. + - Исправлены проблемы с названием канала и переполнением кнопок. + - Неверные CAPTCHA теперь показывают четкое сообщение «Ошибочная CAPTCHA». + - Добавлена ссылка на текущий выпуск в нижнем колонтитуле. + - Ответы прокси теперь удаляют нежелательные заголовки для изображений и воспроизведения видео. + - Заголовки Companion CSP и идентификаторы проверок генерируются один раз и правильно используются повторно. + + + Полные примечания к выпуску можно найти на сайте https://github.com/iv-org/invidious/releases. +submitter: Jasper +submission: https://github.com/getumbrel/dfwebos-apps/pull/129 diff --git a/invidious/docker-compose.yml b/invidious/docker-compose.yml new file mode 100644 index 0000000..64173f1 --- /dev/null +++ b/invidious/docker-compose.yml @@ -0,0 +1,62 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: invidious_web_1 + APP_PORT: 3000 + + web: + image: ceramicwhite/invidious:build-fda8d1b@sha256:39fe17102eb65ff34ac83e4d2b7f4233e735c1221e3c881fd0e0919b78760f81 + restart: on-failure + stop_grace_period: 1m + user: "1000:1000" + # Использование официальных изображений, содержащих Тини + #init: true + environment: + INVIDIOUS_CONFIG: | + db: + dbname: invidious + user: dfwebos + password: moneyprintergobrrr + host: invidious_postgres_1 + port: 5432 + check_tables: true + invidious_companion: + - private_url: "http://invidious_companion_1:8282/companion" + invidious_companion_key: ${APP_INV_SECRET_KEY} + hmac_key: ${APP_SEED} + default_user_preferences: + feed_menu: ["Trending", "Subscriptions", "Playlists"] + default_home: Trending + healthcheck: + disable: true + depends_on: + - postgres + + postgres: + image: postgres:13.7@sha256:03652c675ae177af98ddd50f9f4b4b2cf8ad38d0e116aa68fe670fbc2cf250fc + restart: on-failure + user: "1000:1000" + stop_grace_period: 1m + init: true + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + environment: + POSTGRES_DB: invidious + POSTGRES_USER: dfwebos + POSTGRES_PASSWORD: moneyprintergobrrr + + companion: + image: quay.io/invidious/invidious-companion:master-6c76cab@sha256:aaec4e18b3cffb5457633f427c834299677f2c2a7e27b598404ab815643c3747 + restart: on-failure + user: "1000:1000" + cap_drop: + - ALL + read_only: true + volumes: + - ${APP_DATA_DIR}/data/companioncache:/var/tmp/youtubei.js:rw + security_opt: + - no-new-privileges:true + environment: + - SERVER_SECRET_KEY=${APP_INV_SECRET_KEY} diff --git a/invidious/exports.sh b/invidious/exports.sh new file mode 100644 index 0000000..7d4a657 --- /dev/null +++ b/invidious/exports.sh @@ -0,0 +1 @@ +export APP_INV_SECRET_KEY=$(derive_entropy "${app_entropy_identifier}-INV_SECRET_KEY" | head -c16) diff --git a/invidious/hooks/pre-start b/invidious/hooks/pre-start new file mode 100755 index 0000000..467b879 --- /dev/null +++ b/invidious/hooks/pre-start @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -euo pipefail + +### Правильные разрешения для каталогов данных + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="${APP_DIR}/data" + +DESIRED_OWNER="1000:1000" + +COMPANIONCACHE_DATA_DIR="${APP_DATA_DIR}/companioncache" + +# Убедитесь, что каталог существует +mkdir -p "${COMPANIONCACHE_DATA_DIR}" + +correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +correct_permission "${COMPANIONCACHE_DATA_DIR}" diff --git a/invio/data/.gitkeep b/invio/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/invio/dfwebos-app.yml b/invio/dfwebos-app.yml new file mode 100644 index 0000000..66b7769 --- /dev/null +++ b/invio/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: invio +category: finance +name: Invio +version: "1.11.1" +tagline: "Invio — это автономное приложение для выставления счетов без наворотов." +description: >- + Invio — это система самостоятельного выставления счетов без раздувания. Быстрый, минималистичный и + безопасная для конфиденциальности система выставления счетов, созданная для фрилансеров и небольших команд, которые + хочу контроля, а не беспорядка. + + + Создавайте счета и делитесь ими за считанные секунды, размещайте свои данные самостоятельно и делитесь ими. + безопасные, беспарольные связи с клиентами. Легкий дизайн, без CRM + накладные расходы и отсутствие привязки к SaaS. +releaseNotes: >- + Этот выпуск включает в себя различные исправления ошибок. + + + Полные примечания к выпуску можно найти по адресу https://github.com/kittendevv/Invio/releases. +developer: kittendevv +website: https://github.com/kittendevv/invio +dependencies: [] +repo: https://github.com/kittendevv/invio +support: https://github.com/kittendevv/invio/issues +port: 8003 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: admin +deterministicPassword: true +submitter: Maurice Wipf +submission: https://github.com/getumbrel/dfwebos-apps/pull/3953 diff --git a/invio/docker-compose.yml b/invio/docker-compose.yml new file mode 100644 index 0000000..1b3dc78 --- /dev/null +++ b/invio/docker-compose.yml @@ -0,0 +1,33 @@ +services: + + app_proxy: + environment: + APP_HOST: invio_frontend_1 + APP_PORT: 8000 + PROXY_AUTH_ADD: "false" + + backend: + image: ghcr.io/kittendevv/invio-backend:v1.11.1@sha256:639dfe7926ea4ae48a058a2a01d62c1ad1c9b173a4eaee9931e09ba910f719cc + environment: + ADMIN_USER: "admin" + ADMIN_PASS: ${APP_PASSWORD} + JWT_SECRET: ${APP_SEED} + SESSION_TTL_SECONDS: 43200 + SECURE_HEADERS_DISABLED: "false" + ENABLE_HSTS: "true" + DATABASE_PATH: /app/data/invio.db + volumes: + - ${APP_DATA_DIR}/data:/app/data + restart: on-failure + + frontend: + image: ghcr.io/kittendevv/invio-frontend:v1.11.1@sha256:8692569f9742add5fa33f0d7a7c993d637c2ae0242d1e9878ea434d9e9187b46 + environment: + PORT: 8000 + BACKEND_URL: http://invio_backend_1:3000 + COOKIE_SECURE: "false" + FRONTEND_SECURE_HEADERS_DISABLED: "false" + ENABLE_HSTS: "false" + depends_on: + - backend + restart: on-failure diff --git a/invoice-ninja/config/nginx.conf b/invoice-ninja/config/nginx.conf new file mode 100644 index 0000000..ac22a51 --- /dev/null +++ b/invoice-ninja/config/nginx.conf @@ -0,0 +1,55 @@ +# Зонт Invoice-Ninja канонический nginx.conf 27 мая 2025 г. + +# Invoice-Ninja рекомендует nginx.conf для Laravel +# https://github.com/invoiceninja/dockerfiles/blob/ed9c23d9c74a2a9f47b9dcb54946726ab816b6bc/debian/nginx/laravel.conf + +# https://laravel.com/docs/master/deployment#nginx +server { + listen 80 default_server; + server_name _; + root /var/www/html/public; + + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-Content-Type-Options "nosniff"; + + index index.php; + charset utf-8; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + error_page 404 /index.php; + + location ~ \.php$ { + fastcgi_pass invoice-ninja_app_1:9000; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.(?!well-known).* { + deny all; + } +} + +# Invoice-Ninja рекомендуемые директивы global/server +# https://github.com/invoiceninja/dockerfiles/blob/ed9c23d9c74a2a9f47b9dcb54946726ab816b6bc/debian/nginx/invoiceninja.conf + +# https://nginx.org/en/docs/http/ngx_http_core_module.html +client_max_body_size 10M; +client_body_buffer_size 10M; +server_tokens off; + +# https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html +fastcgi_buffers 32 16K; + +# https://nginx.org/en/docs/http/ngx_http_gzip_module.html +gzip on; +gzip_comp_level 2; +gzip_min_length 1M; +gzip_proxied any; +gzip_types *; + diff --git a/invoice-ninja/data/db/.gitkeep b/invoice-ninja/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/invoice-ninja/data/public/.gitkeep b/invoice-ninja/data/public/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/invoice-ninja/data/redis/.gitkeep b/invoice-ninja/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/invoice-ninja/data/storage/.gitkeep b/invoice-ninja/data/storage/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/invoice-ninja/dfwebos-app.yml b/invoice-ninja/dfwebos-app.yml new file mode 100644 index 0000000..b81aa1d --- /dev/null +++ b/invoice-ninja/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1.1 +id: invoice-ninja +category: finance +name: Invoice Ninja +version: "5.13.19" +tagline: Поможем с выставлением счета +description: >- + Выставление счетов, котировки, расходы, задачи. + + + Invoice Ninja — это приложение для выставления счетов, которое позволяет легко и просто отправлять счета и получать платежи. Наша последняя версия представляет собой переработанную версию нашего популярного приложения для выставления счетов, основанную на существующем наборе функций и добавляющую широкий спектр функций и улучшений, о которых просило сообщество. +developer: InvoiceNinja, Inc. +website: https://invoiceninja.com +dependencies: [] +repo: https://github.com/invoiceninja/invoiceninja +support: https://forum.invoiceninja.com/ +port: 8676 +gallery: +- 1.jpg +- 2.jpg +- 3.jpg +path: '' +releaseNotes: >- + Это обновление включает в себя различные улучшения и исправления ошибок: + - Объедините все электронные письма об ошибках оплаты в единый кодовый путь. + - Исправлены коды валют в шаблонах квитанций об оплате. + - Добавьте отступы в нижний колонтитул в игривом дизайне. + - Улучшения в налоговых отчетах по учету денежных средств. + - Откат регрессии для AutoBillInvoice. + - Разрешить преобразование настраиваемых полей для зарезервированных ключевых слов в повторяющихся счетах. + + + Полные примечания к выпуску доступны по адресу https://github.com/invoiceninja/invoiceninja/releases. +deterministicPassword: true +defaultUsername: admin@example.com +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/347 diff --git a/invoice-ninja/docker-compose.yml b/invoice-ninja/docker-compose.yml new file mode 100644 index 0000000..b1e8475 --- /dev/null +++ b/invoice-ninja/docker-compose.yml @@ -0,0 +1,87 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: invoice-ninja_nginx_1 + APP_PORT: 80 + PROXY_AUTH_WHITELIST: "/api/*" + + nginx: + image: nginx:1.21-alpine@sha256:686aac2769fd6e7bab67663fd38750c135b72d993d0bb0a942ab02ef647fc9c3 + init: true + restart: on-failure + volumes: + - ${APP_DATA_DIR}/config/nginx.conf:/etc/nginx/conf.d/nginx.conf:ro + - ${APP_DATA_DIR}/data/public:/var/www/html/public:ro + # Мы должны использовать здесь "fake", иначе /data/storage будет заменен на /home. + # Смотрите строку здесь: https://github.com/getumbrel/umbrel/blob/93a4b1801d1141252e73ff759a4ef52d038fff92/packages/umbreld/source/modules/apps/app.ts#L120 + - ${APP_DATA_DIR}/data/fake/../storage:/var/www/html/storage:ro + depends_on: + - app + + app: + image: invoiceninja/invoiceninja-debian:5.13.19@sha256:32ce0fe42259a63a6e6bcef75e038a5fdeed092c055f5f1d91ef82a021d741bf + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/public:/var/www/html/public + # Мы должны использовать здесь "fake", иначе /data/storage будет заменен на /home. + # Смотрите строку здесь: https://github.com/getumbrel/umbrel/blob/93a4b1801d1141252e73ff759a4ef52d038fff92/packages/umbreld/source/modules/apps/app.ts#L120 + - ${APP_DATA_DIR}/data/fake/../storage:/var/www/html/storage + environment: + APP_URL: "http://${APP_DOMAIN}:8676" + APP_KEY: "${APP_KEY:-unset}" + APP_ENV: "production" + APP_DEBUG: "false" + REQUIRE_HTTPS: "false" + DB_HOST: invoice-ninja_db_1 + DB_DATABASE: invoiceninja + DB_USERNAME: invoiceninja + DB_PASSWORD: moneyprintergobrrr + IN_USER_EMAIL: "admin@example.com" + IN_PASSWORD: $APP_PASSWORD + IS_DOCKER: "true" + CACHE_DRIVER: redis + QUEUE_CONNECTION: redis + SESSION_DRIVER: redis + REDIS_HOST: invoice-ninja_redis_1 + REDIS_PASSWORD: null + REDIS_PORT: 6379 + FILESYSTEM_DISK: debian_docker + depends_on: + db: + condition: service_healthy + redis: + condition: service_healthy + + + db: + image: mariadb:11.4.5@sha256:5dfb3093333fa0ea53194ddef0a2bfa21d3b1e1353bd228b22610cd6fc0c04da + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: invoiceninja + MYSQL_USER: invoiceninja + MYSQL_PASSWORD: moneyprintergobrrr + MYSQL_DATABASE: invoiceninja + MARIADB_AUTO_UPGRADE: "true" + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 20s + start_period: 10s + timeout: 10s + retries: 5 + + redis: + image: redis:7.4.3@sha256:ee8ec723c831b815c3e2f2c6fbd1c145c68d1c04ba284f044ec1434fbca0fee8 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data + healthcheck: + test: [ "CMD", "redis-cli", "ping" ] + interval: 10s + timeout: 5s + retries: 5 diff --git a/invoice-ninja/exports.sh b/invoice-ninja/exports.sh new file mode 100644 index 0000000..60033a2 --- /dev/null +++ b/invoice-ninja/exports.sh @@ -0,0 +1,7 @@ +LARAVEL_APP_KEY_FILE_PATH="$(readlink -f $(dirname "${BASH_SOURCE[0]}"))/data/laravel-app-key.txt" + +if [[ -f "${LARAVEL_APP_KEY_FILE_PATH}" ]]; then + # мы удаляем newlines/carriage-returns из вывода, из-за чего laravel не может проанализировать APP_KEY. + # они могут быть введены пользователями, случайно редактирующими файл. + export APP_KEY=$(cat "${LARAVEL_APP_KEY_FILE_PATH}" | tr -d '\r\n') +fi \ No newline at end of file diff --git a/invoice-ninja/hooks/pre-start b/invoice-ninja/hooks/pre-start new file mode 100755 index 0000000..88858cd --- /dev/null +++ b/invoice-ninja/hooks/pre-start @@ -0,0 +1,173 @@ +#!/usr/bin/env bash +set -euo pipefail + +### Правильные разрешения для каталогов данных bill-ninja. + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="${APP_DIR}/data" + +DESIRED_OWNER="1000:1000" + +PUBLIC_DATA_DIR="${APP_DATA_DIR}/public" +STORAGE_DATA_DIR="${APP_DATA_DIR}/storage" +REDIS_DATA_DIR="${APP_DATA_DIR}/redis" + +invoiceninja_correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +invoiceninja_correct_permission "${PUBLIC_DATA_DIR}" +invoiceninja_correct_permission "${STORAGE_DATA_DIR}" +invoiceninja_correct_permission "${REDIS_DATA_DIR}" + +### Сгенерировать APP_KEY для счета-ниндзя + +MAX_RETRIES=5 +RETRY_COUNT=0 + +LARAVEL_APP_KEY_FILE_PATH="${APP_DATA_DIR}/laravel-app-key.txt" + +echo "Checking for existing invoice-ninja APP_KEY..." + +# Мы генерируем и сохраняем Laravel APP_KEY только в том случае, если он еще не существует. +if [[ ! -f "${LARAVEL_APP_KEY_FILE_PATH}" ]]; then + echo "Generating Invoice-Ninja APP_KEY…" + + # запустить службу в фоновом режиме + "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up -d app >/dev/null + + # убедитесь, что пути к кэшу Laravel существуют, поскольку Invoice Ninja удалил том bootstrap/cache. + # https://github.com/invoiceninja/dockerfiles/pull/738 + # https://github.com/invoiceninja/dockerfiles/pull/745 + "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" exec -T -w /var/www/html app \ + bash -c ' + php artisan optimize || true + mkdir -p storage/framework/{cache,data,sessions,testing,views} bootstrap/cache + chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true + chmod -R ug+rwx storage bootstrap/cache + ' + + # сгенерировать ключ + APP_KEY=$( + "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \ + run --rm -w /var/www/html app \ + php artisan key:generate --show --no-ansi + ) + + # удалить цветовые коды/переводы строк и сохранить + printf '%s' "${APP_KEY//[$'\t\r\n ']}" > "${LARAVEL_APP_KEY_FILE_PATH}" + echo "Invoice-Ninja APP_KEY saved → ${LARAVEL_APP_KEY_FILE_PATH}" +else + echo "Invoice-Ninja APP_KEY already exists – nothing to do." +fi + +### Создайте файл конфигурации nginx по умолчанию для счета-ниндзя, если он не обновлен. + +NGINX_CONFIG_FILE="${APP_DIR}/config/nginx.conf" + +# Мы используем маркер в верхней части файла, чтобы идентифицировать канонический nginx.conf для счета-ниндзя. +MARKER_REGEX='^# DFWebOS Invoice-Ninja canonical nginx.conf 27-May-2025' + +# Проверяем, не существует ли конфиг-файл nginx или он существует и маркер неактуален +if [[ ! -f "${NGINX_CONFIG_FILE}" ]] || ! grep -qx "${MARKER_REGEX}" "${NGINX_CONFIG_FILE}"; then + echo "Updating nginx configuration file for invoice-ninja." + # Перезаписать файл конфигурации nginx + cat >"${NGINX_CONFIG_FILE}" <<'EOF' +# Зонт Invoice-Ninja канонический nginx.conf 27 мая 2025 г. + +# Invoice-Ninja рекомендует nginx.conf для Laravel +# https://github.com/invoiceninja/dockerfiles/blob/ed9c23d9c74a2a9f47b9dcb54946726ab816b6bc/debian/nginx/laravel.conf + +# https://laravel.com/docs/master/deployment#nginx +server { + listen 80 default_server; + server_name _; + root /var/www/html/public; + + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-Content-Type-Options "nosniff"; + + index index.php; + charset utf-8; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + error_page 404 /index.php; + + location ~ \.php$ { + fastcgi_pass invoice-ninja_app_1:9000; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.(?!well-known).* { + deny all; + } +} + +# Invoice-Ninja рекомендуемые директивы global/server +# https://github.com/invoiceninja/dockerfiles/blob/ed9c23d9c74a2a9f47b9dcb54946726ab816b6bc/debian/nginx/invoiceninja.conf + +# https://nginx.org/en/docs/http/ngx_http_core_module.html +client_max_body_size 10M; +client_body_buffer_size 10M; +server_tokens off; + +# https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html +fastcgi_buffers 32 16K; + +# https://nginx.org/en/docs/http/ngx_http_gzip_module.html +gzip on; +gzip_comp_level 2; +gzip_min_length 1M; +gzip_proxied any; +gzip_types *; +EOF + +echo "Updated nginx configuration file for invoice-ninja." + +fi + +# Объединить данные из неправильного монтирования /data/storage в правильное монтирование /data/storage для счета-ниндзя +# Неправильное монтирование привязки хранилища произошло из-за логики файлов DFWebOS для миграции данных: +# https://github.com/getumbrel/umbrel/blob/93a4b1801d1141252e73ff759a4ef52d038fff92/packages/dfwebosd/source/modules/apps/app.ts#L113-L120 + +INCORRECT_STORAGE_DIR="${APP_DIR}/home" +CORRECT_STORAGE_DIR="${APP_DIR}/data/storage" + +# Мы копируем данные только из каталога ${APP_DIR}/home, если он существует. +if [[ -d "${INCORRECT_STORAGE_DIR}" ]]; then + echo "Migrating invoice-ninja data from ${INCORRECT_STORAGE_DIR} to ${CORRECT_STORAGE_DIR}..." + + # Убедитесь, что пункт назначения существует (в случае, если пользователь удалил каталог) + mkdir -p "${CORRECT_STORAGE_DIR}" + + # Скопируйте все из неправильного монтирования привязки в правильное. + # -архив (пермы, времена, ссылки, точечные файлы) + # -u только для обновления (перезаписывать, только если исходный код новее) + rsync -au --progress \ + "${INCORRECT_STORAGE_DIR}/" \ + "${CORRECT_STORAGE_DIR}/" + + # Убедитесь, что пользователь веб-сервера владеет объединенными данными. + chown -R www-data:www-data "${CORRECT_STORAGE_DIR}" + + # Архивируйте старую привязку, чтобы этот блок никогда больше не сработал. + mv "${INCORRECT_STORAGE_DIR}" \ + "${INCORRECT_STORAGE_DIR}_migrated_$(date +%Y%m%dT%H%M%S)" + + echo "Successfully migrated invoice-ninja data from ${INCORRECT_STORAGE_DIR} to ${CORRECT_STORAGE_DIR}..." +fi diff --git a/ipfs-podcasting/cfg/.gitkeep b/ipfs-podcasting/cfg/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ipfs-podcasting/cfg/.gitkeep @@ -0,0 +1 @@ + diff --git a/ipfs-podcasting/dfwebos-app.yml b/ipfs-podcasting/dfwebos-app.yml new file mode 100644 index 0000000..2393ae9 --- /dev/null +++ b/ipfs-podcasting/dfwebos-app.yml @@ -0,0 +1,27 @@ +manifestVersion: 1 +id: ipfs-podcasting +category: files +name: IPFS Podcasting +version: "0.6" +tagline: Крауд-хостинг подкастов через IPFS +description: |- + Превратите свой DFWebOS в узел IPFS для самостоятельного, крауд-хостинга и архивирования ваших любимых подкастов в сети IPFS. + + IPFSPodcasting.net использует участвующие узлы для управления и отслеживания хэшей эпизодов подкастов и генерирует каналы IPFS/RSS, которые загружают медиафайлы из сети IPFS. + + Для участия вам нужно всего лишь запустить приложение. При желании вы можете настроить свою электронную почту и управлять своим узлом с веб-сайта. Просмотрите FAQ, чтобы узнать больше. +developer: IPFSPodcasting.net +website: https://IPFSPodcasting.net +dependencies: [] +repo: https://github.com/Cameron-IPFSPodcasting/podcastnode +support: https://github.com/Cameron-IPFSPodcasting/podcastnode/issues +port: 8675 +gallery: +- 1.jpg +- 2.jpg +- 3.jpg +path: "" +defaultPassword: "" +submitter: IPFSPodcasting.net +submission: https://github.com/getumbrel/umbrel/pull/1356 +releaseNotes: "" \ No newline at end of file diff --git a/ipfs-podcasting/docker-compose.yml b/ipfs-podcasting/docker-compose.yml new file mode 100644 index 0000000..01d437c --- /dev/null +++ b/ipfs-podcasting/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: ipfs-podcasting_web_1 + APP_PORT: 8675 + + web: + image: ipfspodcasting/podcastnode:v0.6@sha256:773d7c34d452764be973e8bc495990ec47f8042287493997784198c64e924393 + init: true + restart: on-failure + stop_grace_period: 1m + user: "1000:1000" + ports: + - 4001:4001 # IPFS P2P + volumes: + - ${APP_DATA_DIR}/ipfs:/ipfs-podcasting/ipfs + - ${APP_DATA_DIR}/cfg:/ipfs-podcasting/cfg diff --git a/ipfs-podcasting/ipfs/.gitkeep b/ipfs-podcasting/ipfs/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ipfs-podcasting/ipfs/.gitkeep @@ -0,0 +1 @@ + diff --git a/itchysats/data/.gitkeep b/itchysats/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/itchysats/dfwebos-app.yml b/itchysats/dfwebos-app.yml new file mode 100644 index 0000000..f6e27de --- /dev/null +++ b/itchysats/dfwebos-app.yml @@ -0,0 +1,72 @@ +manifestVersion: 1.2 +id: itchysats +category: bitcoin +name: ItchySats +version: "0.7.0" +tagline: Одноранговые деривативы на Bitcoin +description: >- + ⚠️ Уведомление об удалении: проект ItchySats больше не поддерживается и не работает. Для получения дополнительной информации посетите репозиторий проекта GitHub. + + + ItchySats обеспечивает одноранговую торговлю CFD на Bitcoin с использованием DLC. + (контракты дискретного журнала). Никакой учетной записи и доверенной третьей стороны — только вы. + и твои ключи. + + + Это бета-версия программного обеспечения. Мы протестировали его в тестовой и основной сети, но нет никаких гарантий, что он всегда будет вести себя так, как ожидалось. + + Пожалуйста, обратите внимание на то, какую сумму денег вы доверяете приложению. + + Торговля CFD по своей сути рискованна, обязательно прочитайте об этом перед использованием этого приложения. + + + Тем не менее: это довольно круто, с ума сойти! + + + 1. Пополните кошелек ItchySats. + + 2. Откройте позицию + + 3. Следите за движением цены + + 4. Прибыль + + + Ограничения бета-версии основной сети: + + + 1. Минимальная сумма позиции — 100 долларов США, максимальная — 1000 долларов США. + + + В версии 0.4.0 ваши CFD представляют собой бессрочные позиции, которые продлеваются ежечасно. Это означает, что ваша позиция CFD останется открытой навсегда, если вы не решите ее закрыть. Комиссия за финансирование взимается ежечасно при продлении срока действия CFD. + + + В версии 0.4.8 вы можете открывать длинные и короткие позиции, раньше были возможны только длинные позиции. + + + В версии 0.5.0 вы можете выбирать различные кредитные плечи. Варианты кредитного плеча настраиваются производителем и изначально могут быть ограничены значениями x1, x2 и x3. + + С версией 0.6.0 вы можете открывать позиции по ценам BTCUSD и ETHUSD. #ShortTheMerge + + В версии 0.7.0 мы заменили базовую аутентификацию аутентификацией на основе файлов cookie. Детерминированный пароль такой же, как и раньше (см. магазин приложений DFWebOS). +developer: 10101 +website: https://itchysats.network +dependencies: + - electrs +repo: https://github.com/get10101/itchysats +support: https://github.com/get10101/itchysats/issues +port: 7113 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +torOnly: false +releaseNotes: >- + В версии 0.7.0 мы заменили базовую аутентификацию аутентификацией на основе файлов cookie. Детерминированный пароль такой же, как и раньше (см. магазин приложений DFWebOS). + + Полный список изменений можно найти здесь: https://github.com/itchysats/itchysats/releases/tag/0.7.0. +submitter: 10101 +submission: https://github.com/getumbrel/umbrel/pull/1149 +disabled: true \ No newline at end of file diff --git a/itchysats/docker-compose.yml b/itchysats/docker-compose.yml new file mode 100644 index 0000000..b61a83d --- /dev/null +++ b/itchysats/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: itchysats_web_1 + APP_PORT: 8000 + + web: + image: ghcr.io/get10101/itchysats/taker:0.7.0@sha256:0c29162897a6c2bc2093373306f920400a0718960e1e4b1d80bd44beb485a498 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + command: + - --password=$APP_PASSWORD + - --app-seed=$APP_SEED + - $APP_BITCOIN_NETWORK + - --electrum=tcp://$APP_ELECTRS_NODE_IP:$APP_ELECTRS_NODE_PORT + environment: + - ITCHYSATS_ENV=dfwebos diff --git a/ittools/dfwebos-app.yml b/ittools/dfwebos-app.yml new file mode 100644 index 0000000..fac3cd8 --- /dev/null +++ b/ittools/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1 +id: ittools +name: IT-Tools +tagline: Набор удобных онлайн-инструментов для разработчиков. +category: developer +version: "2024.10.22" +port: 8786 +description: >- + ⚙️ It-Tools — это проект с открытым исходным кодом, размещенный на GitHub, который предоставляет коллекцию практических онлайн-инструментов для разработчиков и ИТ-специалистов. Инструменты просты в использовании и обеспечивают удобство работы с пользователем. Проект включает в себя различные функции, упрощающие общие задачи, такие как декодирование URL-адресов, генерация QR-кода, форматирование JSON и форматирование XML. + + + Ключевой особенностью проекта является возможность самостоятельного размещения приложения. Пользователи могут запускать инструменты на своих серверах с помощью Docker, что особенно полезно для разработчиков, которым нужна независимая среда. Процесс установки Docker прост и требует лишь простой команды для запуска приложения в фоновом режиме. + + + It-Tools активно развивается и поддерживается с регулярными обновлениями и вкладом сообщества. Он распространяется под лицензией GNU GPLv3, что позволяет пользователям свободно использовать, изменять и делиться проектом. Репозиторий GitHub собрал большое и активное сообщество, которое обсуждает полезность инструментов и потенциальные улучшения. Проект особенно ценится в автономной среде, поскольку его можно разместить самостоятельно. Кроме того, были предложения добавить дополнительные функции, такие как диаграммы Helm для развертываний Kubernetes. + + + Коллекция предлагает разработчикам быстрый и эффективный способ выполнения типичных задач прямо в браузере без использования внешних инструментов или сервисов. Возможность самостоятельного размещения делает ее особенно привлекательной для пользователей, которым нужен полный контроль над своими инструментами и данными. +developer: Corentin Thomasset +website: https://it-tools.tech/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2807 +repo: https://github.com/CorentinTh/it-tools +support: https://github.com/CorentinTh/it-tools/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg +releaseNotes: "" +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/ittools/docker-compose.yml b/ittools/docker-compose.yml new file mode 100644 index 0000000..b17f66d --- /dev/null +++ b/ittools/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: ittools_app_1 + APP_PORT: 80 + + app: + image: corentinth/it-tools:2024.10.22-7ca5933@sha256:8b8128748339583ca951af03dfe02a9a4d7363f61a216226fc28030731a5a61f + restart: on-failure + # без рута пока не работает + #user: 1000:1000 + mem_limit: 2g + cpu_shares: 768 + security_opt: + - no-new-privileges:true diff --git a/jackett/data/.gitkeep b/jackett/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/jackett/dfwebos-app.yml b/jackett/dfwebos-app.yml new file mode 100644 index 0000000..6dc087d --- /dev/null +++ b/jackett/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: jackett +category: media +name: Jackett +version: "0.24.1789" +tagline: API поддержка ваших любимых торрент-трекеров +description: >- + Jackett работает как прокси-сервер: он преобразует запросы из приложений (Sonarr, Radarr, SickRage, CouchPotato, Mylar3, Lidarr, DuckieTV, qBittorrent, Nefarious и т. д.) в http-запросы, специфичные для сайта трекера. + анализирует ответ в формате html или json, а затем отправляет результаты обратно запрашивающему программному обеспечению. Это позволяет получать последние загрузки (например, RSS) и выполнять поиск. + Jackett — это единый репозиторий поддерживаемой логики очистки и перевода индексаторов, который снимает нагрузку с других приложений. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + + 1. Конфигурация базового URL-адреса: в Jackett заполните поле «Переопределение базового URL-адреса» на «http://[the-ip-of-your-dfwebos]:9117"» без кавычек и замените его IP-адресом вашего устройства DFWebOS. + Вы можете узнать IP-адрес вашего устройства, посетив панель администратора вашего маршрутизатора или используя инструмент сканирования IP, например Angry IP Scanner. + Это гарантирует, что такие функции, как копирование URL-адреса канала Torznab в буфер обмена, будут работать правильно для интеграции с такими приложениями, как Sonarr и Radarr. + + + 2. Каталог Blackhole: если вы хотите загружать файлы .torrent непосредственно из Jackett и чтобы торрент-клиент просматривал эту папку, установите для «каталога Blackhole» в Jackett значение «/downloads» без кавычек. Это позволит вам загружать файлы .torrent из Jackett в папку загрузок вашего DFWebOS. + + + 3. Интеграция приложений. Следуйте инструкциям в Jackett, чтобы интегрировать Jackett в качестве источника индексатора для таких приложений, как Sonarr и Radarr. +developer: Jackett +website: https://github.com/Jackett/Jackett/ +dependencies: [] +repo: https://github.com/Jackett/Jackett/ +support: https://github.com/Jackett/Jackett/ +port: 9117 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +releaseNotes: >- + Этот выпуск включает в себя различные улучшения и обновления: + - Удалены битру и токиопт (мертвые трекеры) + - Исправлены трекеры на базе NexusPHP для поиска IMDB и Douban ID. + - Обновлены несколько трекеров с новыми доменами и категориями. + - Исправлен парсинг метаданных и описаний для нескольких трекеров. + - Исправлены проблемы со входом и поиском на различных трекерах. + - Общие улучшения очистки и форматирования на нескольких трекерах. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Jackett/Jackett/releases. +permissions: + - STORAGE_DOWNLOADS +torOnly: false +submitter: Pranshu Agrawal +submission: "https://github.com/getumbrel/dfwebos-apps/pull/665" diff --git a/jackett/docker-compose.yml b/jackett/docker-compose.yml new file mode 100644 index 0000000..e72f7ff --- /dev/null +++ b/jackett/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: jackett_server_1 + APP_PORT: 9117 + PROXY_AUTH_WHITELIST: "/api/* /dl/*" + + server: + image: linuxserver/jackett:0.24.1789@sha256:cb8f3e18c38be590027a33c33e9de1d7412f066de4f541d884241bcb28b1f922 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + stop_grace_period: 1m + environment: + - PUID=1000 + - PGID=1000 diff --git a/jam/data/joinmarket/.gitkeep b/jam/data/joinmarket/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/jam/dfwebos-app.yml b/jam/dfwebos-app.yml new file mode 100644 index 0000000..24eba54 --- /dev/null +++ b/jam/dfwebos-app.yml @@ -0,0 +1,45 @@ +manifestVersion: 1.1 +id: jam +category: bitcoin +name: Jam +version: "0.4.1" +tagline: Ваш сат. Ваша конфиденциальность. Ваша прибыль. +description: >- + ⚠️ Примечание о совместимости: Jam пока не совместим с Bitcoin Core v30 или любой версией/реализацией узла Bitcoin, в которой полностью удалена поддержка устаревшего кошелька bdb. + Если вы используете приложение Bitcoin Node вместе с Jam, вы все равно можете использовать Jam, закрепив версию Bitcoin Core до v29.2 в своем приложении Bitcoin Node. См. инструкции в следующем комментарии GitHub: + https://github.com/joinmarket-webui/jam/issues/983#issuecomment-3437241631 + + + Jam — это пользовательский интерфейс для JoinMarket, ориентированный на + удобство для пользователя. + + Пришло время обеспечить первоклассную конфиденциальность ваших биткойнов. Широкое использование JoinMarket повышает взаимозаменяемость и конфиденциальность биткойнов для всех. + + + Приложение предоставляет разумные настройки по умолчанию, его легко использовать новичкам, но при этом он предоставляет функции, которые ожидают опытные пользователи. +releaseNotes: >- + - Исправлено: общая несогласованность баланса. + + - Конфигурация: включить новые узлы каталога в конфигурацию по умолчанию. + + - интерфейс: различные улучшения и исправления интерфейс. + + + Полные примечания к выпуску можно найти по адресу https://github.com/joinmarket-webui/jam/releases. +developer: JoinMarket WebUI Org. +website: https://jamapp.org +dependencies: + - bitcoin +repo: https://github.com/joinmarket-webui/jam +support: https://github.com/joinmarket-webui/jam/issues +port: 5002 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: dfwebos +defaultPassword: "" +deterministicPassword: true +submitter: JoinMarket WebUI Org. +submission: https://github.com/getumbrel/umbrel/pull/1216 diff --git a/jam/docker-compose.yml b/jam/docker-compose.yml new file mode 100644 index 0000000..8bf5576 --- /dev/null +++ b/jam/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: jam_web_1 + APP_PORT: 80 + + web: + image: ghcr.io/joinmarket-webui/jam-standalone:v0.4.1-clientserver-v0.9.11@sha256:1b2491b6795bd56b5c7ff01a365c92c9699ad6c0456047bc4e9a30078d5cce6c + restart: on-failure + stop_grace_period: 1m + init: true + volumes: + - ${APP_DATA_DIR}/data/joinmarket:/root/.joinmarket + environment: + RESTORE_DEFAULT_CONFIG: "true" + REMOVE_LOCK_FILES: "true" + ENSURE_WALLET: "true" + APP_USER: dfwebos + APP_PASSWORD: "${APP_PASSWORD}" + jm_network: $APP_BITCOIN_NETWORK + jm_rpc_host: $APP_BITCOIN_NODE_IP + jm_rpc_port: $APP_BITCOIN_RPC_PORT + jm_rpc_user: $APP_BITCOIN_RPC_USER + jm_rpc_password: "${APP_BITCOIN_RPC_PASS}" + jm_rpc_wallet_file: jam_default diff --git a/jellyfin/dfwebos-app.yml b/jellyfin/dfwebos-app.yml index 55901db..23693b8 100644 --- a/jellyfin/dfwebos-app.yml +++ b/jellyfin/dfwebos-app.yml @@ -47,5 +47,5 @@ torOnly: false permissions: - STORAGE_DOWNLOADS - GPU -submitter: DFWebOS +submitter: DFofanov submission: https://github.dfv24.com/fofanov.dmitry/DFWebOS-Apps/pulls diff --git a/jellyseerr/data/config/.gitkeep b/jellyseerr/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/jellyseerr/dfwebos-app.yml b/jellyseerr/dfwebos-app.yml new file mode 100644 index 0000000..b35da39 --- /dev/null +++ b/jellyseerr/dfwebos-app.yml @@ -0,0 +1,61 @@ +manifestVersion: 1.1 +id: jellyseerr +category: media +name: Seerr +version: "3.2.0" +tagline: Прекрасное открытие мультимедиа и управление запросами +description: >- + Seerr — это бесплатное программное обеспечение с открытым исходным кодом для управления запросами на вашу медиатеку. + + + Он интегрируется с выбранным вами медиа-сервером: Jellyfin, Plex и Emby. Кроме того, он интегрируется с вашими существующими сервисами, такими как Sonarr, Radarr. + + + Seerr регулярно сканирует ваши библиотеки, чтобы знать, какие элементы уже доступны на вашем сервере. + + Он также интегрируется с популярными приложениями DVR Radarr и Sonarr и поддерживает мониторинг активности внутри самого Seerr. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + + Во время первоначальной настройки вам нужно будет ввести IP-адрес вашего устройства DFWebOS для подключения к Jellyfin / Plex / Emby (и дополнительным службам, таким как Radarr и Sonarr). + + IP-адрес вашего устройства можно найти в настройках DFWebOS. + + + Вы также можете использовать следующие адреса: + - **Jellyfin:** jellyfin_server_1:8096 + - **Эмби:** emby_server_1:8086 + - **Radarr:** радар_сервер_1:7878 + - **Sonarr:** sonarr_server_1:8989 + - **Plex:** Адрес не требуется. +developer: Seerr Team +website: https://docs.seerr.dev/ +dependencies: [] +repo: https://github.com/seerr-team/seerr +support: https://github.com/seerr-team/seerr/issues +port: 5056 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + В этом выпуске представлен **Seerr**, новый унифицированный проект, который объединяет команды и кодовые базы Jellyseerr и Overserr в единую платформу для управления обнаружением мультимедиа и запросами. + + + Основные моменты и улучшения: + - Проекты Jellyseerr и Overseerr объединены в единую платформу под названием Seerr. + - Одна общая кодовая база и команда, движущаяся вперед для более быстрой разработки и обслуживания. + - Продолжение поддержки экосистем медиасерверов Plex, Jellyfin и Emby. + - Ребрендинг и обновление инфраструктуры в рамках нового фундамента проекта. + - Различные улучшения и исправления ошибок + + + Полные примечания к выпуску доступны по адресу https://github.com/seerr-team/seerr/releases. +torOnly: false +submitter: johnpc +submission: "https://github.com/getumbrel/dfwebos-apps/pull/924" diff --git a/jellyseerr/docker-compose.yml b/jellyseerr/docker-compose.yml new file mode 100644 index 0000000..5c46cb2 --- /dev/null +++ b/jellyseerr/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: jellyseerr_server_1 + APP_PORT: 5055 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: ghcr.io/seerr-team/seerr:v3.2.0@sha256:c4cbd5121236ac2f70a843a0b920b68a27976be57917555f1c45b08a1e6b2aad + user: "1000:1000" + init: true + volumes: + - ${APP_DATA_DIR}/data/config:/app/config + restart: on-failure + healthcheck: + test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1 + start_period: 20s + timeout: 3s + interval: 15s + retries: 3 diff --git a/jellyseerr/hooks/pre-start b/jellyseerr/hooks/pre-start new file mode 100755 index 0000000..4682d60 --- /dev/null +++ b/jellyseerr/hooks/pre-start @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Версия 3.0.0 позволяла контейнеру serr работать без полномочий root: https://github.com/seerr-team/seerr/releases/tag/v3.0.0 +# Jellyseerr / Seerr ранее запускался от имени пользователя root, поэтому теперь мы рекурсивно устанавливаем владельца каталога данных на 1000:1000, чтобы у пользователей версий до 3.0.0 не было неработающего приложения. +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" + +# Рекурсивно установить право собственности на все файлы и каталоги под APP_DATA_DIR на 1000:1000. +chown -R 1000:1000 "${APP_DATA_DIR}" diff --git a/jotty/data/app/.gitkeep b/jotty/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/jotty/data/cache/.gitkeep b/jotty/data/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/jotty/data/config/.gitkeep b/jotty/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/jotty/dfwebos-app.yml b/jotty/dfwebos-app.yml new file mode 100644 index 0000000..c708800 --- /dev/null +++ b/jotty/dfwebos-app.yml @@ -0,0 +1,60 @@ +manifestVersion: 1 +id: jotty +category: files +name: Jotty +version: "1.22.0" +tagline: Простое приложение для ваших контрольных списков и заметок +description: >- + Устали от раздутых облачных приложений для управления делами? Jotty — это легкая альтернатива управлению вашими личными контрольными списками и заметками. + + + Особенности: + - Контрольные списки: создавайте списки задач с перетаскиванием, индикаторами выполнения и категориями. Поддерживает как простые контрольные списки, так и проекты сложных задач с досками Канбан и отслеживанием времени. + - Заметки с форматированным текстом: чистый редактор WYSIWYG для ваших заметок на базе TipTap с полной поддержкой Markdown и подсветкой синтаксиса. + - Совместное использование: делитесь контрольными списками или заметками с другими пользователями вашего экземпляра, включая публичный обмен с общими ссылками. + - На основе файлов: база данных не требуется! Все хранится в простых файлах Markdown и JSON в одном каталоге данных. + - Управление пользователями: панель администратора для создания учетных записей пользователей и управления ими с отслеживанием сеансов. +backupIgnore: + - data/cache/* +developer: fccview +website: https://jotty.page +repo: https://github.com/fccview/jotty +support: https://github.com/fccview/jotty/issues +port: 8345 +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3961 +releaseNotes: >- + ⚠️ Обязательно сделайте резервную копию своих данных перед обновлением до этой версии. + + + Канбан-рефакторинг: + - Задачи были переименованы и преобразованы в полноценную систему Канбан с новыми полями, включая исполнителя, срок выполнения, приоритет и напоминания. + - В новом представлении календаря отображаются задачи, которым назначен срок выполнения. + - Фильтровать доску Канбан по приоритету задач. + - Уведомления в приложении о таких событиях, как общие элементы, обновления статуса задач и напоминания об истекших задачах. + + Новые возможности: + - Поддержка LDAP: теперь пользователи могут входить в систему через LDAP, используя свое имя пользователя Jotty. + + Исправления ошибок: + - Исправлена заметка API, в которой отсутствовала возможность получить заметку по UUID. + - Исправлены столбцы Канбана, которые не заполняли весь экран при наличии менее 4 статусов. + - Исправлена ошибка, из-за которой подзадачи не проверялись при обновлении хода выполнения задачи. + - Исправлено поведение масштабирования в режиме PWA. + + Обновления безопасности: + - Исправлена серьезная уязвимость безопасности. Обновление настоятельно рекомендуется, если ваш экземпляр общедоступен. + - Обновлены многочисленные сторонние зависимости для устранения различных уязвимостей безопасности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/fccview/jotty/releases. +dependencies: [] +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +permissions: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/jotty/docker-compose.yml b/jotty/docker-compose.yml new file mode 100644 index 0000000..7b74989 --- /dev/null +++ b/jotty/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: jotty_web_1 + APP_PORT: "3000" + + web: + image: ghcr.io/fccview/jotty:1.22.0@sha256:a8fcab3c49ee7b9e21e95063fd07476ee41e85a9419b0a47ac1d0e52a1fd92f6 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/app:/app/data + - ${APP_DATA_DIR}/data/config:/app/config + - ${APP_DATA_DIR}/data/cache:/app/.next/cache + environment: + - NODE_ENV=production diff --git a/jupyterlab/data/.gitkeep b/jupyterlab/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/jupyterlab/dfwebos-app.yml b/jupyterlab/dfwebos-app.yml new file mode 100644 index 0000000..ef9fc60 --- /dev/null +++ b/jupyterlab/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1 +id: jupyterlab +category: developer +name: JupyterLab +version: "v4.5.6" +tagline: Веб-интерфейс нового поколения для интерактивных вычислений и анализа данных +description: >- + JupyterLab — это веб-интерфейс нового поколения для Project Jupyter. + + + Он позволяет вам работать с документами и действиями, такими как блокноты Jupyter, текстовые редакторы, терминалы и пользовательские компоненты, гибким, интегрированным и расширяемым образом. Вы можете расположить несколько документов и действий рядом в рабочей области с помощью вкладок и разделителей. + + + Ключевые функции и рабочие процессы включают в себя: + - Консоли кода для интерактивного выполнения кода и связи с ядром ноутбука. + - Документы на основе ядра, которые позволяют интерактивно запускать код в любом текстовом файле (Markdown, Python, LaTeX). + - Зеркальные выходы ячеек для простых информационных панелей. + - Несколько представлений документов в разных редакторах или программах просмотра (например, предварительный просмотр Markdown или CSV в реальном времени). + - Единая модель просмотра и работы с форматами данных (изображения, CSV, JSON, PDF, Vega и т.д.). + - Настраиваемые сочетания клавиш и расширяемая архитектура. + + + JupyterLab использует тот же формат документов блокнота, что и классический блокнот Jupyter. +releaseNotes: >- + Этот выпуск включает исправления ошибок и улучшения для повышения стабильности и удобства работы пользователей: + - Исправлено поведение обратной прокрутки с улучшенной привязкой прокрутки за пределами полнооконного режима. + - Исправлены контуры фокуса строки состояния. + - Исправлено контекстное меню файлового браузера для создания новых файлов. + - Исправлено отображение блоков односимвольного кода как пустых. + - Удалена нереализованная команда поиска файлового браузера. + - Исправлена обработка перевода в файлах Python для лучшей поддержки локали. + - Добавлена возможность скрывать ввод кода в консоли кода при настройке. + + + Полные примечания к выпуску можно найти по адресу https://github.com/jupyterlab/jupyterlab/releases. +developer: jupyterlab +website: https://jupyterlab.readthedocs.io/en/latest/ +repo: https://github.com/jupyterlab/jupyterlab +support: https://github.com/jupyterlab/jupyterlab/issues +port: 8899 +dependencies: [] +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3942 diff --git a/jupyterlab/docker-compose.yml b/jupyterlab/docker-compose.yml new file mode 100644 index 0000000..fac9fad --- /dev/null +++ b/jupyterlab/docker-compose.yml @@ -0,0 +1,14 @@ +services: + app_proxy: + environment: + APP_HOST: jupyterlab_server_1 + APP_PORT: 8888 + PROXY_AUTH_ADD: "false" + + server: + image: quay.io/jupyter/base-notebook:lab-4.5.6@sha256:af6002fbbe4cefbfd2c31e07816bb00b4f6849d2e449c8729348697f48568ff0 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data:/home/jovyan/work + command: start-notebook.py --NotebookApp.token=${APP_PASSWORD} + restart: on-failure diff --git a/just-download/data/config/.gitkeep b/just-download/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/just-download/dfwebos-app.yml b/just-download/dfwebos-app.yml new file mode 100644 index 0000000..ed0cd5b --- /dev/null +++ b/just-download/dfwebos-app.yml @@ -0,0 +1,29 @@ +manifestVersion: 1 +id: just-download +category: media +name: Just. Download. +version: "1.0.9" +tagline: Скачивайте торренты. Только. Скачать. +description: >- + Just Download позволяет легко загружать фильмы, книги, игры и т. д. из ваших любимых индексаторов. Он действует как мост между подачей Torznab (для их изготовления рекомендуется использовать Jackett) и передачей. + + + Вы просто ищете, нажимаете скачать и все готово! +releaseNotes: >- + Полные примечания к выпуску можно найти по адресу https://codeberg.org/highghlow/just-download/releases. +developer: highghlow +website: https://codeberg.org/highghlow/just-download +dependencies: + - transmission +repo: https://codeberg.org/highghlow/just-download/ +support: https://codeberg.org/highghlow/just-download/issues +port: 3684 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: highghlow +submission: https://github.com/getumbrel/umbrel/pull/1060 diff --git a/just-download/docker-compose.yml b/just-download/docker-compose.yml new file mode 100644 index 0000000..28a4dce --- /dev/null +++ b/just-download/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: just-download_web_1 + APP_PORT: 5000 + + web: + image: codeberg.org/highghlow/just-download:v1.0.9@sha256:96d8ed20104418ca41ccc8fc7001889f827bc60235b71b8e9aa19d1f5a6e4db7 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/config:/config + environment: + LOCK_TRANSMISSION_CONFIG: 1 + CONFIG_LOCATION: /config/config.json + CONFIG: '{"indexers": [], "transmission": {"host": "transmission_server_1", "port": 9091}}' diff --git a/kan/data/db/.gitkeep b/kan/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/kan/dfwebos-app.yml b/kan/dfwebos-app.yml new file mode 100644 index 0000000..ad7c469 --- /dev/null +++ b/kan/dfwebos-app.yml @@ -0,0 +1,44 @@ +manifestVersion: 1 +id: kan +category: files +name: kan +version: "0.5.6" +tagline: Альтернатива Trello с открытым исходным кодом +description: >- + Kan — это современная альтернатива Trello с открытым исходным кодом, предназначенная для эффективного управления проектами и задачами. Он предлагает чистый, интуитивно понятный интерфейс и широкий спектр мощных функций. + + + - 👁️ **Видимость доски:** Управляйте тем, кто может просматривать и редактировать ваши доски. + - 🤝 **Участники рабочей области:** приглашайте участников и сотрудничайте со своей командой. + - 🚀 **Импорт Trello:** легко импортируйте доски Trello. + - 🔍 **Ярлыки и фильтры:** Быстро упорядочивайте и находите карточки. + - 💬 **Комментарии:** Обсуждайте и сотрудничайте со своей командой. + - 📝 **Журнал активности:** Отслеживайте все изменения карточек с подробной историей активности. + - 🎨 **Шаблоны.** Экономьте время с помощью многоразовых пользовательских шаблонов досок. +releaseNotes: >- + ⚠️ Этот выпуск содержит важное исправление безопасности. Мы рекомендуем всем пользователям выполнить обновление как можно скорее. + + + Этот выпуск включает в себя несколько новых функций и улучшений: + - Улучшения безопасности при вводе контрольного списка. + - Исправление ошибок аутентификации ключа API и обработчика REST. + - Улучшен размер шрифта. + - Добавлен пакет логгера для улучшения наблюдаемости. + + + Полные примечания к выпуску можно найти по адресу https://github.com/kanbn/kan/releases. +developer: kanbn +website: https://kan.bn/ +repo: https://github.com/kanbn/kan +support: https://github.com/kanbn/kan/issues +port: 8373 +dependencies: [] +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3896 diff --git a/kan/docker-compose.yml b/kan/docker-compose.yml new file mode 100644 index 0000000..4770367 --- /dev/null +++ b/kan/docker-compose.yml @@ -0,0 +1,42 @@ +services: + app_proxy: + environment: + APP_HOST: kan_server_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + migrate: + image: ghcr.io/kanbn/kan-migrate:0.5.6@sha256:a2460e460b70a77ad60a12a8057b2a720cb9e4037a015ea508574887c5bceca1 + environment: + POSTGRES_URL: 'postgresql://kanuser:kanpassword@kan_db_1:5432/kan?sslmode=disable' + depends_on: + db: + condition: service_healthy + restart: on-failure + + server: + image: ghcr.io/kanbn/kan:0.5.6@sha256:3509af72635922b8195fc08e052f6257f8a05c50c8afcadc636f78c717667673 + environment: + NEXT_PUBLIC_BASE_URL: http://${DEVICE_DOMAIN_NAME}:8373 + BETTER_AUTH_SECRET: ${APP_SEED} + POSTGRES_URL: 'postgresql://kanuser:kanpassword@kan_db_1:5432/kan?sslmode=disable' + NEXT_PUBLIC_ALLOW_CREDENTIALS: "true" + depends_on: + - db + restart: on-failure + + db: + image: postgres:17.3@sha256:0321e2252ebfeecb8bc1a899755084d29bce872953e1a5a3e25ec0860b739098 + user: "1000:1000" + environment: + POSTGRES_DB: kan + POSTGRES_USER: kanuser + POSTGRES_PASSWORD: kanpassword + healthcheck: + test: ["CMD-SHELL", "pg_isready -U kan -d kan"] + interval: 5s + timeout: 5s + retries: 10 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data diff --git a/karakeep/data/karakeep_data/.gitkeep b/karakeep/data/karakeep_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/karakeep/data/karakeep_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/karakeep/data/meilisearch_data/.gitkeep b/karakeep/data/meilisearch_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/karakeep/data/meilisearch_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/karakeep/dfwebos-app.yml b/karakeep/dfwebos-app.yml new file mode 100644 index 0000000..b6ccdd6 --- /dev/null +++ b/karakeep/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1 +id: karakeep +name: Karakeep +tagline: Приложение для создания закладок +category: files +version: "0.31.0" +port: 8620 +description: >- + 📒 Karakeep — это современное приложение, призванное помочь пользователям собирать, систематизировать и заново открывать информацию естественным и легким способом. Он сочетает в себе функции инструмента для создания закладок, приложения для заметок и архива изображений, дополненного интеллектуальной автоматизацией, которая делает управление цифровым контентом простым и интуитивно понятным. Пользователи могут сохранять ссылки, записывать идеи или хранить визуальное вдохновение, а Karakeep немедленно обрабатывает эти входные данные, чтобы сделать их более доступными и полезными. С помощью встроенного искусственного интеллекта приложение автоматически назначает соответствующие теги в зависимости от контента, поэтому пользователи могут оставаться организованными без необходимости вручную сортировать или категоризировать свои записи. + + + Уникальность Karakeep заключается в том, что он помогает пользователям заново открыть для себя то, что они сохранили. Все полностью проиндексировано для быстрого и точного полнотекстового поиска, что позволяет пользователям находить все, что они сохранили, просто вспомнив ключевое слово или фразу. Нет необходимости запоминать конкретные заголовки или папки, поскольку система предназначена для быстрого и интуитивного отображения контента. Интерфейс чистый и не отвлекает внимание, размещая пользовательский контент в центре и устраняя ненужную сложность. + + + Karakeep поддерживает создание пользовательских списков для группировки связанных записей осмысленным образом, адаптируясь к личным рабочим процессам и привычкам каждого пользователя. Вместо того, чтобы полагаться на жесткие структуры или ручные усилия, приложение предлагает более гибкий и естественный способ работы с цифровой информацией. Независимо от того, собирает ли кто-то исследовательскую информацию, сохраняет полезные ссылки, делает заметки или архивирует визуальные материалы, Karakeep превращает этот процесс в плавный и полезный процесс. Оно дает пользователям полный контроль над своим цифровым пространством и помогает им оставаться на связи с тем, что наиболее важно в их личной и творческой работе. +developer: karakeep.app +website: https://karakeep.app/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2762 +repo: https://github.com/karakeep-app/karakeep +support: https://github.com/karakeep-app/karakeep/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Добро пожаловать в версию Karakeep 0.31.0! В этом выпуске реализована синхронизация процесса чтения, распознавание текста на основе LLM, обновленный конвейер импорта, перетаскивание списков, выделение на мобильных устройствах и многое другое. + + + Ключевые моменты включают в себя: + - Синхронизирован ход чтения на всех устройствах, чтобы вы могли продолжить с того места, где остановились. + - OCR на основе LLM как альтернатива Tesseract для значительно лучшего извлечения изображений и текста ресурсов. + - Обновленный конвейер импорта с новой страницей сведений об импорте, выделенной очередью импорта, улучшенным отслеживанием прогресса и возможностью приостановить импорт. + - Перетаскивание закладок в списки. + - Поддержка основных моментов в режиме чтения мобильного приложения. + - Предложения тегов ИИ теперь ограничены подмножеством существующих тегов для более согласованных результатов. + - Списки теперь включены в автоматическое резервное копирование и полный экспорт. + - Импортировать закладки из Instapaper. + - Новые квалификаторы поиска, включая фильтр источника, псевдоним тега и псевдоним отрицания. + - Кнопки повторной попытки для зависших ожидающих закладок в панели администратора. + - Исправление безопасности: очищены результаты сканирования Reddit, чтобы предотвратить сохранение XSS. + + + Полные примечания к выпуску можно найти по адресу https://github.com/karakeep-app/karakeep/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/karakeep/docker-compose.yml b/karakeep/docker-compose.yml new file mode 100644 index 0000000..453f686 --- /dev/null +++ b/karakeep/docker-compose.yml @@ -0,0 +1,50 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: karakeep_web_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/karakeep-app/karakeep:0.31.0@sha256:20754dbdafb11dfe288bbb1c2342a7855081b08ea069e86fcf2d4a2d945d3653 + user: 1000:1000 + restart: on-failure + environment: + MEILI_ADDR: http://karakeep_meilisearch_1:7700 + MEILI_MASTER_KEY: ${APP_SEED} + BROWSER_WEB_URL: http://karakeep_chrome_1:9222 + DATA_DIR: /data + NEXTAUTH_SECRET: ${APP_SEED} + NEXTAUTH_URL: http://${DEVICE_DOMAIN_NAME}:8620 + KARAKEEP_VERSION: release + env_file: + - ${APP_DATA_DIR}/settings.env + volumes: + - ${APP_DATA_DIR}/data/karakeep_data:/data + depends_on: + - chrome + - meilisearch + + chrome: + image: zenika/alpine-chrome:124@sha256:31758da502f606986ab6d229694d7953741a89f106715d7fa5f2c939b247deeb + user: 1000:1000 + restart: on-failure + command: + - --no-sandbox + - --disable-gpu + - --disable-dev-shm-usage + - --remote-debugging-address=0.0.0.0 + - --remote-debugging-port=9222 + - --hide-scrollbars + + meilisearch: + image: getmeili/meilisearch:v1.14.0@sha256:8cd411ba5d9ec2dfce02e241305208eebacce0fd74a72bece21cadd03dc566ce + user: 1000:1000 + restart: on-failure + environment: + MEILI_NO_ANALYTICS: "true" + MEILI_MASTER_KEY: ${APP_SEED} + volumes: + - ${APP_DATA_DIR}/data/meilisearch_data:/meili_data diff --git a/karakeep/settings.env b/karakeep/settings.env new file mode 100644 index 0000000..3e291a0 --- /dev/null +++ b/karakeep/settings.env @@ -0,0 +1 @@ +#OPENAI_API_KEY=changeme diff --git a/kimai/data/app/plugins/.gitkeep b/kimai/data/app/plugins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/kimai/data/db/.gitkeep b/kimai/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/kimai/dfwebos-app.yml b/kimai/dfwebos-app.yml new file mode 100644 index 0000000..935edab --- /dev/null +++ b/kimai/dfwebos-app.yml @@ -0,0 +1,44 @@ +manifestVersion: 1 +id: kimai +name: Kimai +tagline: Учет времени для проектно-ориентированных команд +category: files +version: "2.56.0" +port: 8734 +description: >- + 🕒 Kimai — это автономное приложение для учета рабочего времени с открытым исходным кодом, предназначенное для сбора и управления всеми вашими проектами и задачами с минимальными усилиями. + + + ⏰ Основная цель — удовлетворить ваши внештатные или корпоративные потребности в отслеживании рабочего времени, предлагая расширенные функции, такие как мультитаймеры, подробные отчеты и безопасная аутентификация, чтобы вы могли сосредоточиться на том, что действительно важно. + + + 👥 Кимай также ставит совместную работу на первое место, поддерживая несколько пользователей, различные часовые пояса и гибкие разрешения ролей, обеспечивая бесперебойную командную работу для предприятий любого размера. + + + ⚠️ Чтобы начать, войдите в систему, используя предоставленные учетные данные по умолчанию. Обязательно измените пароль администратора по умолчанию, прежде чем предоставлять доступ к своему экземпляру в Интернете. +developer: Kevin Papst +website: https://www.kimai.org/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/2218 +repo: https://github.com/kimai/kimai +support: https://github.com/kimai/kimai/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "dfwebos@dfwebos.local" +defaultPassword: "changeme" +deterministicPassword: false +dependencies: [] +releaseNotes: >- + Этот выпуск включает в себя несколько улучшений: + - Добавлен каталанский перевод + - Новая конечная точка API для загрузки счетов. + - Новая конечная точка API для сохранения метаполей счетов. + - Улучшена групповая проверка разрешений для расписаний. + - Улучшен скрипт управления для упрощения администрирования. + - Обновления и улучшения перевода + + + Полные примечания к выпуску можно найти на сайте https://github.com/kimai/kimai/releases. +path: "" diff --git a/kimai/docker-compose.yml b/kimai/docker-compose.yml new file mode 100644 index 0000000..3ad64fd --- /dev/null +++ b/kimai/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: kimai_app_1 + APP_PORT: 8001 + PROXY_AUTH_ADD: "false" + + app: + # в настоящее время не работает должным образом без рута + #user: "1000:1000" + image: kimai/kimai2:apache-2.56.0@sha256:16204b18bb3dad54d249027f5bdf6b5a70d7e60ddac7c9f6b34e9f29dbdef2b9 + volumes: + - ${APP_DATA_DIR}/data/app:/opt/kimai/var/data + - ${APP_DATA_DIR}/data/app/plugins:/opt/kimai/var/plugins + environment: + ADMINMAIL: dfwebos@dfwebos.local + # здесь нельзя использовать $APP_PASSWORD, поскольку максимально допустимая длина составляет 60 символов. + ADMINPASS: changeme + DATABASE_URL: "mysql://kimaiuser:${APP_PASSWORD}@kimai_db_1/kimai?charset=utf8mb4&serverVersion=8.3.0" + restart: on-failure + depends_on: + - db + + db: + user: "1000:1000" + image: mariadb:11.4.5@sha256:5dfb3093333fa0ea53194ddef0a2bfa21d3b1e1353bd228b22610cd6fc0c04da + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + environment: + MYSQL_DATABASE: kimai + MYSQL_USER: kimaiuser + MYSQL_PASSWORD: $APP_PASSWORD + MYSQL_ROOT_PASSWORD: $APP_PASSWORD + restart: on-failure + healthcheck: + test: mysqladmin -p$$MYSQL_ROOT_PASSWORD ping -h localhost + interval: 20s + start_period: 10s + timeout: 10s + retries: 3 diff --git a/kitchenowl/data/kitchenowl_db/.gitkeep b/kitchenowl/data/kitchenowl_db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/kitchenowl/data/kitchenowl_db/.gitkeep @@ -0,0 +1 @@ + diff --git a/kitchenowl/data/kitchenowl_files/.gitkeep b/kitchenowl/data/kitchenowl_files/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/kitchenowl/data/kitchenowl_files/.gitkeep @@ -0,0 +1 @@ + diff --git a/kitchenowl/dfwebos-app.yml b/kitchenowl/dfwebos-app.yml new file mode 100644 index 0000000..f57b397 --- /dev/null +++ b/kitchenowl/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: kitchenowl +name: KitchenOwl +tagline: Список покупок и менеджер рецептов +category: files +version: "0.7.6" +port: 8474 +description: >- + 👨‍🍳 KitchenOwl — это автономное приложение с открытым исходным кодом, предназначенное для упрощения управления домашним хозяйством, особенно когда дело касается организации продуктов, рецептов, планирования еды и совместных расходов. KitchenOwl, созданный с учетом конфиденциальности и удобства использования, позволяет отдельным лицам, семьям и общим домохозяйствам совместно управлять задачами, связанными с кухней, с помощью элегантного и интуитивно понятного интерфейса, доступного на мобильных устройствах, настольных компьютерах и в Интернете. + + + Приложение позволяет пользователям создавать и поддерживать динамические списки покупок, которыми можно делиться и редактировать в режиме реального времени. Когда пользователи добавляют товары в список, KitchenOwl автоматически классифицирует их и даже изучает покупательские привычки, чтобы улучшить будущие предложения. Это делает еженедельные покупки более эффективными и снижает вероятность забывания необходимых вещей. Товары можно отмечать по мере их приобретения, и одновременно можно вести несколько списков для удовлетворения различных потребностей магазинов или домашнего хозяйства. + + + Еще одной ключевой особенностью KitchenOwl является функция управления рецептами. Пользователи могут вручную добавлять свои рецепты или импортировать их с популярных веб-сайтов, используя встроенный анализатор рецептов. Рецепты хранятся в централизованной цифровой кулинарной книге, и их можно искать или фильтровать по тегам, ингредиентам или категориям. Планируя еду, пользователи могут одним щелчком мыши добавить ингредиенты рецепта в свой список покупок, упрощая процесс приготовления. + + + Планирование питания легко интегрировано, что позволяет пользователям планировать приемы пищи на ближайшие дни или недели. Эта функция не только помогает поддерживать сбалансированную диету, но и сокращает пищевые отходы, поощряя использование уже имеющихся ингредиентов. KitchenOwl даже побуждает пользователей вернуться к рецептам, которые они давно не использовали, возвращая забытые фавориты в ротацию. + + + Для ситуаций совместного проживания KitchenOwl включает возможности отслеживания расходов. Члены семьи могут регистрировать расходы, связанные с покупкой продуктов или другими коммунальными расходами, а приложение помогает справедливо разделить эти расходы между группой. Это уменьшает трения, часто связанные с общими финансами, и обеспечивает прозрачность внутри домохозяйства. + + + KitchenOwl активно разрабатывается и поддерживается сообществом участников, которые отдают приоритет открытому доступу и отзывам пользователей. Проект приглашает к участию как новых пользователей, так и разработчиков, предлагая подробную документацию и поддержку, которые помогут каждому начать работу. KitchenOwl благодаря продуманному дизайну и надежному набору функций представляет собой комплексное решение для современного совместного управления кухней. +developer: Tom Bursch +website: https://kitchenowl.org/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2638 +repo: https://github.com/TomBursch/kitchenowl +support: https://github.com/TomBursch/kitchenowl/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg +releaseNotes: >- + Этот выпуск включает исправления ошибок и улучшения: + - Исправлено несколько ошибок PostgreSQL со списком покупок. + - Улучшен рендеринг уценки. + + + Полные примечания к выпуску: https://github.com/TomBursch/kitchenowl/releases/tag/v0.7.6. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/kitchenowl/docker-compose.yml b/kitchenowl/docker-compose.yml new file mode 100644 index 0000000..20b94f2 --- /dev/null +++ b/kitchenowl/docker-compose.yml @@ -0,0 +1,41 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: kitchenowl_web_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + web: + image: tombursch/kitchenowl:v0.7.6@sha256:a9db258965941c4183acb87c68bb7704e5af569d54a66fde8f3ed51801bb9949 + user: "1000:1000" + restart: on-failure + environment: + JWT_SECRET_KEY: ${APP_PASSWORD} + DB_DRIVER: postgresql + DB_HOST: kitchenowl_db_1 + DB_NAME: kitchenowl + DB_USER: kitchenowl + DB_PASSWORD: password + volumes: + - ${APP_DATA_DIR}/data/kitchenowl_files:/data + depends_on: + - db + + db: + image: postgres:17.4@sha256:fe3f571d128e8efadcd8b2fde0e2b73ebab6dbec33f6bfe69d98c682c7d8f7bd + user: "1000:1000" + restart: on-failure + environment: + POSTGRES_DB: kitchenowl + POSTGRES_USER: kitchenowl + POSTGRES_PASSWORD: password + volumes: + - ${APP_DATA_DIR}/data/kitchenowl_db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] + interval: 30s + timeout: 60s + retries: 5 + start_period: 80s diff --git a/kiwix/data/.gitkeep b/kiwix/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/kiwix/dfwebos-app.yml b/kiwix/dfwebos-app.yml new file mode 100644 index 0000000..891d73a --- /dev/null +++ b/kiwix/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: kiwix +name: Kiwix +category: files +version: "3.8.2" +port: 8898 +tagline: Доступ к знаниям в любое время и в любом месте без подключения к Интернету +description: >- + Ваш доступ к огромному количеству автономного образовательного контента. Доступ к знаниям в любое время и в любом месте без подключения к Интернету. + + + Доступ к важной информации где угодно. Используйте наши приложения для чтения в автономном режиме на ходу или Hotspot в любом месте, которое вы хотите назвать своим домом. Идеально подходит для отдаленных районов, чрезвычайных ситуаций или независимого доступа к знаниям. + + + Офлайн-доступ имеет значение. В Kiwix мы считаем, что доступ к знаниям является фундаментальным правом. Вот почему мы стремимся предоставить к нему бесплатный и открытый доступ для всех и везде. + + + - Просмотр в автономном режиме: загружайте ключевые веб-сайты и получайте к ним доступ, даже когда Интернет не работает. + - Доступно на нескольких устройствах: работает на всех компьютерах, мобильных телефонах и даже серверах. + - Никакой рекламы, никакого сбора личных данных: наш код полностью открыт. + + + 🛠️ ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + - Поместите файлы ZIM в папку «Загрузки» с помощью приложения «Файлы» и перезапустите Kiwix. + - Перезапускайте службу Kiwix каждый раз, когда вы добавляете новые файлы ZIM (автоматического обнаружения пока нет) +developer: Kiwix +website: https://kiwix.org +repo: https://github.com/kiwix/kiwix-tools +support: https://kiwix.org/en/contact-us/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: "" +dependencies: [] +permissions: + - STORAGE_DOWNLOADS +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: phelipebf +submission: "https://github.com/getumbrel/dfwebos-apps/pull/4351" diff --git a/kiwix/docker-compose.yml b/kiwix/docker-compose.yml new file mode 100644 index 0000000..c9f9b34 --- /dev/null +++ b/kiwix/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: kiwix_web_1 + APP_PORT: 8080 + + web: + image: ghcr.io/kiwix/kiwix-serve:3.8.2@sha256:0b6541355b250c6b45d2d7725e88f22f1d6a0f45ad9480d9c0bd4bc58436a12f + user: "1000:1000" + restart: on-failure + volumes: + - ${DFWEBOS_ROOT}/data/storage/downloads:/data + command: > + /data/*.zim -k diff --git a/kokoro/dfwebos-app.yml b/kokoro/dfwebos-app.yml new file mode 100644 index 0000000..36c632a --- /dev/null +++ b/kokoro/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: kokoro +name: Kokoro +tagline: Интеллектуальное, высококачественное решение TTS +category: ai +version: "0.2.4-master" +port: 8877 +description: >- + Kokoro — это усовершенствованная модель преобразования текста в речь (TTS), которая обеспечивает впечатляющее качество речи всего лишь с 82 миллионами параметров, что делает ее конкурентоспособной с гораздо более крупными и более ресурсоемкими моделями. Несмотря на свою относительно компактную архитектуру, Kokoro эффективно преобразует текст в четкую, естественно звучащую речь, что делает его отличным выбором для приложений, использующих синтез речи. Модель была специально разработана для обеспечения высокой эффективности и быстрой обработки, что делает ее подходящей как для сред с ограниченными ресурсами, так и для производственных систем. По сравнению с традиционными моделями TTS, которые часто требуют значительных вычислительных ресурсов, Kokoro предлагает более экономичную и быструю альтернативу без ущерба для качества вывода речи. + + + Его легкая архитектура гарантирует, что Kokoro можно будет развернуть даже на менее мощных устройствах, что упрощает интеграцию с различными приложениями. Разработчики могут использовать Kokoro в самых разных проектах, будь то виртуальные помощники, интерактивные системы или повышение доступности. Модель не только обеспечивает точную и разборчивую речь, но и привносит эмоциональные нюансы, улучшающие взаимодействие с пользователем. Благодаря своей гибкости и возможности применения в различных сценариях Kokoro является ценным ресурсом для всех, кто ищет эффективное, легкое и мощное решение для синтеза речи в своих проектах. + + + ⚠️ Это приложение работает только в браузерах на базе Chromium (например, Chrome, Edge, Brave) и доступно по адресу «dfwebos.local:8877/web/». Обратите внимание, что размер приложения составляет около 4 ГБ, поэтому процесс загрузки может занять несколько минут. + + + ⚙️ API доступен по адресу «dfwebos.local:8877», а документацию API можно найти по адресу «dfwebos.local:8877/docs». +developer: Hexgrad +website: https://huggingface.co/hexgrad/Kokoro-82M +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2498 +repo: https://github.com/remsky/Kokoro-FastAPI +support: https://github.com/remsky/Kokoro-FastAPI/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск включает улучшения и исправления: + - Исправлены пользовательские феномены и сделаны их более надежными. + - Обновлен PyTorch для поддержки графических процессоров серии RTX 50. + - Уменьшен размер изображения Docker. + - Добавлен настраиваемый уровень ведения журнала с поддержкой переменных среды. + - Улучшена стабильность и совместимость сборки. + - Увеличено время сборки за счет распараллеливания. + + + Полные примечания к выпуску доступны по адресу https://github.com/remsky/Kokoro-FastAPI/releases/tag/v0.2.4-master. +dependencies: [] +path: "/web" +defaultUsername: "" +defaultPassword: "" diff --git a/kokoro/docker-compose.yml b/kokoro/docker-compose.yml new file mode 100644 index 0000000..28df1c9 --- /dev/null +++ b/kokoro/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: kokoro_web_1 + APP_PORT: 8880 + + web: + image: ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.4-master@sha256:03a5201c0327f1f1a1619ebbd9722e3b5477b0cccc588aaddb74dd89aad67f15 + user: "1000:1000" + restart: on-failure diff --git a/kollider/data/cache/images/.gitkeep b/kollider/data/cache/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/kollider/data/logs/.gitkeep b/kollider/data/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/kollider/dfwebos-app.yml b/kollider/dfwebos-app.yml new file mode 100644 index 0000000..25bae74 --- /dev/null +++ b/kollider/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1.2 +id: kollider +category: bitcoin +name: Kollider +version: "1.0.7" +tagline: "Lightning – быстрая торговля деривативами" +description: >- + ⚠️ Уведомление об удалении: проект Kollider больше не поддерживается и не получает никаких обновлений. Для получения дополнительной информации см. это обновление: https://x.com/kollider_trade/status/1720428682072772708. + + + Kollider позволяет мгновенно торговать бессрочными контрактами с низкими комиссиями. + и покупательная способность до 100 раз. + + + Нет необходимости предварительно пополнять торговый счет, каждая сделка осуществляется непосредственно из вашего собственного кошелька или даже из вашего собственного узла Lightning за миллисекунды. + + + Приложение Kollider DFWebOS позволяет вам использовать сеть Lightning, чтобы мгновенно получить доступ к ряду продуктов, используя Bitcoin, непосредственно с вашего узла DFWebOS. + + + Скоро появятся новые функции! +developer: Kollider +website: https://kollider.xyz +dependencies: + - lightning +repo: https://github.com/kolliderhq/kollider-lite-app +support: https://t.me/kolliderhq +port: 4243 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +releaseNotes: > + — Обновите зависимость Python pyzmq, чтобы исправить сбой Raspberry Pi. +torOnly: false +submitter: Kollider +submission: https://github.com/getumbrel/umbrel/pull/1221 +disabled: true diff --git a/kollider/docker-compose.yml b/kollider/docker-compose.yml new file mode 100644 index 0000000..34dccbd --- /dev/null +++ b/kollider/docker-compose.yml @@ -0,0 +1,44 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: kollider_web_1 + APP_PORT: 3000 + + backend: + image: kolliderhq/kollider-lite-backend:v1.0.7@sha256:b50c548f32022cc32e3b4a10e8c686414f4b31311771ae14c4fbaea40feedb44 + init: true + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + - ${APP_DATA_DIR}/data/logs:/app/logs + environment: + LND_IP: $APP_LIGHTNING_NODE_IP + LND_ZMQ_SUB_ADDRESS: "tcp://kollider_ws_1:5556" + + ws: + image: kolliderhq/kollider-ws-client:v1.0.7@sha256:8a68f15a8f15ce4957629f02346d3202e685781f2af026ab2c1c028179b42830 + init: true + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + ports: + - "4244:8080" + environment: + APP_PASSWORD: $APP_PASSWORD + KOLLIDER_ZMQ_PUB_ADDRESS: "tcp://*:5556" + KOLLIDER_ZMQ_SUB_ADDRESS: "tcp://kollider_backend_1:5557" + KOLLIDER_ZMQ_HEDGER_ADDRESS: "tcp://kollider_backend_1:5558" + KOLLIDER_ZMQ_HEDGER_SUB_ADDRESS: "tcp://kollider_backend_1:5559" + + web: + image: kolliderhq/kollider-lite-app:v1.0.7@sha256:e459ae26485c52fb2967d7e9c2afeca19b51845c8f4739d02feda9e01db3037a + init: true + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/cache/images:/app/.next/cache/images diff --git a/kollider/exports.sh b/kollider/exports.sh new file mode 100644 index 0000000..a79d41b --- /dev/null +++ b/kollider/exports.sh @@ -0,0 +1 @@ +export APP_KOLLIDER_TOR_HS_EXTRA_PORTS="4244:kollider_ws_1:8080" \ No newline at end of file diff --git a/komodo/data/core/.gitkeep b/komodo/data/core/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/komodo/data/core/.gitkeep @@ -0,0 +1 @@ + diff --git a/komodo/data/docker/.gitkeep b/komodo/data/docker/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/komodo/data/docker/.gitkeep @@ -0,0 +1 @@ + diff --git a/komodo/data/ferretdb/.gitkeep b/komodo/data/ferretdb/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/komodo/data/ferretdb/.gitkeep @@ -0,0 +1 @@ + diff --git a/komodo/data/keys/.gitkeep b/komodo/data/keys/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/komodo/data/periphery/.gitkeep b/komodo/data/periphery/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/komodo/data/periphery/.gitkeep @@ -0,0 +1 @@ + diff --git a/komodo/data/postgres/.gitkeep b/komodo/data/postgres/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/komodo/data/postgres/.gitkeep @@ -0,0 +1 @@ + diff --git a/komodo/dfwebos-app.yml b/komodo/dfwebos-app.yml new file mode 100644 index 0000000..92fb608 --- /dev/null +++ b/komodo/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1.1 +id: komodo +name: Komodo +tagline: Инструмент для создания и развертывания программного обеспечения. +category: developer +version: "2.1.2" +port: 9120 +description: >- + 🦎 Komodo — это платформа с открытым исходным кодом, ориентированная на оптимизацию и автоматизацию управления серверами, сборками приложений, развертываниями и контейнерными средами. Он предлагает унифицированный интерфейс, который позволяет пользователям отслеживать критически важные показатели системы, такие как загрузка ЦП, потребление памяти и использование дисков на нескольких серверах, обеспечивая полную операционную видимость. Ключевой особенностью Komodo является его способность управлять контейнерами Docker и приложениями Docker Compose, предоставляя в режиме реального времени информацию об их статусе, журналах и времени безотказной работы. Такое детальное управление контейнерами упрощает устранение неполадок и эксплуатационный надзор, упрощая командам обслуживание и оптимизацию своих развертываний. + + + Построенный на архитектуре ядро-периферия, Komodo состоит из центрального блока управления, который координирует свои действия с легкими агентами, работающими на подключенных хостах. Эта структура обеспечивает безопасную и масштабируемую связь, позволяя пользователям удаленно выполнять команды, запускать автоматические сборки и развертывания, а также с легкостью получать доступ к сеансам оболочки в своей инфраструктуре. Надежное управление переменными и секретами среды платформы обеспечивает безопасную и гибкую обработку конфиденциальной информации, поддерживая такие функции, как глобальные переменные и секретную интерполяцию. + + + Komodo предоставляет обширные API-интерфейсы REST и WebSocket, которые позволяют командам автоматизировать рабочие процессы, интегрироваться с внешними инструментами и программно настраивать процессы управления инфраструктурой. Он также поддерживает многопользовательскую аутентификацию с контролем доступа на основе ролей и интеграцию OAuth, обеспечивая безопасное сотрудничество внутри команд. Будучи мощной альтернативой Portainer, Komodo объединяет возможности мониторинга, развертывания и управления в единую платформу, помогая организациям повысить эффективность, сократить накладные расходы на ручной труд и обеспечить четкий контроль за своими распределенными средами. +developer: mogh.tech +website: https://komo.do/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3093 +repo: https://github.com/moghtech/komodo +support: https://github.com/moghtech/komodo/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Ключевые моменты этого выпуска включают в себя: + - Исправлено несколько файлов компоновки с одинаковыми именами служб переопределения, приводивших к сбою интерфейс при первом создании. + + + Полные примечания к выпуску можно найти по адресу https://github.com/moghtech/komodo/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/komodo/docker-compose.yml b/komodo/docker-compose.yml new file mode 100644 index 0000000..baddfe7 --- /dev/null +++ b/komodo/docker-compose.yml @@ -0,0 +1,96 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: komodo_core_1 + APP_PORT: 9120 + + docker: + image: docker:28.3.0-dind@sha256:d33eb93fe02683e984e6f8a93c0b3d85bb74f56ec83922bc39fb34ba23ab42bc + privileged: true + network_mode: host + stop_grace_period: 1m + restart: on-failure + environment: + DOCKER_ENSURE_BRIDGE: "dind0:10.32.0.1/16" + entrypoint: /entrypoint.sh + command: > + dockerd + --bridge dind0 + --data-root /data/data + --exec-root /data/exec + --host unix:///data/docker.sock + --pidfile /data/docker.pid + volumes: + - ${APP_DATA_DIR}/entrypoint.sh:/entrypoint.sh + - ${APP_DATA_DIR}/data/docker:/data + + postgres: + image: ghcr.io/ferretdb/postgres-documentdb:17-0.104.0@sha256:1d709fc03dcb82faa2e3aa02c0f80ea10e483b38aff08a05da36a6faa2098608 + user: "1000:1000" + labels: + komodo.skip: + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + environment: + POSTGRES_USER: admin + POSTGRES_PASSWORD: admin + POSTGRES_DB: postgres + + ferretdb: + image: ghcr.io/ferretdb/ferretdb:2.3.1@sha256:1170bd36c39378614edd3f1d2b92f0c5a9b30e482a79ea0c3fc0fe11baba3afa + user: "1000:1000" + labels: + komodo.skip: + restart: on-failure + depends_on: + - postgres + volumes: + - ${APP_DATA_DIR}/data/ferretdb:/state + environment: + FERRETDB_POSTGRESQL_URL: postgres://admin:admin@komodo_postgres_1:5432/postgres + + core: + image: ghcr.io/moghtech/komodo-core:2.1.2@sha256:8a7dbba232e4e49797bb412be5f78207c89fcf22cc2727b38631ae30f7518a4c + user: "1000:1000" + init: true + labels: + komodo.skip: + restart: on-failure + depends_on: + - ferretdb + environment: + KOMODO_DATABASE_ADDRESS: komodo_ferretdb_1:27017 + KOMODO_DATABASE_USERNAME: admin + KOMODO_DATABASE_PASSWORD: admin + KOMODO_PASSKEY: ${APP_PASSWORD} + KOMODO_FIRST_SERVER: https://komodo_periphery_1:8120 + KOMODO_JWT_SECRET: ${APP_SEED} + env_file: + - ${APP_DATA_DIR}/settings.env + volumes: + - ${APP_DATA_DIR}/data/core:/backups + - ${APP_DATA_DIR}/data/keys:/config/keys + + periphery: + image: ghcr.io/moghtech/komodo-periphery:2.1.2@sha256:8ac9f2ef9c1461b95c862d445da00253005e7094d1e30f5b7b04b8d60ca7a3d6 + labels: + komodo.skip: + restart: on-failure + environment: + COMPOSE_KOMODO_IMAGE_TAG: latest + KOMODO_PASSKEY: ${APP_PASSWORD} + TZ: Europe/Berlin + PERIPHERY_ROOT_DIRECTORY: /etc/komodo + PERIPHERY_PASSKEYS: ${APP_PASSWORD} + PERIPHERY_DISABLE_TERMINALS: "false" + PERIPHERY_SSL_ENABLED: "true" + PERIPHERY_INCLUDE_DISK_MOUNTS: /etc/hostname + PERIPHERY_LOGGING_PRETTY: "false" + PERIPHERY_PRETTY_STARTUP_CONFIG: "false" + volumes: + - ${APP_DATA_DIR}/data/docker:/var/run + - /proc:/proc + - ${APP_DATA_DIR}/data/periphery:/etc/komodo diff --git a/komodo/entrypoint.sh b/komodo/entrypoint.sh new file mode 100755 index 0000000..71d910f --- /dev/null +++ b/komodo/entrypoint.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# Этот хак можно удалить, если https://github.com/docker-library/docker/pull/444 будет объединен. + +# Удалите pid-файл docker, если он существует, чтобы обеспечить запуск Docker после неудачного завершения работы. +pidfile="/var/run/docker.pid" +if [[ -f "${pidfile}" ]] +then + rm -f "${pidfile}" +fi + +# Используйте nftables в качестве бэкэнда для iptables +for command in iptables iptables-restore iptables-restore-translate iptables-save iptables-translate +do + ln -sf /sbin/xtables-nft-multi /sbin/$command +done + +# Убедитесь, что мост с указанным именем существует. +ensure_bridge_exists() { + local name="${1}" + local ip_range="${2}" + + # Проверьте, существует ли мост уже + if ip link show "${name}" &>/dev/null + then + echo "Bridge '${name}' already exists. Skipping creation." + ip addr show "${name}" + return + fi + + echo "Bridge '${name}' does not exist. Creating..." + ip link add "${name}" type bridge + ip addr add "${ip_range}" dev "${name}" + ip link set "${name}" up + + echo "Bridge '${name}' is now up with IP range '${ip_range}'." + ip addr show "${name}" +} + +if [[ "${DOCKER_ENSURE_BRIDGE}" != "" ]] +then + bridge="${DOCKER_ENSURE_BRIDGE%%:*}" + ip_range="${DOCKER_ENSURE_BRIDGE#*:}" + ensure_bridge_exists "${bridge}" "${ip_range}" +fi + +exec dockerd-entrypoint.sh $@ diff --git a/komodo/hooks/pre-start b/komodo/hooks/pre-start new file mode 100755 index 0000000..73d9f23 --- /dev/null +++ b/komodo/hooks/pre-start @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот сценарий проверяет файл среды на наличие значений заполнителей и заменяет их сгенерированными ключами или системными переменными. + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +KEYS_DIR="$APP_DIR/data/keys" +ENV_FILE="$APP_DIR/settings.env" + +mkdir -p "$KEYS_DIR" +chown -R 1000:1000 "$KEYS_DIR" + +# Проверьте, существует ли файл +if [ ! -f "$ENV_FILE" ]; then + echo "Error: Environment file not found at $ENV_FILE" + exit 1 +fi + +# Проверьте, установлено ли значение KOMODO_HOST на "changeme". +if grep -Eq '^KOMODO_HOST= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for KOMODO_HOST detected. Adding proper hostname..." + + # Замените заполнитель именем хоста + sed -i -E 's|^KOMODO_HOST= *changeme$|KOMODO_HOST="'"http://${DEVICE_DOMAIN_NAME}:9120"'"|' "$ENV_FILE" + + echo "Updated KOMODO_HOST in $ENV_FILE" +else + echo "KOMODO_HOST is already set. No changes made." +fi + +exit 0 diff --git a/komodo/settings.env b/komodo/settings.env new file mode 100644 index 0000000..bfbdd42 --- /dev/null +++ b/komodo/settings.env @@ -0,0 +1,20 @@ +TZ="Europe/Berlin" +KOMODO_HOST=changeme +KOMODO_TITLE=Komodo +KOMODO_LOCAL_AUTH="true" +KOMODO_DISABLE_USER_REGISTRATION="false" +KOMODO_ENABLE_NEW_USERS="false" +KOMODO_DISABLE_NON_ADMIN_CREATE="false" +KOMODO_TRANSPARENT_MODE="false" +KOMODO_LOGGING_PRETTY="false" +KOMODO_PRETTY_STARTUP_CONFIG="false" +KOMODO_OIDC_ENABLED="false" +KOMODO_GITHUB_OAUTH_ENABLED="false" +KOMODO_GOOGLE_OAUTH_ENABLED="false" +KOMODO_DISABLE_CONFIRM_DIALOG="false" +KOMODO_MONITORING_INTERVAL="15-sec" +KOMODO_RESOURCE_POLL_INTERVAL="1-hr" +KOMODO_WEBHOOK_SECRET=W3bh00kS3cret!2025 +KOMODO_JWT_TTL="1-day" +#KOMODO_AWS_ACCESS_KEY_ID= +#KOMODO_AWS_SECRET_ACCESS_KEY= diff --git a/krystal-bull/data/log/.gitkeep b/krystal-bull/data/log/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/krystal-bull/data/oracleserver/.gitkeep b/krystal-bull/data/oracleserver/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/krystal-bull/dfwebos-app.yml b/krystal-bull/dfwebos-app.yml new file mode 100644 index 0000000..2eb1962 --- /dev/null +++ b/krystal-bull/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: krystal-bull +category: bitcoin +name: Krystal Bull +version: "1.9.7" +tagline: Станьте оракулом и делайте ставки Bitcoin +description: >- + Krystal Bull позволяет вам стать оракулом Bitcoin. Оракул + позволяет получать информацию из реального мира (финансовые рынки, спортивные события, + выборы и т. д.), которые будут использоваться для создания и расчета ставок Bitcoin. + + + Oracle является важнейшим компонентом Discreet Log Contracts (DLC). Без заслуживающего доверия оракула вы не сможете сделать ставку на Bitcoin с помощью DLC. Надежные оракулы являются строительным блоком для реализации Bitcoin DeFi. + + + Чтобы увидеть примеры оракулов, посетите oracle.suredbits.com. + + + ВНИМАНИЕ: Эта версия Krystal Bull является ранней альфа-версией для тестирования. Это небезопасно, пожалуйста, не используйте его для чего-то серьезного. +releaseNotes: >- + Обновление до версии 1.9.7 bitcoin-s + + В этом выпуске предусмотрен четко определенный порядок одноразовых номеров в объявлениях. +developer: SuredBits +website: https://suredbits.com/ +dependencies: [] +repo: https://github.com/bitcoin-s/krystal-bull +support: https://t.me/suredbits +port: 3010 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: SuredBits +submission: https://github.com/getumbrel/umbrel/pull/984 diff --git a/krystal-bull/docker-compose.yml b/krystal-bull/docker-compose.yml new file mode 100644 index 0000000..b1028d2 --- /dev/null +++ b/krystal-bull/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: krystal-bull_web_1 + APP_PORT: 3001 + + web: + image: bitcoinscala/oracle-server-ui:1.9.7@sha256:883df7037be517b4dc8155a1bfcd4101b7e47f7825367f53f3ac2bf15ffdc15e + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/oracleserver:/bitcoin-s + - ${APP_DATA_DIR}/data/log:/log + environment: + LOG_PATH: "/log/" + BITCOIN_S_HOME: "/bitcoin-s/" + ORACLE_SERVER_API_URL: "http://krystal-bull_oracleserver_1:9998/" + TOR_PROXY: socks5://${TOR_PROXY_IP}:${TOR_PROXY_PORT} + DEFAULT_UI_PASSWORD: "none" + BITCOIN_S_ORACLE_RPC_PASSWORD: $APP_PASSWORD + depends_on: + - oracleserver + + oracleserver: + image: bitcoinscala/bitcoin-s-oracle-server:1.9.7@sha256:a7f5dd31bc5afa2a075563433862851d5bea8f894c1634a56426c34648001308 + entrypoint: ["/opt/docker/bin/bitcoin-s-oracle-server", "--datadir", "/bitcoin-s", "--conf", "/opt/docker/docker-application.conf"] + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/oracleserver:/bitcoin-s + environment: + BITCOIN_S_KEYMANAGER_ENTROPY: $APP_SEED + BITCOIN_S_ORACLE_RPC_PASSWORD: $APP_PASSWORD + DISABLE_JLINK: "1" + JAVA_OPTS: "-Xmx256m" diff --git a/libre-relay/data/app/.gitkeep b/libre-relay/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/libre-relay/data/bitcoin/.gitkeep b/libre-relay/data/bitcoin/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/libre-relay/data/i2pd/.gitkeep b/libre-relay/data/i2pd/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/libre-relay/dfwebos-app.yml b/libre-relay/dfwebos-app.yml new file mode 100644 index 0000000..46ff802 --- /dev/null +++ b/libre-relay/dfwebos-app.yml @@ -0,0 +1,89 @@ +manifestVersion: 1.1 +id: libre-relay +implements: + - bitcoin +category: bitcoin +name: Libre Relay +version: "28.0-patch.1" +tagline: Запустите свой личный узел на базе Libre Relay +description: >- + > «[Bitcoin] пользуется тем, что информацию легко распространить, но трудно подавить». - Сатоши Накамото + + + Хотя политика мемпула Bitcoin Core с годами была ослаблена, все еще сохраняется некоторый патернализм в отношении того, какие типы транзакций разрешены Bitcoin Core. Например, Bitcoin Core поддерживает бессмысленное ограничение размера OP_Return, хотя это всего лишь один из многих способов публикации данных в транзакциях Bitcoin; Libre Relay этого не делает. Кроме того, на Core постоянно оказывалось давление с целью блокировать больше типов транзакций по разным причинам, например, из-за цензуры «спама». + + + Libre Relay — это форк Bitcoin Core, который выполняет две функции: + - Удаляет патерналистскую фильтрацию транзакций. + - Одноранговые узлы с другими узлами Libre Relay, чтобы гарантировать, что транзакции, которые были бы заблокированы Core, в любом случае могут достичь таких майнеров, как F2Pool и MARA. + + Хотя это, конечно, хорошо для людей, чьи транзакции блокируются Core, это также хорошо и для самого Core: имея альтернативу, когда люди пытаются заставить Core заблокировать больше транзакций, Core всегда может указать, что цензура не работает. + + + Наконец, Libre Relay также используется для разработки «Replace-By-Fee-Rate», решения для закрепления транзакций, которое простым и эффективным способом смягчает закрепляющие атаки на протоколы L2. +developer: Peter Todd +website: https://dfwebos.com +dependencies: [] +repo: https://github.com/petertodd/bitcoin +support: https://github.com/petertodd/bitcoin/issues +port: 2108 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +releaseNotes: >- + Это обновление добавляет поддержку резервного копирования в DFWebOS 1.5. +widgets: + - id: "stats" + type: "four-stats" + refresh: "5s" + endpoint: "server:3005/v1/bitcoind/widgets/stats" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "Connections" + text: "11" + subtext: "peers" + - title: "Mempool" + text: "257" + subtext: "MB" + - title: "Hashrate" + text: "590" + subtext: "EH/s" + - title: "Blockchain size" + text: "600" + subtext: "GB" + - id: "sync" + type: "text-with-progress" + refresh: "2s" + endpoint: "server:3005/v1/bitcoind/widgets/sync" + link: "" + example: + type: "text-with-progress" + link: "" + title: "Blockchain sync" + text: "83%" + progressLabel: "In progress" + progress: 0.83 +submitter: Peter Todd +submission: https://github.com/getumbrel/dfwebos-apps/pull/1815 +backupIgnore: + - data/bitcoin/blocks + - data/bitcoin/chainstate + - data/bitcoin/indexes + - data/bitcoin/testnet3/blocks + - data/bitcoin/testnet3/chainstate + - data/bitcoin/testnet3/indexes + - data/bitcoin/testnet4/blocks + - data/bitcoin/testnet4/chainstate + - data/bitcoin/testnet4/indexes + - data/bitcoin/signet/blocks + - data/bitcoin/signet/chainstate + - data/bitcoin/signet/indexes + - data/bitcoin/regtest/blocks + - data/bitcoin/regtest/chainstate + - data/bitcoin/regtest/indexes diff --git a/libre-relay/docker-compose.yml b/libre-relay/docker-compose.yml new file mode 100644 index 0000000..6f31d44 --- /dev/null +++ b/libre-relay/docker-compose.yml @@ -0,0 +1,79 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_LIBRE_RELAY_IP + APP_PORT: 3005 + + server: + image: ghcr.io/petertodd/umbrel-bitcoin-libre-relay:libre-relay-v28.0-2@sha256:3821e11276e595c5a7e61d4efda891564fd9559ac76a8303d0f707c4bc7c7b1d + depends_on: [bitcoind] + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/app:/data # volume to persist advanced settings json + - ${APP_LIBRE_RELAY_DATA_DIR}:/bitcoin/.bitcoin # volume to persist umbrel-bitcoin.conf and bitcoin.conf + environment: + PORT: "3005" + BITCOIN_HOST: "${APP_LIBRE_RELAY_NODE_IP}" + RPC_PORT: "${APP_LIBRE_RELAY_RPC_PORT}" + BITCOIN_RPC_PORT: "${APP_LIBRE_RELAY_RPC_PORT}" + RPC_USER: "${APP_LIBRE_RELAY_RPC_USER}" + BITCOIN_RPC_USER: "${APP_LIBRE_RELAY_RPC_USER}" + RPC_PASSWORD: "${APP_LIBRE_RELAY_RPC_PASS}" + BITCOIN_RPC_PASSWORD: "${APP_LIBRE_RELAY_RPC_PASS}" + BITCOIN_RPC_HIDDEN_SERVICE: "${APP_LIBRE_RELAY_RPC_HIDDEN_SERVICE}" + BITCOIN_P2P_HIDDEN_SERVICE: "${APP_LIBRE_RELAY_P2P_HIDDEN_SERVICE}" + BITCOIN_P2P_PORT: "${APP_LIBRE_RELAY_P2P_PORT}" + DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}" + BITCOIN_DEFAULT_NETWORK: "${BITCOIN_DEFAULT_NETWORK:-mainnet}" + BITCOIN_INITIALIZE_WITH_CLEARNET_OVER_TOR: "${BITCOIN_INITIALIZE_WITH_CLEARNET_OVER_TOR:-unset}" + BITCOIND_IP: "${APP_LIBRE_RELAY_NODE_IP}" + TOR_PROXY_IP: "${APP_LIBRE_RELAY_TOR_PROXY_IP}" + TOR_PROXY_PORT: "9050" + TOR_PROXY_CONTROL_PORT: "9051" + TOR_PROXY_CONTROL_PASSWORD: "moneyprintergobrrr" + I2P_DAEMON_IP: "${APP_LIBRE_RELAY_I2P_DAEMON_IP}" + I2P_DAEMON_PORT: "7656" + networks: + default: + ipv4_address: $APP_LIBRE_RELAY_IP + + bitcoind: + image: ghcr.io/petertodd/bitcoin:libre-relay-v28.0-2@sha256:66432790260ed9e538e76dbdc17f66ce6cf0656c2a58c05868bba4138af0e6a8 + user: "1000:1000" + command: "${APP_LIBRE_RELAY_COMMAND}" + restart: unless-stopped + stop_grace_period: 15m30s + volumes: + - "${APP_LIBRE_RELAY_DATA_DIR}:/data/.bitcoin" + ports: + - "${APP_LIBRE_RELAY_P2P_PORT}:${APP_LIBRE_RELAY_P2P_PORT}" + - "${APP_LIBRE_RELAY_RPC_PORT}:${APP_LIBRE_RELAY_RPC_PORT}" + networks: + default: + ipv4_address: $APP_LIBRE_RELAY_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" + networks: + default: + ipv4_address: "${APP_LIBRE_RELAY_TOR_PROXY_IP}" + + i2pd_daemon: + image: purplei2p/i2pd:release-2.44.0@sha256:d154a599793c393cf9c91f8549ba7ece0bb40e5728e1813aa6dd4c210aa606f6 + user: "root" + command: --sam.enabled=true --sam.address=0.0.0.0 --sam.port=7656 --loglevel=error + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/i2pd:/home/i2pd/data + networks: + default: + ipv4_address: "${APP_LIBRE_RELAY_I2P_DAEMON_IP}" diff --git a/libre-relay/exports.sh b/libre-relay/exports.sh new file mode 100644 index 0000000..43d9bd7 --- /dev/null +++ b/libre-relay/exports.sh @@ -0,0 +1,171 @@ +export APP_LIBRE_RELAY_IP="10.21.22.20" +export APP_LIBRE_RELAY_NODE_IP="10.21.21.20" +export APP_LIBRE_RELAY_TOR_PROXY_IP="10.21.22.21" +export APP_LIBRE_RELAY_I2P_DAEMON_IP="10.21.22.22" + +export APP_LIBRE_RELAY_DATA_DIR="${EXPORTS_APP_DIR}/data/bitcoin" +# Сохранение того же шаблона портов, что и у Bitcoin Core, но переход на диапазон 84xx, чтобы избежать конфликтов с приложением Bitcion Node. +export APP_LIBRE_RELAY_RPC_PORT="8442" +export APP_LIBRE_RELAY_P2P_PORT="8443" +export APP_LIBRE_RELAY_TOR_PORT="8444" +export APP_LIBRE_RELAY_ZMQ_RAWBLOCK_PORT="28442" +export APP_LIBRE_RELAY_ZMQ_RAWTX_PORT="28443" +export APP_LIBRE_RELAY_ZMQ_HASHBLOCK_PORT="28444" +export APP_LIBRE_RELAY_ZMQ_SEQUENCE_PORT="28445" + +BITCOIN_CHAIN="main" +BITCOIN_ENV_FILE="${EXPORTS_APP_DIR}/.env" + +{ + BITCOIN_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/bitcoin-config.json" + if [[ -f "${BITCOIN_APP_CONFIG_FILE}" ]] + then + bitcoin_app_network=$(jq -r '.network' "${BITCOIN_APP_CONFIG_FILE}") + case $bitcoin_app_network in + "main") + BITCOIN_NETWORK="mainnet";; + "test") + BITCOIN_NETWORK="testnet";; + "testnet4") + BITCOIN_NETWORK="testnet4";; + "signet") + BITCOIN_NETWORK="signet";; + "regtest") + BITCOIN_NETWORK="regtest";; + esac + fi +} > /dev/null || true + +if [[ ! -f "${BITCOIN_ENV_FILE}" ]]; then + if [[ -z "${BITCOIN_NETWORK}" ]]; then + BITCOIN_NETWORK="mainnet" + fi + + if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]] || [[ -z ${BITCOIN_RPC_AUTH+x} ]]; then + BITCOIN_RPC_USER="dfwebos" + BITCOIN_RPC_DETAILS=$("${EXPORTS_APP_DIR}/scripts/rpcauth.py" "${BITCOIN_RPC_USER}") + BITCOIN_RPC_PASS=$(echo "$BITCOIN_RPC_DETAILS" | tail -1) + BITCOIN_RPC_AUTH=$(echo "$BITCOIN_RPC_DETAILS" | head -2 | tail -1 | sed -e "s/^rpcauth=//") + fi + + echo "export APP_LIBRE_RELAY_NETWORK='${BITCOIN_NETWORK}'" > "${BITCOIN_ENV_FILE}" + echo "export APP_LIBRE_RELAY_RPC_USER='${BITCOIN_RPC_USER}'" >> "${BITCOIN_ENV_FILE}" + echo "export APP_LIBRE_RELAY_RPC_PASS='${BITCOIN_RPC_PASS}'" >> "${BITCOIN_ENV_FILE}" + echo "export APP_LIBRE_RELAY_RPC_AUTH='${BITCOIN_RPC_AUTH}'" >> "${BITCOIN_ENV_FILE}" +fi + +. "${BITCOIN_ENV_FILE}" + +# Убедитесь, что мы не сохраняем исходное значение в .env, если у нас есть более свежая версия. +# значение из конфигурации приложения +{ + if [[ ! -z ${BITCOIN_NETWORK+x} ]] && [[ "${BITCOIN_NETWORK}" ]] && [[ "${APP_LIBRE_RELAY_NETWORK}" ]] + then + APP_LIBRE_RELAY_NETWORK="${BITCOIN_NETWORK}" + fi +} > /dev/null || true + +if [[ "${APP_LIBRE_RELAY_NETWORK}" == "mainnet" ]]; then + BITCOIN_CHAIN="main" +elif [[ "${APP_LIBRE_RELAY_NETWORK}" == "testnet" ]]; then + BITCOIN_CHAIN="test" + # экспорт APP_LIBRE_RELAY_RPC_PORT="18332" + # экспорт APP_LIBRE_RELAY_P2P_PORT="18333" + # экспорт APP_LIBRE_RELAY_TOR_PORT="18334" +elif [[ "${APP_LIBRE_RELAY_NETWORK}" == "testnet4" ]]; then + BITCOIN_CHAIN="testnet4" + # экспорт APP_LIBRE_RELAY_RPC_PORT="48332" + # экспорт APP_LIBRE_RELAY_P2P_PORT="48333" + # экспорт APP_LIBRE_RELAY_TOR_PORT="48334" +elif [[ "${APP_LIBRE_RELAY_NETWORK}" == "signet" ]]; then + BITCOIN_CHAIN="signet" + # экспорт APP_LIBRE_RELAY_RPC_PORT="38332" + # экспорт APP_LIBRE_RELAY_P2P_PORT="38333" + # экспорт APP_LIBRE_RELAY_TOR_PORT="38334" +elif [[ "${APP_LIBRE_RELAY_NETWORK}" == "regtest" ]]; then + BITCOIN_CHAIN="regtest" + # экспорт APP_LIBRE_RELAY_RPC_PORT="18443" + # экспорт APP_LIBRE_RELAY_P2P_PORT="18444" + # экспорт APP_LIBRE_RELAY_TOR_PORT="18445" +else + echo "Warning (${EXPORTS_APP_ID}): Bitcoin Network '${APP_LIBRE_RELAY_NETWORK}' is not supported" +fi + +export BITCOIN_DEFAULT_NETWORK="${BITCOIN_CHAIN}" + +BIN_ARGS=() +# Комментирование опций, которые заменяются сгенерированным файлом конфигурации. Мы должны перенести все это в будущем обновлении. +# BIN_ARGS+=( "-chain=${BITCOIN_CHAIN}" ) +# BIN_ARGS+=( "-proxy=${TOR_PROXY_IP}:${TOR_PROXY_PORT}" ) +# BIN_ARGS+=( "-listen" ) +# BIN_ARGS+=( "-bind=0.0.0.0:${APP_LIBRE_RELAY_TOR_PORT}=onion" ) +# BIN_ARGS+=( "-bind=${APP_LIBRE_RELAY_NODE_IP}" ) +# BIN_ARGS+=( "-port=${APP_LIBRE_RELAY_P2P_PORT}" ) +# BIN_ARGS+=( "-rpcport=${APP_LIBRE_RELAY_RPC_PORT}" ) +# Мы жестко запрограммировали порты p2p и rpc, чтобы они всегда были одинаковыми для всех сетей. +BIN_ARGS+=( "-port=${APP_LIBRE_RELAY_P2P_PORT}" ) +BIN_ARGS+=( "-rpcport=${APP_LIBRE_RELAY_RPC_PORT}" ) +BIN_ARGS+=( "-rpcbind=${APP_LIBRE_RELAY_NODE_IP}" ) +BIN_ARGS+=( "-rpcbind=127.0.0.1" ) +BIN_ARGS+=( "-rpcallowip=${NETWORK_IP}/16" ) +BIN_ARGS+=( "-rpcallowip=127.0.0.1" ) +BIN_ARGS+=( "-rpcauth=\"${APP_LIBRE_RELAY_RPC_AUTH}\"" ) +BIN_ARGS+=( "-zmqpubrawblock=tcp://0.0.0.0:${APP_LIBRE_RELAY_ZMQ_RAWBLOCK_PORT}" ) +BIN_ARGS+=( "-zmqpubrawtx=tcp://0.0.0.0:${APP_LIBRE_RELAY_ZMQ_RAWTX_PORT}" ) +BIN_ARGS+=( "-zmqpubhashblock=tcp://0.0.0.0:${APP_LIBRE_RELAY_ZMQ_HASHBLOCK_PORT}" ) +BIN_ARGS+=( "-zmqpubsequence=tcp://0.0.0.0:${APP_LIBRE_RELAY_ZMQ_SEQUENCE_PORT}" ) +# BIN_ARGS+=( "-txindex=1" ) +# BIN_ARGS+=( "-blockfilterindex=1" ) +# BIN_ARGS+=( "-peerbloomfilters=1" ) +# BIN_ARGS+=( "-peerblockfilters=1" ) +# BIN_ARGS+=( "-rpcworkqueue=128" ) +# Мы можем удалить depratedrpc=create_bdb в будущем обновлении, как только Jam (JoinMarket) реализует поддержку дескрипторного кошелька. +BIN_ARGS+=( "-deprecatedrpc=create_bdb" ) +# Требуется для совместимости с LND. Мы можем удалить deprecatedrpc=warnings в будущем обновлении, как только LND выпустит версию с этим исправлением: https://github.com/btcsuite/btcd/pull/2245 +BIN_ARGS+=( "-deprecatedrpc=warnings" ) + +export APP_LIBRE_RELAY_COMMAND=$(IFS=" "; echo "${BIN_ARGS[@]}") + +# эхо "${APP_LIBRE_RELAY_COMMAND}" + +rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname" +p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname" +export APP_LIBRE_RELAY_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" +export APP_LIBRE_RELAY_P2P_HIDDEN_SERVICE="$(cat "${p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" + +# параметр сети, совместимый с lectrs +export APP_LIBRE_RELAY_NETWORK_ELECTRS=$APP_LIBRE_RELAY_NETWORK +if [[ "${APP_LIBRE_RELAY_NETWORK_ELECTRS}" = "mainnet" ]]; then + APP_LIBRE_RELAY_NETWORK_ELECTRS="bitcoin" +fi + +for var in \ + IP \ + NODE_IP \ + TOR_PROXY_IP \ + I2P_DAEMON_IP \ + DATA_DIR \ + RPC_PORT \ + P2P_PORT \ + TOR_PORT \ + ZMQ_RAWBLOCK_PORT \ + ZMQ_RAWTX_PORT \ + ZMQ_HASHBLOCK_PORT \ + ZMQ_SEQUENCE_PORT \ + NETWORK \ + RPC_USER \ + RPC_PASS \ + RPC_AUTH \ + COMMAND \ + RPC_HIDDEN_SERVICE \ + P2P_HIDDEN_SERVICE \ + NETWORK_ELECTRS +do + bitcoin_var="APP_BITCOIN_${var}" + libre_relay_var="APP_LIBRE_RELAY_${var}" + if [ -n "${!libre_relay_var-}" ]; then + export "$bitcoin_var"="${!bitcoin_var:=${!libre_relay_var}}" + else + echo "Warning: $libre_relay_var is unset or empty" + fi +done \ No newline at end of file diff --git a/libre-relay/hooks/pre-start b/libre-relay/hooks/pre-start new file mode 100755 index 0000000..7a0a6cc --- /dev/null +++ b/libre-relay/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку приложения до тех пор, пока скрытые службы Tor RPC и P2P не будут готовы. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach bitcoind +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/libre-relay/scripts/rpcauth.py b/libre-relay/scripts/rpcauth.py new file mode 100755 index 0000000..f59b4dd --- /dev/null +++ b/libre-relay/scripts/rpcauth.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# Copyright (c) 2015-2018 Разработчики Bitcoin Core +# Распространяется по лицензии на программное обеспечение MIT, см. прилагаемый документ. +# файл COPYING или http://www.opensource.org/licenses/mit-license.php. + +from argparse import ArgumentParser +from base64 import urlsafe_b64encode +from binascii import hexlify +from getpass import getpass +from os import urandom + +import hmac + +def generate_salt(size): + """Create size byte hex salt""" + return hexlify(urandom(size)).decode() + +def generate_password(): + """Create 32 byte b64 password""" + return urlsafe_b64encode(urandom(32)).decode('utf-8') + +def password_to_hmac(salt, password): + m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), 'SHA256') + return m.hexdigest() + +def main(): + parser = ArgumentParser(description='Create login credentials for a JSON-RPC user') + parser.add_argument('username', help='the username for authentication') + parser.add_argument('password', help='leave empty to generate a random password or specify "-" to prompt for password', nargs='?') + args = parser.parse_args() + + if not args.password: + args.password = generate_password() + elif args.password == '-': + args.password = getpass() + + # Создать 16-байтовую шестнадцатеричную соль + salt = generate_salt(16) + password_hmac = password_to_hmac(salt, args.password) + + print('String to be appended to bitcoin.conf:') + print('rpcauth={0}:{1}${2}'.format(args.username, salt, password_hmac)) + print('Your password:\n{0}'.format(args.password)) + +if __name__ == '__main__': + main() diff --git a/libre-relay/torrc.template b/libre-relay/torrc.template new file mode 100644 index 0000000..f8c977b --- /dev/null +++ b/libre-relay/torrc.template @@ -0,0 +1,13 @@ +SocksPort 0.0.0.0:9050 +ControlPort 0.0.0.0:9051 +CookieAuthentication 1 +CookieAuthFileGroupReadable 1 +HashedControlPassword 16:39AF5EEFA4FC1D986022FDFB13663669FE50FB6DE9A3B4FE4FC7D82010 # moneyprintergobrrr + +# Bitcoin Core P2P Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-p2p +HiddenServicePort $APP_LIBRE_RELAY_P2P_PORT $APP_LIBRE_RELAY_NODE_IP:$APP_LIBRE_RELAY_TOR_PORT + +# Bitcoin Core RPC Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-rpc +HiddenServicePort $APP_LIBRE_RELAY_RPC_PORT $APP_LIBRE_RELAY_NODE_IP:$APP_LIBRE_RELAY_RPC_PORT \ No newline at end of file diff --git a/librechat/.env b/librechat/.env new file mode 100644 index 0000000..d0678ca --- /dev/null +++ b/librechat/.env @@ -0,0 +1,661 @@ +#=======================================================# +# LibreChat Конфигурация # +#=======================================================# +# Пожалуйста, обратитесь за помощью к справочной документации # +# с настройкой среды LibreChat. # +# # +# https://www.librechat.ai/docs/configuration/dotenv # +#=======================================================# + +#==========================================# +# Конфигурация сервера № +#==========================================# + +HOST=0.0.0.0 +PORT=3080 + +MONGO_URI=mongodb://librechat_mongodb_1:27017/LibreChat + +DOMAIN_CLIENT=http://localhost:3080 +DOMAIN_SERVER=http://localhost:3080 + +NO_INDEX=true +# Используйте адрес, который находится на расстоянии не более n переходов от приложения Express. +# req.socket.remoteAddress — это первый переход, а остальные ищутся в заголовке X-Forwarded-For справа налево. +# Значение 0 означает, что первым недоверенным адресом будет req.socket.remoteAddress, т.е. обратного прокси-сервера нет. +# По умолчанию 1. +TRUST_PROXY=1 + +#===============# +# JSON Номер журнала +#===============# + +# Используйте, когда консоль процесса регистрируется в облачном развертывании, например GCP/AWS. +CONSOLE_JSON=false + +#===============# +# Журнал отладки # +#===============# + +DEBUG_LOGGING=true +DEBUG_CONSOLE=false + +#=============# +# Разрешения # +#=============# + +# UID=1000 +# GID=1000 + +#===============# +# Конфигурация № +#===============# +# Используйте абсолютный путь, относительный путь или URL. + +# CONFIG_PATH="/alternative/path/to/librechat.yaml" + +#===========================================# +# Конечные точки # +#===========================================# + +# ENDPOINTS=openAI,assistants,azureOpenAI,google,gptPlugins,anthropic + +PROXY= + +#===============================# +# Известные конечные точки — librechat.yaml # +#===============================# +# https://www.librechat.ai/docs/configuration/librechat_yaml/ai_endpoints + +# ANYSCALE_API_KEY= +# APIPIE_API_KEY= +# COHERE_API_KEY= +# DEEPSEEK_API_KEY= +# DATABRICKS_API_KEY= +# ФЕЙЕРВЕРКИ_API_KEY= +# GROQ_API_KEY= +# HUGGINGFACE_TOKEN= +# MISTRAL_API_KEY= +# OPENROOUTER_KEY= +# PERPLEXITY_API_KEY= +# SHUTTLEAI_API_KEY= +# TOGETHERAI_API_KEY= +# UNIFY_API_KEY= +# XAI_API_KEY= + +#============# +# Антропный # +#============# + +ANTHROPIC_API_KEY=user_provided +# ANTHROPIC_MODELS=claude-opus-4-20250514,claude-sonnet-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307 +# ANTHROPIC_REVERSE_PROXY= + +#============# +# Лазурный # +#============# + +# Примечание. Эти переменные — DEPRECATED. +# Вместо этого используйте конфигурацию `librechat.yaml` для `azureOpenAI`. +# Вы также можете продолжать использовать их, если откажетесь от использования конфигурации `librechat.yaml`. + +# AZURE_OPENAI_DEFAULT_MODEL=gpt-3.5-turbo # Устарело +# AZURE_OPENAI_MODELS=gpt-3.5-turbo,gpt-4 # Устарело +# AZURE_USE_MODEL_AS_DEPLOYMENT_NAME=TRUE # Устарело +# AZURE_API_KEY= # Deprecated +# AZURE_OPENAI_API_INSTANCE_NAME= # Deprecated +# AZURE_OPENAI_API_DEPLOYMENT_NAME= # Deprecated +# AZURE_OPENAI_API_VERSION= # Deprecated +# AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME= # Deprecated +# AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME= # Deprecated +# PLUGINS_USE_AZURE="true" # Устарело + +#=================# +# AWS Коренная порода # +#=================# + +# BEDROCK_AWS_DEFAULT_REGION=us-east-1 # Необходимо указать регион по умолчанию. +# BEDROCK_AWS_ACCESS_KEY_ID=someAccessKey +# BEDROCK_AWS_SECRET_ACCESS_KEY=someSecretAccessKey +# BEDROCK_AWS_SESSION_TOKEN=someSessionToken + +# Примечание. Этот список примеров не является исчерпывающим. Если этот параметр опущен, будут включены все известные и поддерживаемые модели IDs. +# BEDROCK_AWS_MODELS=anthropic.claude-3-5-sonnet-20240620-v1:0,meta.llama3-1-8b-instruct-v1:0 + +# Посмотреть все модели Bedrock IDs можно здесь: https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html#model-ids-arns + +# Примечания к конкретным моделям: +# Следующие модели не поддерживаются из-за отсутствия поддержки потоковой передачи: +# ai21.j2-mid-v1 + +# Следующие модели не поддерживаются из-за отсутствия поддержки истории разговоров: +# ai21.j2-ultra-v1, cohere.command-text-v14, cohere.command-light-text-v14 + +#============# +# Google # +#============# + +GOOGLE_KEY=user_provided + +# GOOGLE_REVERSE_PROXY= +# Некоторые обратные прокси-серверы не поддерживают заголовок X-goog-api-key. Вместо этого раскомментируйте, чтобы передать ключ API в заголовке авторизации. +# GOOGLE_AUTH_HEADER=true + +# Близнецы API (AI Studio) +# GOOGLE_MODELS=gemini-2.5-pro-preview-05-06,gemini-2.5-flash-preview-04-17,gemini-2.0-flash-001,gemini-2.0-flash-exp,gemini-2.0-flash-lite-001,gemini-1.5-pro-002,gemini-1.5-flash-002 + +# Вершина AI +# GOOGLE_MODELS=gemini-2.5-pro-preview-05-06,gemini-2.5-flash-preview-04-17,gemini-2.0-flash-001,gemini-2.0-flash-exp,gemini-2.0-flash-lite-001,gemini-1.5-pro-002,gemini-1.5-flash-002 + +# GOOGLE_TITLE_MODEL=gemini-2.0-flash-lite-001 + +# GOOGLE_LOC=us-central1 + +# Настройки безопасности Google +# ПРИМЕЧАНИЕ: Эти настройки применяются как к Vertex AI, так и к Gemini API (AI Studio) +# +# Для вершины AI: +# Чтобы использовать настройку BLOCK_NONE, вам необходимо: +# (а) Доступ через белый список через команду вашего аккаунта Google или +# (б) Перейти на ежемесячное выставление счетов: https://cloud.google.com/billing/docs/how-to/invoiced-billing +# +# Для Близнецов API (AI Studio): +# BLOCK_NONE доступен по умолчанию, особых требований к учетной записи нет. +# +# Доступные варианты: BLOCK_NONE, BLOCK_ONLY_HIGH, BLOCK_MEDIUM_AND_ABOVE, BLOCK_LOW_AND_ABOVE. +# +# GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH +# GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH +# GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH +# GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH +# GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH + +#============# +# ОпенАИ # +#============# + +OPENAI_API_KEY=user_provided +# OPENAI_MODELS=o1,o1-mini,o1-preview,gpt-4o,gpt-4.5-preview,chatgpt-4o-latest,gpt-4o-mini,gpt-3.5-turbo-0125,gpt-3.5-turbo-0301,gpt-3.5-turbo,gpt-4,gpt-4-0613,gpt-4-vision-preview,gpt-3.5-turbo-0613,gpt-3.5-turbo-16k-0613,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview,gpt-3.5-turbo-1106,gpt-3.5-turbo-instruct,gpt-3.5-turbo-instruct-0914,gpt-3.5-turbo-16k + +DEBUG_OPENAI=false + +# TITLE_CONVO=false +# OPENAI_TITLE_MODEL=gpt-4o-mini + +# OPENAI_SUMMARIZE=true +# OPENAI_SUMMARY_MODEL=gpt-4o-mini + +# OPENAI_FORCE_PROMPT=true + +# OPENAI_REVERSE_PROXY= + +# OPENAI_ORGANIZATION= + +#====================# +# Помощники API # +#====================# + +ASSISTANTS_API_KEY=user_provided +# ASSISTANTS_BASE_URL= +# ASSISTANTS_MODELS=gpt-4o,gpt-4o-mini,gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview + +#=======================# +# Помощники Azure API # +#=======================# + +# Примечание. Вам следует сопоставить свои учетные данные с пользовательскими переменными в соответствии с вашей конфигурацией Azure OpenAI. +# Модели для помощников Azure также определяются вашей конфигурацией Azure OpenAI. + +# Дополнительную информацию, в том числе о том, как включить использование Ассистентов с Azure, можно найти здесь: +# https://www.librechat.ai/docs/configuration/librechat_yaml/ai_endpoints/azure#using-assistants-with-azure + +#============# +# Плагины # +#============# + +# PLUGIN_MODELS=gpt-4o,gpt-4o-mini,gpt-4,gpt-4-turbo-preview,gpt-4-0125-preview,gpt-4-1106-preview,gpt-4-0613,gpt-3.5-turbo,gpt-3.5-turbo-0125,gpt-3.5-turbo-1106,gpt-3.5-turbo-0613 + +DEBUG_PLUGINS=true + +CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0 +CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb + +# Поиск Azure AI +#----------------- +AZURE_AI_SEARCH_SERVICE_ENDPOINT= +AZURE_AI_SEARCH_INDEX_NAME= +AZURE_AI_SEARCH_API_KEY= + +AZURE_AI_SEARCH_API_VERSION= +AZURE_AI_SEARCH_SEARCH_OPTION_QUERY_TYPE= +AZURE_AI_SEARCH_SEARCH_OPTION_TOP= +AZURE_AI_SEARCH_SEARCH_OPTION_SELECT= + +# OpenAI Настройка инструментов изображения +#---------------- +# IMAGE_GEN_OAI_DESCRIPTION_WITH_FILES=Пользовательское описание инструмента создания изображений при наличии файлов +# IMAGE_GEN_OAI_DESCRIPTION_NO_FILES=Пользовательское описание инструмента создания изображений при отсутствии файлов +# IMAGE_EDIT_OAI_DESCRIPTION=Пользовательское описание инструмента редактирования изображений +# IMAGE_GEN_OAI_PROMPT_DESCRIPTION=Описание пользовательского запроса для инструмента создания изображений +# IMAGE_EDIT_OAI_PROMPT_DESCRIPTION=Пользовательское описание подсказки для инструмента редактирования изображений + +# ДАЛЛ·И +#---------------- +# ДАЛЛЕ_API_KEY= +# DALLE3_API_KEY= +# DALLE2_API_KEY= +# DALLE3_SYSTEM_PROMPT= +# DALLE2_SYSTEM_PROMPT= +# DALLE_REVERSE_PROXY= +# DALLE3_BASEURL= +# DALLE2_BASEURL= + +# DALL·E (через Azure OpenAI) +# Note: requires some of the variables above to be set +#---------------- +# DALLE3_AZURE_API_VERSION= +# DALLE2_AZURE_API_VERSION= + +# Поток +#----------------- +FLUX_API_BASE_URL=https://api.us1.bfl.ai +# FLUX_API_BASE_URL = 'https://api.bfl.ml'; + +# Получите ключ API по адресу https://api.us1.bfl.ai/auth/profile. +# FLUX_API_KEY= + +# Google +#----------------- +GOOGLE_SEARCH_API_KEY= +GOOGLE_CSE_ID= + +# ЮТУБ +#----------------- +YOUTUBE_API_KEY= + +# СерпAPI +#----------------- +SERPAPI_API_KEY= + +# Стабильная диффузия +#----------------- +SD_WEBUI_URL= + +# Тавили +#----------------- +TAVILY_API_KEY= + +# Траверсааль +#----------------- +TRAVERSAAL_API_KEY= + +# ВольфрамАльфа +#----------------- +WOLFRAM_APP_ID= + +# Запир +#----------------- +ZAPIER_NLA_API_KEY= + +#==========================================# +# Поиск # +#==========================================# + +SEARCH=true +MEILI_NO_ANALYTICS=true +MEILI_HOST=http://librechat_meilisearch_1:7700 +MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt + +# Optional: Disable indexing, useful in a multi-node setup +# где только один экземпляр должен выполнять синхронизацию индекса. +# MEILI_NO_SYNC=true + +#==========================================# +# Преобразование речи в текст и преобразование текста в речь # +#==========================================# + +STT_API_KEY= +TTS_API_KEY= + +#==========================================# +# ТРЯПКА № +#==========================================# +# Дополнительная информация: https://www.librechat.ai/docs/configuration/rag_api + +RAG_API_URL=http://librechat_rag_api_1:8000 +# RAG_OPENAI_BASEURL= +RAG_OPENAI_API_KEY=user_provided +# RAG_USE_FULL_CONTEXT= +# EMBEDDINGS_PROVIDER=openai +# EMBEDDINGS_MODEL=text-embedding-3-small + +#===========================================# +# Системный номер пользователя +#===========================================# + +#=====================# +# Модерация # +#=====================# + +OPENAI_MODERATION=false +OPENAI_MODERATION_API_KEY= +# OPENAI_MODERATION_REVERSE_PROXY= + +BAN_VIOLATIONS=true +BAN_DURATION=1000 * 60 * 60 * 2 +BAN_INTERVAL=20 + +LOGIN_VIOLATION_SCORE=1 +REGISTRATION_VIOLATION_SCORE=1 +CONCURRENT_VIOLATION_SCORE=1 +MESSAGE_VIOLATION_SCORE=1 +NON_BROWSER_VIOLATION_SCORE=20 + +LOGIN_MAX=7 +LOGIN_WINDOW=5 +REGISTER_MAX=5 +REGISTER_WINDOW=60 + +LIMIT_CONCURRENT_MESSAGES=true +CONCURRENT_MESSAGE_MAX=2 + +LIMIT_MESSAGE_IP=true +MESSAGE_IP_MAX=40 +MESSAGE_IP_WINDOW=1 + +LIMIT_MESSAGE_USER=false +MESSAGE_USER_MAX=40 +MESSAGE_USER_WINDOW=1 + +ILLEGAL_MODEL_REQ_SCORE=5 + +#=====================# +# Баланс # +#=====================# + +# CHECK_BALANCE=false +# START_BALANCE=20000 # примечание: количество токенов, которое будет начислено после регистрации. + +#=====================# +# Регистрация и логин # +#=====================# + +ALLOW_EMAIL_LOGIN=true +ALLOW_REGISTRATION=false +ALLOW_SOCIAL_LOGIN=false +ALLOW_SOCIAL_REGISTRATION=false +ALLOW_PASSWORD_RESET=false +# ALLOW_ACCOUNT_DELETION=true # примечание: включено по умолчанию, если отсутствует omitted/commented +ALLOW_UNVERIFIED_EMAIL_LOGIN=true + +SESSION_EXPIRY=1000 * 60 * 15 +REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 + +JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef +JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 + +# Раздор +DISCORD_CLIENT_ID= +DISCORD_CLIENT_SECRET= +DISCORD_CALLBACK_URL=/oauth/discord/callback + +# Фейсбук +FACEBOOK_CLIENT_ID= +FACEBOOK_CLIENT_SECRET= +FACEBOOK_CALLBACK_URL=/oauth/facebook/callback + +# GitHub +GITHUB_CLIENT_ID= +GITHUB_CLIENT_SECRET= +GITHUB_CALLBACK_URL=/oauth/github/callback +# GitHub Предприятие +# GITHUB_ENTERPRISE_BASE_URL= +# GITHUB_ENTERPRISE_USER_AGENT= + +# Google +GOOGLE_CLIENT_ID= +GOOGLE_CLIENT_SECRET= +GOOGLE_CALLBACK_URL=/oauth/google/callback + +# Яблоко +APPLE_CLIENT_ID= +APPLE_TEAM_ID= +APPLE_KEY_ID= +APPLE_PRIVATE_KEY_PATH= +APPLE_CALLBACK_URL=/oauth/apple/callback + +# OpenID +OPENID_CLIENT_ID= +OPENID_CLIENT_SECRET= +OPENID_ISSUER= +OPENID_SESSION_SECRET= +OPENID_SCOPE="openid profile email" +OPENID_CALLBACK_URL=/oauth/openid/callback +OPENID_REQUIRED_ROLE= +OPENID_REQUIRED_ROLE_TOKEN_KIND= +OPENID_REQUIRED_ROLE_PARAMETER_PATH= +# Установите, чтобы определить, какое свойство информации о пользователе, возвращенное поставщиком OpenID, для сохранения в качестве имени пользователя. +OPENID_USERNAME_CLAIM= +# Установите, чтобы определить, какое свойство информации о пользователе, возвращенное поставщиком OpenID, для сохранения в качестве имени пользователя. +OPENID_NAME_CLAIM= + +OPENID_BUTTON_LABEL= +OPENID_IMAGE_URL= +# Установите значение true для автоматического перенаправления к провайдеру OpenID, когда пользователь посещает страницу входа. +# Это позволит полностью обойти форму входа для пользователей. Используйте это только в том случае, если OpenID — ваш единственный метод аутентификации. +OPENID_AUTO_REDIRECT=false +# Установите значение true, чтобы использовать PKCE (ключ подтверждения для обмена кодами) для аутентификации OpenID. +OPENID_USE_PKCE=false +#Установите значение true, чтобы повторно использовать токены openid для управления аутентификацией вместо использования сеанса mongodb и пользовательского токена обновления. +OPENID_REUSE_TOKENS= +#По умолчанию результаты проверки ключа подписи кэшируются, чтобы предотвратить чрезмерные запросы HTTP к конечной точке JWKS. +#Если найден ключ подписи, соответствующий ребенку, он будет кэширован, и при следующем запросе этого ребенка ключ подписи будет предоставлен из кэша. +#По умолчанию верно. +OPENID_JWKS_URL_CACHE_ENABLED= +OPENID_JWKS_URL_CACHE_TIME= # 600000 ms eq to 10 minutes leave empty to disable caching +#Установите значение true, чтобы запустить поток обмена токенами для получения токена доступа для конечной точки userinfo. +OPENID_ON_BEHALF_FLOW_FOR_USERINFRO_REQUIRED= +OPENID_ON_BEHALF_FLOW_USERINFRO_SCOPE = "user.read" # example for Scope Needed for Microsoft Graph API +# Установите значение true, чтобы использовать конечную точку окончания сеанса OpenID Connect для выхода из системы. +OPENID_USE_END_SESSION_ENDPOINT= + + +# SAML +# Примечание. Если OpenID включен, аутентификация SAML будет автоматически отключена. +SAML_ENTRY_POINT= +SAML_ISSUER= +SAML_CERT= +SAML_CALLBACK_URL=/oauth/saml/callback +SAML_SESSION_SECRET= + +# Сопоставления атрибутов (необязательно) +SAML_EMAIL_CLAIM= +SAML_USERNAME_CLAIM= +SAML_GIVEN_NAME_CLAIM= +SAML_FAMILY_NAME_CLAIM= +SAML_PICTURE_CLAIM= +SAML_NAME_CLAIM= + +# Настройки кнопки входа в систему (необязательно) +SAML_BUTTON_LABEL= +SAML_IMAGE_URL= + +# Должен ли быть подписан ответ SAML. +# - Если "true", будет подписан весь `SAML Response`. +# - Если "false" или не установлено, будет подписан только `SAML Assertion` (поведение по умолчанию). +# SAML_USE_AUTHN_RESPONSE_SIGNED= + + +# ЛДАП +LDAP_URL= +LDAP_BIND_DN= +LDAP_BIND_CREDENTIALS= +LDAP_USER_SEARCH_BASE= +#LDAP_SEARCH_FILTER="mail=" +LDAP_CA_CERT_PATH= +# LDAP_TLS_REJECT_UNAUTHORIZED= +# LDAP_STARTTLS= +# LDAP_LOGIN_USES_USERNAME=true +# LDAP_ID= +# LDAP_USERNAME= +# LDAP_EMAIL= +# LDAP_FULL_NAME= + +#=====================# +# Сброс пароля электронной почты # +#=====================# + +EMAIL_SERVICE= +EMAIL_HOST= +EMAIL_PORT=25 +EMAIL_ENCRYPTION= +EMAIL_ENCRYPTION_HOSTNAME= +EMAIL_ALLOW_SELFSIGNED= +EMAIL_USERNAME= +EMAIL_PASSWORD= +EMAIL_FROM_NAME= +EMAIL_FROM=noreply@librechat.ai + +#=====================# +# Почтовый пистолет API # +#=====================# + +# MAILGUN_API_KEY=your-mailgun-api-key +# MAILGUN_DOMAIN=mg.yourdomain.com +# EMAIL_FROM=noreply@yourdomain.com +# EMAIL_FROM_NAME="LibreChat" + +# # Необязательно: для региона EU. +# MAILGUN_HOST=https://api.eu.mailgun.net + +#=====================# +# База огня CDN # +#=====================# + +FIREBASE_API_KEY= +FIREBASE_AUTH_DOMAIN= +FIREBASE_PROJECT_ID= +FIREBASE_STORAGE_BUCKET= +FIREBASE_MESSAGING_SENDER_ID= +FIREBASE_APP_ID= + +#=====================# +# S3 AWS Номер ковша +#=====================# + +AWS_ENDPOINT_URL= +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_REGION= +AWS_BUCKET_NAME= + +#=====================# +# Номер хранилища BLOB-объектов Azure +#=====================# + +AZURE_STORAGE_CONNECTION_STRING= +AZURE_STORAGE_PUBLIC_ACCESS=false +AZURE_CONTAINER_NAME=files + +#=====================# +# Общие ссылки # +#=====================# + +ALLOW_SHARED_LINKS=true +ALLOW_SHARED_LINKS_PUBLIC=true + +#===========================# +# Статический элемент управления кэшем файлов # +#===========================# + +# Оставьте комментарий, чтобы использовать значения по умолчанию: 1 день (86 400 секунд) для s-maxage и 2 дня (172 800 секунд) для max-age. +# NODE_ENV должен быть настроен на производство, чтобы они вступили в силу. +# STATIC_CACHE_MAX_AGE=172800 +# STATIC_CACHE_S_MAX_AGE=86400 + +# Если у вас есть другая служба перед вашим LibreChat, выполняющая сжатие, отключите здесь экспресс-сжатие. +# DISABLE_COMPRESSION=true + +#===========================================# +# интерфейс # +#===========================================# + +APP_TITLE=LibreChat +# CUSTOM_FOOTER="My custom footer" +HELP_AND_FAQ_URL=https://librechat.ai + +# SHOW_BIRTHDAY_ICON=true + +# Идентификатор диспетчера тегов Google +#ANALYTICS_GTM_ID=user provided google tag manager id + +#===============# +# REDIS Опции # +#===============# + +# REDIS_URI=10.10.10.10:6379 +# USE_REDIS=true + +# USE_REDIS_CLUSTER=true +# REDIS_CA=/path/to/ca.crt + +#==========================================# +# Другие # +#==========================================# +# Вы должны оставить закомментированными # + +# УЗЕЛ_ENV= + +# E2E_USER_EMAIL= +# E2E_USER_PASSWORD= + +#============================================# +# Заголовки кэша # +#============================================# +# Заголовки, управляющие кэшированием index.html # +# Конфигурация по умолчанию предотвращает кэширование, чтобы гарантировать # +# пользователи всегда получают последнюю версию. Настроить # +# только если вы понимаете последствия кэширования. # + +# INDEX_CACHE_CONTROL=без кэша, без хранения, необходима повторная проверка +# INDEX_PRAGMA=no-cache +# INDEX_EXPIRES=0 + +# no-cache: принудительная проверка на сервере перед использованием кэшированной версии. +# no-store: Prevents storing the response entirely +# must-revalidate: предотвращает использование устаревшего контента в автономном режиме. + +#============================================# +# OpenWeather # +#============================================# +OPENWEATHER_API_KEY= + +#================================# +# LibreChat Интерпретатор кода API # +#================================# + +# https://code.librechat.ai +# LIBRECHAT_CODE_API_KEY=your-key + +#=====================# +# Веб-поиск # +#=====================# + +# Примечание. Все следующие имена переменных можно настроить. +# Опустите значения, чтобы пользователь мог их предоставить. + +# Дополнительные сведения о значениях конфигурации см. в разделах: +# https://librechat.ai/docs/features/web_search + +# Поставщик поиска (обязательно) +# SERPER_API_KEY=your_serper_api_key + +# Скребок (обязательно) +# FIRECRAWL_API_KEY=your_firecrawl_api_key +# Optional: Custom Firecrawl API URL +# FIRECRAWL_API_URL=your_firecrawl_api_url + +# Реранкер (обязательно) +# JINA_API_KEY=your_jina_api_key +# или +# COHERE_API_KEY=your_cohere_api_key diff --git a/librechat/data/api/images/.gitkeep b/librechat/data/api/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/librechat/data/api/librechat.yaml b/librechat/data/api/librechat.yaml new file mode 100644 index 0000000..5cabac6 --- /dev/null +++ b/librechat/data/api/librechat.yaml @@ -0,0 +1,277 @@ +# Для получения дополнительной информации см. Руководство по настройке: +# https://www.librechat.ai/docs/configuration/librechat_yaml + +# Версия конфигурации (обязательно) +version: 1.2.1 + +# Настройки кэша: установите значение true, чтобы включить кэширование. +cache: true + +# Стратегия файла s3/firebase +# fileStrategy: "s3" + +# Пользовательская конфигурация интерфейса +interface: + customWelcome: "Welcome to LibreChat! Enjoy your experience." + # Настройки политики конфиденциальности + privacyPolicy: + externalUrl: 'https://librechat.ai/privacy-policy' + openNewTab: true + + endpointsMenu: true + modelSelect: true + parameters: true + sidePanel: true + presets: true + prompts: true + bookmarks: true + multiConvo: true + agents: true + +# Пример турникета Cloudflare (опционально) +#турникет: +# Ключ сайта: "your-site-key-here" +# параметры: +# language: "auto" # "auto" или код языка ISO 639-1 (например, en) +# size: "normal" # Опции: "normal", "compact", "flexible" или "invisible". + +# Пример структуры объекта регистрации (необязательно) +registration: + socialLogins: ['github', 'google', 'discord', 'openid', 'facebook', 'apple', 'saml'] + # разрешенные домены: + # - "gmail.com" + + +# Пример настроек баланса +# баланс: +# enabled: false +# startBalance: 20000 +# autoRefillEnabled: false +# refillIntervalValue: 30 +# refillIntervalUnit: 'days' +# refillAmount: 10000 + +# речь: +# ттс: +# опенай: +# url: '' +# apiKey: '${TTS_API_KEY}' +# model: '' +# voices: [''] + +# +# вт: +# опенай: +# url: '' +# apiKey: '${STT_API_KEY}' +# model: '' + +# Ограничения скорости: +# файлЗагрузки: +# ipMax: 100 +# ipWindowInMinutes: 60 # Окно ограничения скорости загрузки файлов по IP +# userMax: 50 +# userWindowInMinutes: 60 # Окно ограничения скорости загрузки файлов на пользователя +# разговорыИмпорт: +# ipMax: 100 +# ipWindowInMinutes: 60 # Окно ограничения скорости для импорта разговоров по IP +# userMax: 50 +# userWindowInMinutes: 60 # Окно ограничения скорости импорта разговоров на пользователя + +# Пример структуры объекта действий +actions: + allowedDomains: + - "swapi.dev" + - "librechat.ai" + - "google.com" + +# Пример структуры объекта серверов MCP +# mcpServers: +# все: +# # тип: sse # тип может быть опущен +# url: http://localhost:3001/sse +# timeout: 60000 # Тайм-аут для этого сервера составляет 1 минуту, это тайм-аут по умолчанию для серверов MCP. +# кукольник: +# type: stdio +# command: npx +# аргументы: +# - -у +# - "@modelcontextprotocol/server-puppeteer" +# timeout: 300000 # Таймаут 5 минут для этого сервера +# файловая система: +# # тип: stdio +# command: npx +# аргументы: +# - -у +# - "@modelcontextprotocol/server-filesystem" +# - /home/user/LibreChat/ +# iconPath: /home/user/LibreChat/client/public/assets/logo.svg +# mcp-обсидиан: +# command: npx +# аргументы: +# - -у +# - "mcp-obsidian" +# - /path/to/obsidian/vault + +# Определение пользовательских конечных точек +endpoints: + # помощники: + # disableBuilder: false # Отключите интерфейс Assistants Builder, установив значение `true`. + # pollIntervalMs: 3000 # Интервал опроса для проверки обновлений Ассистента + # timeoutMs: 180000 # Тайм-аут для операций помощника + # # Должно быть только одно или другое: `supportedIds` или `excludedIds` + # supportedIds: ["asst_supportedAssistantId1", "asst_supportedAssistantId2"] + # # исключенных идентификаторов: ["asst_excludedAssistantId"] + # # Показывать только помощников, созданных пользователем или созданных извне (например, на игровой площадке «Помощники»). + # # PrivateAssistants: false # Не работает с `supportedIds` или `excludedIds` + # # (необязательно) Для моделей, поддерживающих извлечение, по умолчанию будут использоваться последние известные модели OpenAI, поддерживающие эту функцию. + # retrievalModels: ["gpt-4-turbo-preview"] + # # (необязательно) Возможности помощника доступны всем пользователям. Опустите те, которые вы хотите исключить. По умолчанию список приведен ниже. + # capabilities: ["code_interpreter", "retrieval", "actions", "tools", "image_vision"] + # агенты: + # # (необязательно) Глубина рекурсии по умолчанию для агентов, по умолчанию 25 + # recursionLimit: 50 + # # (необязательно) Максимальная глубина рекурсии для агентов, по умолчанию 25. + # maxRecursionLimit: 100 + # # (необязательно) Отключить интерфейс конструктора для агентов + # disableBuilder: false + # # (необязательно) Возможности агента доступны всем пользователям. Опустите те, которые вы хотите исключить. По умолчанию список приведен ниже. + # capabilities: ["execute_code", "file_search", "actions", "tools"] + custom: + # Пример Олламы + - name: "Ollama" + apiKey: "ollama" + # используйте 'host.docker.internal' вместо localhost, если LibreChat запущен в контейнере докера + baseURL: "http://ollama_ollama_1:11434/v1/" + models: + default: + [ + 'llama3.2' + ] + # поддерживается получение списка моделей, но поле `name` должно начинаться + # с `ollama` (без учета регистра), как в этом примере. + fetch: false + titleConvo: true + titleModel: "current_model" + summarize: false + summaryModel: "current_model" + forcePrompt: false + modelDisplayLabel: "Ollama" + # Пример Грока + # - имя: 'groq' + # apiKey: '${GROQ_API_KEY}' + # baseURL: 'https://api.groq.com/openai/v1/' + # модели: + # по умолчанию: + # [ + # 'llama3-70b-8192', + # 'llama3-8b-8192', + # 'llama2-70b-4096', + # 'mixtral-8x7b-32768', + # 'gemma-7b-it', + # ] + # fetch: false + # titleConvo: true + # titleModel: 'mixtral-8x7b-32768' + # modelDisplayLabel: 'groq' + + # # Мистраль AI Пример + # - name: 'Mistral' # Уникальное имя конечной точки + # # Для `apiKey` и `baseURL` вы можете использовать определенные вами переменные среды. + # # рекомендуемые переменные среды: + # apiKey: '${MISTRAL_API_KEY}' + # baseURL: 'https://api.mistral.ai/v1' + + # # Конфигурация моделей + # модели: + # # Список моделей по умолчанию для использования. Требуется хотя бы одно значение. + # default: ['mistral-tiny', 'mistral-small', 'mistral-medium'] + # # Опция выборки: установите значение true для извлечения моделей из API. + # fetch: true # По умолчанию ложь. + + # # Дополнительные конфигурации + + # # Настройка диалога по заголовку + # titleConvo: true # Установите значение true, чтобы включить диалог заголовка + + # # Метод заголовка: выберите "completion" или "functions". + # # titleMethod: "completion" # По умолчанию "completion", если он опущен. + + # # Модель заголовка: укажите модель, которая будет использоваться для заголовков. + # titleModel: 'mistral-tiny' # По умолчанию используется "gpt-3.5-turbo", если опущено. + + # # Параметр суммирования: установите значение true, чтобы включить суммирование. + # # суммировать: ложь + + # # Модель сводки: укажите модель, которая будет использоваться, если включено суммирование. + # # summaryModel: "mistral-tiny" # По умолчанию "gpt-3.5-turbo", если опущено. + + # # Настройка принудительного запроса: если true, вместо `messages` отправляется параметр `prompt`. + # # ForcePrompt: ложь + + # # Метка, отображаемая для модели AI в сообщениях. + # modelDisplayLabel: 'Mistral' # По умолчанию — "AI", если не установлено. + + # # Добавляем в запрос дополнительные параметры. Параметры по умолчанию будут перезаписаны. + # # добавитьПарамсы: + # # Safe_prompt: true # Это поле характерно для Mistral AI: https://docs.mistral.ai/api/ + + # # Удалить параметры параметров по умолчанию из запроса. См. параметры по умолчанию в руководстве, указанном ниже. + # # NOTE: Для Mistral необходимо сбросить следующие параметры, иначе вы столкнетесь с ошибкой 422: + # dropParams: ['stop', 'user', 'frequency_penalty', 'presence_penalty'] + + # # OpenRouter Пример + # - имя: 'OpenRouter' + # # Для `apiKey` и `baseURL` вы можете использовать определенные вами переменные среды. + # # рекомендуемые переменные среды: + # apiKey: '${OPENROUTER_KEY}' + # baseURL: 'https://openrouter.ai/api/v1' + # модели: + # default: ['meta-llama/llama-3-70b-instruct'] + # fetch: true + # titleConvo: true + # titleModel: 'meta-llama/llama-3-70b-instruct' + # # Рекомендуется: удалить параметр остановки из запроса, поскольку модели Openrouter используют различные токены остановки. + # dropParams: ['stop'] + # modelDisplayLabel: 'OpenRouter' + + # # Портключ AI Пример + # - имя: "Portkey" + # apiKey: "dummy" + # baseURL: 'https://api.portkey.ai/v1' + # заголовки: + # x-portkey-api-key: '${PORTKEY_API_KEY}' + # x-portkey-virtual-key: '${PORTKEY_OPENAI_VIRTUAL_KEY}' + # модели: + # default: ['gpt-4o-mini', 'gpt-4o', 'chatgpt-4o-latest'] + # fetch: true + # titleConvo: true + # titleModel: 'current_model' + # summarize: false + # summaryModel: 'current_model' + # forcePrompt: false + # modelDisplayLabel: 'Portkey' + # iconURL: https://images.crunchbase.com/image/upload/c_pad,f_auto,q_auto:eco,dpr_1/rjqy7ghvjoiu4cd1xjbf +# файлконфигурация: +# конечные точки: +# помощники: +# fileLimit: 5 +# fileSizeLimit: 10 # Максимальный размер отдельного файла в MB +# totalSizeLimit: 50 # Максимальный общий размер всех файлов в одном запросе в MB +# поддерживаемыеMimeTypes: +# - "image/.*" +# - "application/pdf" +# опенАИ: +# disabled: true # Отключает загрузку файлов на конечную точку OpenAI. +# по умолчанию: +# totalSizeLimit: 20 +# ВашеCustomEndpointName: +# fileLimit: 2 +# fileSizeLimit: 5 +# serverFileSizeLimit: 100 # Ограничение размера файла глобального сервера в MB +# avatarSizeLimit: 2 # Ограничение размера изображения аватара пользователя в MB +# imageGeneration: # Image Gen settings, either percentage or px +# percentage: 100 +# px: 1024 +# # Дополнительную информацию о конфигурации помощников см. в Руководстве по пользовательской настройке: +# #https://www.librechat.ai/docs/configuration/librechat_yaml/object_structure/assistants_endpoint diff --git a/librechat/data/api/logs/.gitkeep b/librechat/data/api/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/librechat/data/api/uploads/.gitkeep b/librechat/data/api/uploads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/librechat/data/db/.gitkeep b/librechat/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/librechat/data/meilisearch/.gitkeep b/librechat/data/meilisearch/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/librechat/data/vectordb/.gitkeep b/librechat/data/vectordb/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/librechat/dfwebos-app.yml b/librechat/dfwebos-app.yml new file mode 100644 index 0000000..ae67cc0 --- /dev/null +++ b/librechat/dfwebos-app.yml @@ -0,0 +1,103 @@ +manifestVersion: 1.1 +id: librechat +name: LibreChat +tagline: Улучшенный клон ChatGPT +category: ai +version: "v0.8.4" +port: 7050 +description: >- + Enhanced ChatGPT Clone: Features Agents, DeepSeek, Anthropic, AWS, OpenAI, Assistants API, Azure, Groq, o1, GPT-4o, Mistral, OpenRouter, Vertex AI, Gemini, Artifacts, AI model switching, message search, Code Interpreter, langchain, DALL-E-3, OpenAPI Actions, Functions, Secure Multi-User Auth, Presets, open-source for self-hosting. + + + ✨ Features + - 🖥️ UI & Experience inspired by ChatGPT with enhanced design and features + - 🤖 AI Model Selection: + - Anthropic (Claude), AWS Bedrock, OpenAI, Azure OpenAI, Google, Vertex AI, OpenAI Assistants API (incl. Azure) + - Custom Endpoints: Use any OpenAI-compatible API with LibreChat, no proxy required + - Compatible with Local & Remote AI Providers: + - Ollama, groq, Cohere, Mistral AI, Apple MLX, koboldcpp, together.ai, + - OpenRouter, Perplexity, ShuttleAI, Deepseek, Qwen, and more + - 🔧 Code Interpreter API: + - Secure, Sandboxed Execution in Python, Node.js (JS/TS), Go, C/C++, Java, PHP, Rust, and Fortran + - Seamless File Handling: Upload, process, and download files directly + - No Privacy Concerns: Fully isolated and secure execution + - 🔦 Agents & Tools Integration: + - LibreChat Agents: + - No-Code Custom Assistants: Build specialized, AI-driven helpers without coding + - Flexible & Extensible: Attach tools like DALL-E-3, file search, code execution, and more + - Compatible with Custom Endpoints, OpenAI, Azure, Anthropic, AWS Bedrock, and more + - Model Context Protocol (MCP) Support for Tools + - Use LibreChat Agents and OpenAI Assistants with Files, Code Interpreter, Tools, and API Actions + - 🔍 Web Search: + - Search the internet and retrieve relevant information to enhance your AI context + - Combines search providers, content scrapers, and result rerankers for optimal results + - 🪄 Generative UI with Code Artifacts: + - Code Artifacts allow creation of React, HTML, and Mermaid diagrams directly in chat + - 🎨 Image Generation & Editing + - Text-to-image and image-to-image with GPT-Image-1 + - Text-to-image with DALL-E (3/2), Stable Diffusion, Flux, or any MCP server + - Produce stunning visuals from prompts or refine existing images with a single instruction + - 💾 Presets & Context Management: + - Create, Save, & Share Custom Presets + - Switch between AI Endpoints and Presets mid-chat + - Edit, Resubmit, and Continue Messages with Conversation branching + - Fork Messages & Conversations for Advanced Context control + - 💬 Multimodal & File Interactions: + - Upload and analyze images with Claude 3, GPT-4.5, GPT-4o, o1, Llama-Vision, and Gemini 📸 + - Chat with Files using Custom Endpoints, OpenAI, Azure, Anthropic, AWS Bedrock, & Google 🗃️ + - 🌎 Multilingual UI: + - English, 中文, Deutsch, Español, Français, Italiano, Polski, Português Brasileiro + - Русский, 日本語, Svenska, 한국어, Tiếng Việt, 繁體中文, العربية, Türkçe, Nederlands, עברית + - 🧠 Reasoning UI: + - Dynamic Reasoning UI for Chain-of-Thought/Reasoning AI models like DeepSeek-R1 + - 🎨 Customizable Interface: + - Customizable Dropdown & Interface that adapts to both power users and newcomers + - 🗣️ Speech & Audio: + - Chat hands-free with Speech-to-Text and Text-to-Speech + - Automatically send and play Audio + - Supports OpenAI, Azure OpenAI, and Elevenlabs + - 📥 Import & Export Conversations: + - Import Conversations from LibreChat, ChatGPT, Chatbot UI + - Export conversations as screenshots, markdown, text, json + - 🔍 Search & Discovery: + - Search all messages/conversations + - 👥 Multi-User & Secure Access: + - Multi-User, Secure Authentication with OAuth2, LDAP, & Email Login Support + - Built-in Moderation, and Token spend tools + - ⚙️ Configuration & Deployment: + - Configure Proxy, Reverse Proxy, Docker, & many Deployment options + - Use completely local or deploy on the cloud + - 📖 Open-Source & Community: + - Completely Open-Source & Built in Public + - Community-driven development, support, and feedback +developer: Danny Avila +website: https://librechat.ai/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/2947 +repo: https://github.com/danny-avila/LibreChat +support: https://github.com/danny-avila/LibreChat/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "dfwebos@dfwebos.local" +defaultPassword: "" +deterministicPassword: true +dependencies: [] +releaseNotes: >- + 🚨 Этот выпуск включает более 30 исправлений безопасности и настоятельно рекомендуется для всех развертываний. + + + Ключевые моменты: + - Значительное усиление безопасности с более чем 30 исправлениями безопасности во всем приложении. + - Улучшения MCP, включая предотвращение штормов при повторном подключении, исправления условий гонки OAuth и улучшенный пользовательский интерфейс STDIO. + - Заменена библиотека токенизации на более легкую и быструю альтернативу. + - Рендеринг артефактов теперь использует статический HTML для более надежного отображения. + - Добавлена поддержка встроенного парсера документов ODT. + - Поддержка неаутентифицированных SMTP-реле. + - Улучшения доступности для заголовков разговоров и групп дат. + - Общие ссылки теперь по умолчанию являются частными. + + + Полные примечания к выпуску можно найти по адресу https://www.librechat.ai/changelog. +path: "" diff --git a/librechat/docker-compose.yml b/librechat/docker-compose.yml new file mode 100644 index 0000000..7556b04 --- /dev/null +++ b/librechat/docker-compose.yml @@ -0,0 +1,81 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: librechat_api_1 + APP_PORT: 3080 + + api: + image: ghcr.io/danny-avila/librechat:v0.8.4@sha256:89b0008e610e1dad635d866c09e007e308a145ce764d1eba7c8c6de7414d934b + restart: on-failure + user: "1000:1000" + command: npm run backend:dev + env_file: + - path: ${APP_DATA_DIR}/.env + environment: + - HOST=0.0.0.0 + - MONGO_URI=mongodb://librechat_mongodb_1:27017/LibreChat + - MEILI_HOST=http://librechat_meilisearch_1:7700 + - RAG_PORT=8000 + - RAG_API_URL=http://librechat_rag_api_1:8000 + - OPENAI_API_KEY=user_provided + - GOOGLE_KEY=user_provided + - ANTHROPIC_API_KEY=user_provided + - ASSISTANTS_API_KEY=user_provided + - CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0 + - CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb + - JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef + - JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 + volumes: + - ${APP_DATA_DIR}/data/api/librechat.yaml:/app/librechat.yaml + - ${APP_DATA_DIR}/data/api/images:/app/client/public/images + - ${APP_DATA_DIR}/data/api/uploads:/app/uploads + - ${APP_DATA_DIR}/data/api/logs:/app/api/logs + depends_on: + - mongodb + - rag_api + + mongodb: + image: mongo:8.0.10@sha256:15fb53a5160ebabff5ecade8f8b5d48721b68ea190957a7f35b5b38e8340e62b + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/db:/data/db + command: mongod --noauth + + meilisearch: + image: getmeili/meilisearch:v1.12.3@sha256:4acfcbbb9e089aa1aac838cfda3fba7f07aaaef044c23da8acbe0ab741400dac + restart: on-failure + user: "1000:1000" + environment: + - MEILI_HOST=http://librechat_meilisearch_1:7700 + - MEILI_NO_ANALYTICS=true + - MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt + volumes: + - ${APP_DATA_DIR}/data/meilisearch:/meili_data + + vectordb: + image: ankane/pgvector:v0.5.1@sha256:d3a9d8ac27bb7e05e333ef25b634d2625adaa85336ab729954b9e94859bf6fa7 + environment: + POSTGRES_DB: mydatabase + POSTGRES_USER: myuser + POSTGRES_PASSWORD: mypassword + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/vectordb:/var/lib/postgresql/data + + rag_api: + image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:v0.7.3@sha256:67dba8e1e5707a795f2188d1e345f23b8ebf3bf75365026395edec76474cefa6 + env_file: + - path: ${APP_DATA_DIR}/.env + environment: + - DB_HOST=librechat_vectordb_1 + - RAG_PORT=8000 + - OPENAI_API_KEY=user_provided + - GOOGLE_KEY=user_provided + - ANTHROPIC_API_KEY=user_provided + - ASSISTANTS_API_KEY=user_provided + restart: on-failure + depends_on: + - vectordb diff --git a/librechat/hooks/pre-start b/librechat/hooks/pre-start new file mode 100755 index 0000000..733bcfc --- /dev/null +++ b/librechat/hooks/pre-start @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -euo pipefail + +# дозорный файл, чтобы проверить, был ли уже инициализирован пользователь +USER_SENTINEL="${APP_DATA_DIR}/.user_created" + +# имя пользователя и адрес электронной почты по умолчанию +USER_NAME="DFWebOS" +USER_EMAIL="dfwebos@dfwebos.local" + +# максимальное количество попыток и время ожидания между ними (60 секунд) +MAX_TRIES=12 +SLEEP_SECS=5 + +# ─────────────────────────────────────────────────────────── +# Полностью пропустить загрузку, если пользователь уже инициализирован +# ─────────────────────────────────────────────────────────── +if [[ -f "$USER_SENTINEL" ]]; then + echo "Librechat: user already initialised - skipping bootstrap." + exit 0 +fi + +# ─────────────────────────────────────────────────────────── +# Подключите весь стек, чтобы миграция выполнялась автоматически. +# Вероятно, здесь можно вызвать только необходимые сервисы, но делаем это для простоты. +# --wait игнорируется в старых версиях Compose (DFWebOS < 1.0) +# ─────────────────────────────────────────────────────────── +echo "Librechat: starting full stack to run migrations…" +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \ + up -d --wait --wait-timeout 90 + +# ─────────────────────────────────────────────────────────── +# Повторяйте попытку, пока пользователь не будет создан (максимум 60 секунд). +# Все контейнеры запущены, поэтому с первой попытки все должно получиться. +# Но включение цикла повторов для надежности +# ─────────────────────────────────────────────────────────── +echo "Librechat: ensuring user exists…" +for ((try=1; try<=MAX_TRIES; try++)); do + # - В случае успеха помощник завершает работу из 0, сообщая включающему циклу, что мы закончили. + if "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" exec -T api node config/create-user.js "${USER_EMAIL}" "${USER_NAME}" "${USER_NAME}" "${APP_PASSWORD}" --email-verified=true ; then + touch "$USER_SENTINEL" + echo "Librechat: user ready." + break + fi + echo " Attempt $try/$MAX_TRIES failed - retrying in ${SLEEP_SECS}s…" + sleep "$SLEEP_SECS" +done + +if [[ ! -f "$USER_SENTINEL" ]]; then + echo "Librechat ERROR: could not create user after $MAX_TRIES attempts." + exit 1 +fi + +echo "Librechat: bootstrap finished - stopping stack for clean start…" +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" stop diff --git a/libreddit/dfwebos-app.yml b/libreddit/dfwebos-app.yml new file mode 100644 index 0000000..f409194 --- /dev/null +++ b/libreddit/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: libreddit +category: social +name: LibReddit +version: "0.22.9" +tagline: Альтернативный приватный интерфейс Reddit +description: >- + Libreddit — это сочетание слов «libre» (что означает свободу) и «Reddit». + Libreddit надеется предоставить более простой способ просмотра Reddit без рекламы, трекеров и раздувания контента. + Просматривайте r/bitcoin без отслеживания. + + + - 🚀 Быстро: написано на Rust для невероятно высокой скорости и безопасности памяти. + + - ☁️ Свет: без JavaScript, без рекламы, без отслеживания, без раздутия. + + - 🕵 Частный: все запросы передаются через сервер, включая медиа. + + - 🔒 Безопасность: строгая политика безопасности контента предотвращает запросы браузера к Reddit. +developer: Spikecodes +website: https://spike.codes/ +dependencies: [] +repo: https://github.com/spikecodes/libreddit +support: https://matrix.to/#/#libreddit:kde.org +port: 7420 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Jasper +submission: https://github.com/getumbrel/dfwebos-apps/pull/126 +releaseNotes: "" \ No newline at end of file diff --git a/libreddit/docker-compose.yml b/libreddit/docker-compose.yml new file mode 100644 index 0000000..5b1f721 --- /dev/null +++ b/libreddit/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: libreddit_web_1 + APP_PORT: 7420 + + web: + image: ceramicwhite/libreddit:0.22.9@sha256:00a133da4ae8eb1b7d3ce9af0ca387e2dd929dc6b490736532b5d998a025c362 + restart: on-failure + stop_grace_period: 1m + init: true + user: "1000:1000" + environment: + PORT: 7420 + healthcheck: + disable: true \ No newline at end of file diff --git a/libreoffice/data/config/.gitkeep b/libreoffice/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/libreoffice/dfwebos-app.yml b/libreoffice/dfwebos-app.yml new file mode 100644 index 0000000..4001fdb --- /dev/null +++ b/libreoffice/dfwebos-app.yml @@ -0,0 +1,42 @@ +manifestVersion: 1 +id: libreoffice +category: files +name: LibreOffice +version: "7.6.7" +tagline: "Делайте больше – проще, быстрее, умнее" +description: >- + LibreOffice — это бесплатный и мощный офисный пакет, преемник OpenOffice.org (широко известный как OpenOffice). Его понятный интерфейс и многофункциональные инструменты помогут вам раскрыть свой творческий потенциал и повысить производительность. + + + LibreOffice включает в себя несколько приложений, которые делают его наиболее универсальным бесплатным офисным пакетом с открытым исходным кодом на рынке: Writer (текстовый процессор), Calc (электронные таблицы), Impress (презентации), Draw (векторная графика и блок-схемы), Base (базы данных) и Math (редактирование формул). +developer: The Document Foundation +website: https://www.libreoffice.org/ +dependencies: [] +repo: https://www.libreoffice.org/about-us/source-code/ +support: https://www.libreoffice.org/get-help/community-support/ +port: 5001 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/216 +releaseNotes: >- + Ключевые моменты этого выпуска включают в себя: + - Новый мастер нумерации страниц в меню «Вставка» Writer для простой одноэтапной вставки номеров страниц в верхние и нижние колонтитулы. + — Улучшен раскрывающийся список стилей абзацев на панели инструментов форматирования Writer. + - Улучшены функции обработки цитирования и библиографии в Writer. + — Новая боковая панель «Доступность» в Writer для упрощения проверки доступности документа. + - Улучшено редактирование таблиц и отслеживание изменений в Writer. + - Новые стили рисования фигур и комментариев в Calc. + - Расширенная поддержка числовых форматов и управление таблицами в Calc. + - Улучшены параметры проверки орфографии и корректуры. + - и многое-многое другое! + + + Полный список новых функций и улучшений можно найти на https://wiki.documentfoundation.org/ReleaseNotes/7.6.. \ No newline at end of file diff --git a/libreoffice/docker-compose.yml b/libreoffice/docker-compose.yml new file mode 100644 index 0000000..a4d4b6d --- /dev/null +++ b/libreoffice/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: libreoffice_server_1 + APP_PORT: 3000 + + server: + image: linuxserver/libreoffice:7.6.7@sha256:a62c7f094f2a7ed8145983d04f54ca80d85b557bbdda0f9aa784ccb6267b70e8 + restart: on-failure + stop_grace_period: 1m + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config \ No newline at end of file diff --git a/librephotos/data/cache/.gitkeep b/librephotos/data/cache/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/librephotos/data/cache/.gitkeep @@ -0,0 +1 @@ + diff --git a/librephotos/data/db/.gitkeep b/librephotos/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/librephotos/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/librephotos/data/logs/.gitkeep b/librephotos/data/logs/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/librephotos/data/logs/.gitkeep @@ -0,0 +1 @@ + diff --git a/librephotos/data/photos/.gitkeep b/librephotos/data/photos/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/librephotos/data/photos/.gitkeep @@ -0,0 +1 @@ + diff --git a/librephotos/data/protected_media/.gitkeep b/librephotos/data/protected_media/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/librephotos/data/protected_media/.gitkeep @@ -0,0 +1 @@ + diff --git a/librephotos/dfwebos-app.yml b/librephotos/dfwebos-app.yml new file mode 100644 index 0000000..03e1602 --- /dev/null +++ b/librephotos/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: librephotos +name: LibrePhotos +tagline: Служба управления фотографиями +category: files +version: "2026w14" +port: 8150 +description: >- + 🖼️ LibrePhotos — это приложение для управления фотографиями, которое помогает пользователям с легкостью организовывать и просматривать свои коллекции фотографий и видео. Он предоставляет такие функции, как распознавание лиц, которое автоматически обнаруживает и группирует людей на фотографиях, чтобы упростить поиск. Приложение использует искусственный интеллект для идентификации объектов и сцен на изображениях, позволяя пользователям выполнять семантический поиск на основе содержания их фотографий. + + + Он поддерживает широкий спектр форматов файлов, включая RAW и HEIC, и позволяет автоматически создавать альбомы на основе событий, дат и мест. Пользователи могут просматривать свои медиафайлы в хронологическом порядке с помощью временной шкалы и искать свои фотографии по метаданным, таким как координаты GPS и информация EXIF. + + + Приложение также поддерживает многопользовательский доступ с настраиваемыми разрешениями, позволяя различным пользователям взаимодействовать с библиотекой фотографий в соответствии со своими ролями. Дополнительные функции включают обратное геокодирование для присвоения географических названий местам фотографий и интегрированное мобильное приложение, которое упрощает автономный доступ и синхронизацию. + + + В целом, LibrePhotos стремится предоставить комплексный, интеллектуальный и удобный способ управления большими коллекциями фотографий и видео. + + + ⚠️ Первоначальная настройка может занять 5–10 минут в зависимости от вашего оборудования. Пожалуйста, наберитесь терпения, пока LibrePhotos готовится в фоновом режиме. +developer: LibrePhotos +website: https://docs.librephotos.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3284 +repo: https://github.com/LibrePhotos/librephotos-docker +support: https://github.com/LibrePhotos/librephotos-docker/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Некоторые из ключевых моментов этого выпуска включают в себя: + - Результаты распознавания лиц теперь можно записать обратно в дополнительные файлы XMP, что делает данные маркировки лиц переносимыми и совместимыми с другими фотоинструментами. + - Новая панель мониторинга работоспособности служб на странице администратора, показывающая в реальном времени состояние всех фоновых служб с элементами управления запуском и остановкой. + - Новая карточка журналов сервера в панели администратора позволяет просматривать журналы сервера прямо из интерфейс. + - Новые и обновленные переводы: датский, немецкий, корейский, тамильский, голландский, украинский. + - Исправлен показ видеороликов с движущимися фотографиями. + - Исправлено обнаружение дубликатов лиц с использованием более точного расчета перекрытия. + - Исправлен сбой подписи к фотографиям, когда служба тегов возвращает неожиданный ответ. + - Исправлено уведомление об ошибке входа в систему для отображения правильных сообщений об ошибках. + - Исправление безопасности: Django обновлен до версии 5.2.12. + - Исправление безопасности: пользователям, не являющимся администраторами, запрещено создавать учетные записи суперпользователя посредством регистрации API. + + + Полные примечания к выпуску можно найти по адресу https://github.com/LibrePhotos/librephotos-docker/releases. +dependencies: [] +path: "" +defaultUsername: "admin" +deterministicPassword: true diff --git a/librephotos/docker-compose.yml b/librephotos/docker-compose.yml new file mode 100644 index 0000000..e1a63fa --- /dev/null +++ b/librephotos/docker-compose.yml @@ -0,0 +1,70 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: librephotos_proxy_1 + APP_PORT: 80 + + proxy: + image: reallibrephotos/librephotos-proxy:2026w14@sha256:c88c0a65b50ba7e4f65ccc9aa7d5002df9827cb79edb1f88a3a4c130d0b03be4 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/photos:/data + - ${APP_DATA_DIR}/data/protected_media:/protected_media + expose: + - "80" + depends_on: + - backend + - frontend + + db: + image: pgautoupgrade/pgautoupgrade:17-alpine3.22@sha256:2ec008ae5f0a2e5dd8f4d2475df41cf3ccc9562acf49bd668fcc0c061944b9bf + restart: on-failure + environment: + POSTGRES_USER: librephotos + POSTGRES_PASSWORD: librephotos + POSTGRES_DB: librephotos + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "psql", "-U", "librephotos", "-d", "librephotos", "-c", "SELECT 1;"] + interval: 5s + timeout: 5s + retries: 5 + + frontend: + image: reallibrephotos/librephotos-frontend:2026w14@sha256:e2fb909607b1d9552c033a9432446eadb6b693289af2b4b016da55d50724afcb + restart: on-failure + + backend: + image: reallibrephotos/librephotos:2026w14@sha256:3f4d6fa163bf41f2cd496aca342307fec8b827fe4a7ced1e7773a050ef7a5dca + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/photos:/data + - ${APP_DATA_DIR}/data/protected_media:/protected_media + - ${APP_DATA_DIR}/data/logs:/logs + - ${APP_DATA_DIR}/data/cache:/root/.cache + environment: + SECRET_KEY: ${APP_SEED} + BACKEND_HOST: backend + ADMIN_EMAIL: admin@admin.com + ADMIN_USERNAME: admin + ADMIN_PASSWORD: ${APP_PASSWORD} + DB_BACKEND: postgresql + DB_NAME: librephotos + DB_USER: librephotos + DB_PASS: librephotos + DB_HOST: librephotos_db_1 + DB_PORT: 5432 + MAPBOX_API_KEY: "" + WEB_CONCURRENCY: 2 + HEAVYWEIGHT_PROCESS: 1 + FIXPERMISSIONS: "true" + SKIP_PATTERNS: "" + ALLOW_UPLOAD: "true" + CSRF_TRUSTED_ORIGINS: "" + DEBUG: "0" + depends_on: + db: + condition: service_healthy diff --git a/librespeed/data/config/.gitkeep b/librespeed/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/librespeed/dfwebos-app.yml b/librespeed/dfwebos-app.yml new file mode 100644 index 0000000..737597f --- /dev/null +++ b/librespeed/dfwebos-app.yml @@ -0,0 +1,31 @@ +manifestVersion: 1 +id: librespeed +category: networking +name: LibreSpeed +version: "6.1.0" +tagline: Бесплатный тест скорости с открытым исходным кодом +description: >- + Бесплатный тест скорости с открытым исходным кодом. Измерьте скорость интернета между вашими устройствами и DFWebOS. +releaseNotes: >- + Что нового в этом выпуске: + - Добавлена поддержка переменной среды TAGLINE для настройки слогана, отображаемого в современном интерфейсе. + - Обновлены внутренние ресурсы GeoIP для повышения точности определения местоположения. + + + Полные примечания к выпуску можно найти по адресу: https://github.com/librespeed/speedtest/releases. +developer: LibreSpeed +website: https://librespeed.org/ +dependencies: [] +repo: https://github.com/librespeed/speedtest +support: https://github.com/librespeed/speedtest/issues +port: 3011 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/609 diff --git a/librespeed/docker-compose.yml b/librespeed/docker-compose.yml new file mode 100644 index 0000000..4db4cb8 --- /dev/null +++ b/librespeed/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: librespeed_server_1 + APP_PORT: 8080 + + server: + image: ghcr.io/librespeed/speedtest:6.1.0@sha256:b6b0890047e833158370d59ed5ef289b3e67a58f4a363cd37ef5c09d170d8543 + environment: + PUID: 1000 + PGID: 1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + restart: on-failure diff --git a/librespeed/hooks/post-update b/librespeed/hooks/post-update new file mode 100755 index 0000000..29b11ec --- /dev/null +++ b/librespeed/hooks/post-update @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# перезапустите приложение, чтобы новый номер порта был получен правильно +"${DFWEBOS_ROOT}/scripts/app" restart "${APP_ID}" & \ No newline at end of file diff --git a/libretranslate/data/api_keys/.gitkeep b/libretranslate/data/api_keys/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/libretranslate/data/models/.gitkeep b/libretranslate/data/models/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/libretranslate/dfwebos-app.yml b/libretranslate/dfwebos-app.yml new file mode 100644 index 0000000..dfe860b --- /dev/null +++ b/libretranslate/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1.2 +id: libretranslate +category: ai +name: LibreTranslate +version: "1.6.5" +tagline: Бесплатный машинный перевод с открытым исходным кодом API +description: >- + ⚠️ Уведомление об удалении: приложение LibreTranslate было отключено из-за проблем с товарными знаками. + + ⚠️ После установки этому приложению может потребоваться до 10 минут или больше, в зависимости от вашего оборудования и подключения к Интернету. LibreTranslate должен сначала загрузить около 10 ГБ моделей перевода в фоновом режиме, прежде чем интерфейс станет доступен. Пожалуйста, будьте терпеливы. + + + LibreTranslate — это бесплатная программа машинного перевода с открытым исходным кодом API, полностью размещенная на собственном хостинге. + В отличие от других API, он не полагается на проприетарных поставщиков, таких как Google или Azure, для выполнения переводов. + Вместо этого его механизм перевода основан на библиотеке Argos Translate с открытым исходным кодом. +developer: LibreTranslate Contributors +website: https://libretranslate.com +dependencies: [] +repo: https://github.com/LibreTranslate/LibreTranslate +support: https://github.com/LibreTranslate/LibreTranslate/discussions +port: 7017 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: highghlow +submission: https://github.com/getumbrel/dfwebos-apps/pull/1040 +releaseNotes: >- + Это обновление включает в себя несколько улучшений и новых функций: + - Улучшены переводы на традиционный китайский язык. + - Расширенные возможности определения языка + - Добавлено обнаружение запросов на перевод смайлов. + - Различные улучшения интерфейс и специальных возможностей. + + + Полные примечания к выпуску можно найти по адресу https://github.com/LibreTranslate/LibreTranslate/releases. +disabled: true diff --git a/libretranslate/docker-compose.yml b/libretranslate/docker-compose.yml new file mode 100644 index 0000000..f232726 --- /dev/null +++ b/libretranslate/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: libretranslate_main_1 + APP_PORT: 5000 + PROXY_AUTH_ADD: "false" + main: + image: libretranslate/libretranslate:v1.6.5@sha256:a3518195e4e810ba0d9dd251a851f24918059d757ef3c5cf8e0f881daf4242fc + restart: on-failure + + ## Войти в докер, составить журналы. Это позволяет вам видеть ход загрузки модели при первой установке. + tty: true + healthcheck: + test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py'] + ## Раскомментируйте приведенную выше команду и при необходимости определите аргументы. + # command: --ssl --ga-id MY-GA-ID --req-limit 100 --char-limit 500 + ## Раскомментируйте этот раздел и том libretranslate_api_keys, если вы хотите сделать резервную копию ключей API. + environment: + - LT_API_KEYS=true + - LT_API_KEYS_DB_PATH=/app/db/api_keys.db # Same result as `db/api_keys.db` or `./db/api_keys.db` + ## Раскомментируйте эти переменные и том libretranslate_models, чтобы оптимизировать время загрузки. + - LT_UPDATE_MODELS=true + ## - LT_LOAD_ONLY=en,fr + volumes: + - ${APP_DATA_DIR}/data/api_keys:/app/db + - ${APP_DATA_DIR}/data/models:/home/libretranslate/.local:rw diff --git a/libretranslate/hooks/pre-start b/libretranslate/hooks/pre-start new file mode 100755 index 0000000..8da1399 --- /dev/null +++ b/libretranslate/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Мы вынуждены работать под именем user/group 1032: https://github.com/LibreTranslate/LibreTranslate/blob/f7a35db05b3ac7fcd40489faa7da827b03354faf/docker/Dockerfile#L28-L33. +# Поэтому мы устанавливаем владельца каталогов данных 1032:1032. +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" + +DESIRED_OWNER="1032:1032" + +API_KEYS_DATA_DIR="${APP_DATA_DIR}/api_keys" +MODELS_DATA_DIR="${APP_DATA_DIR}/models" + +set_permissions() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +set_permissions "${API_KEYS_DATA_DIR}" +set_permissions "${MODELS_DATA_DIR}" \ No newline at end of file diff --git a/lidarr/data/config/.gitkeep b/lidarr/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lidarr/dfwebos-app.yml b/lidarr/dfwebos-app.yml new file mode 100644 index 0000000..8604dc9 --- /dev/null +++ b/lidarr/dfwebos-app.yml @@ -0,0 +1,45 @@ +manifestVersion: 1.1 +id: lidarr +category: media +name: Lidarr +version: "3.1.0.4875" +tagline: Выглядит и пахнет как Sonarr, но создан для музыки. +description: >- + Lidarr — менеджер музыкальной коллекции для пользователей Usenet и BitTorrent. + Он может отслеживать несколько RSS-каналов на предмет новых альбомов ваших любимых исполнителей и будет взаимодействовать с клиентами и индексаторами для их захвата, сортировки и переименования. + Его также можно настроить на автоматическое повышение качества существующих файлов в библиотеке, когда становится доступным формат более высокого качества. + + + 🛠️ ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Lidarr на DFWebOS автоматически подключится для загрузки клиентов, установленных из DFWebOS App Store. Выберите из Transmission, qBittorerent и SABnzbd. Просто установите предпочитаемый клиент(ы). + + + Все, что вам нужно сделать, это добавить индексатор, чтобы Lidarr мог искать музыку. Вы можете добавлять индексаторы непосредственно в Lidarr или установить Prowlarr из DFWebOS App Store, чтобы упростить управление индексаторами в нескольких приложениях. + Добавьте свои индексаторы в Prowlarr, и они будут автоматически доступны в Lidarr. +developer: Lidarr +website: https://lidarr.audio/ +dependencies: + - transmission +repo: https://github.com/Lidarr/Lidarr +support: https://github.com/Lidarr/Lidarr/issues +port: 8686 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +releaseNotes: >- + Ключевые улучшения в этом выпуске: + - Добавлена поддержка частных сетей IPv6. + - Исправлена проверка успеха входа в систему qBittorrent API. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Lidarr/Lidarr/releases. +permissions: + - STORAGE_DOWNLOADS +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/commit/60878f278d544b204d8e7c96240c797f43a9b319 diff --git a/lidarr/docker-compose.yml b/lidarr/docker-compose.yml new file mode 100644 index 0000000..c2a4b50 --- /dev/null +++ b/lidarr/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lidarr_server_1 + APP_PORT: 8686 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: linuxserver/lidarr:3.1.0@sha256:f2a186ce04ec5adb133f92a08dd3efbc918fc71b33077426ef099d94350dfa1b + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + restart: on-failure + + mac: + image: getumbrel/media-app-configurator:v1.3.0@sha256:67e75dd9f5a14402b7816119a8e20189bc2465484cea077909d164687e59742b + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + environment: + APP_ID: "lidarr" + APP_URL: "http://lidarr_server_1:8686" + TRANSMISSION_HOST: "transmission_server_1" + TRANSMISSION_PORT: 9091 + ROOT_FOLDER: "/downloads/music" + # дополнительный клиент загрузки qBittorrent + QBITTORRENT_INSTALLED: ${APP_LIDARR_QBITTORRENT_INSTALLED:-"false"} + QBITTORRENT_HOST: "qbittorrent_server_1" + QBITTORRENT_PORT: 8080 + # дополнительный клиент загрузки SABnzbd + SABNZBD_INSTALLED: ${APP_LIDARR_SABNZBD_INSTALLED:-"false"} + SABNZBD_HOST: "sabnzbd_web_1" + SABNZBD_PORT: 8080 + SABNZBD_API_KEY: ${APP_LIDARR_SABNZBD_API_KEY:-""} diff --git a/lidarr/exports.sh b/lidarr/exports.sh new file mode 100644 index 0000000..b60ebfc --- /dev/null +++ b/lidarr/exports.sh @@ -0,0 +1,13 @@ +# Проверьте, установлены ли qBittorrent и SABnzbd. +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +if echo "$installed_apps" | grep --quiet 'qbittorrent'; then + export APP_LIDARR_QBITTORRENT_INSTALLED="true" +fi + +if echo "$installed_apps" | grep --quiet 'sabnzbd'; then + export APP_LIDARR_SABNZBD_INSTALLED="true" + # экспортируйте SABNZBD_API_KEY, который имеет формат: + # api_key = 98e3444f7fab45e592958673bf656g3 + export APP_LIDARR_SABNZBD_API_KEY=$(grep -Po 'api_key = \K.*' "${DFWEBOS_ROOT}/app-data/sabnzbd/data/config/sabnzbd.ini") +fi diff --git a/lidarr/hooks/post-install b/lidarr/hooks/post-install new file mode 100755 index 0000000..3d74291 --- /dev/null +++ b/lidarr/hooks/post-install @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -euo pipefail + +if "${DFWEBOS_ROOT}/scripts/app" ls-installed | grep --quiet 'prowlarr' +then + CONFIG_FILE="${APP_DATA_DIR}/data/config/config.xml" + + # Подождите, пока файл config.xml появится. + # Подождите, пока свойство ключа API () появится в файле конфигурации. + for attempt in $(seq 1 20); do + if [[ -f "${CONFIG_FILE}" ]] && cat "${CONFIG_FILE}" | grep --quiet ''; then + echo "config.xml file exists and xml key exists..." + + # Перезапустите Prowlarr, чтобы автоматически настроить его как приложение. + "${DFWEBOS_ROOT}/scripts/app" restart prowlarr + + exit + fi + sleep 1 + done + + >&2 echo "Error: Failed to locate inside: ${CONFIG_FILE}" + exit 1 +fi \ No newline at end of file diff --git a/lightning-shell/data/.gitkeep b/lightning-shell/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lightning-shell/dfwebos-app.yml b/lightning-shell/dfwebos-app.yml new file mode 100644 index 0000000..3fe7248 --- /dev/null +++ b/lightning-shell/dfwebos-app.yml @@ -0,0 +1,42 @@ +manifestVersion: 1 +id: lightning-shell +category: bitcoin +name: Lightning Shell +version: "0.1.10-build-1" +tagline: Веб-оболочка с набором утилит управления узлами LN +description: > + Уведомление об устаревании: это приложение устарело и поэтому больше не будет получать обновления. + + + Lightning Shell — это веб-оболочка для персонального сервера DFWebOS, которая + включает в себя следующие утилиты: + + + - lncli + + - зарядка + + - Интоп + + - ребаланс-ленд + + - Суэц +developer: Ioan Bizău +website: https://lightningshell.app +dependencies: + - lightning + - bitcoin +repo: https://ibz.github.io/lightning-shell/ +support: https://ibz.github.io/lightning-shell/issues +port: 7681 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: dfwebos +deterministicPassword: true +submitter: Ioan Bizău +submission: https://github.com/getumbrel/umbrel/pull/1146 +releaseNotes: "" +disabled: true \ No newline at end of file diff --git a/lightning-shell/docker-compose.yml b/lightning-shell/docker-compose.yml new file mode 100644 index 0000000..cf70944 --- /dev/null +++ b/lightning-shell/docker-compose.yml @@ -0,0 +1,23 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lightning-shell_web_1 + APP_PORT: 7681 + + web: + image: ghcr.io/ibz/lightning-shell:v0.1.10-buster-slim@sha256:4ea6aafee8ddd092b27850bccef71458d9e382e63d12b159d075bfde328ebef3 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + - ${APP_DATA_DIR}/data:/data + environment: + APP_PASSWORD: "${APP_PASSWORD}" + BITCOIN_IP: "${APP_BITCOIN_NODE_IP}" + BITCOIN_RPC_PORT: "${APP_BITCOIN_RPC_PORT}" + BITCOIN_RPC_USER: "${APP_BITCOIN_RPC_USER}" + BITCOIN_RPC_PASS: "${APP_BITCOIN_RPC_PASS}" + LND_IP: "${APP_LIGHTNING_NODE_IP}" + LND_GRPC_PORT: ${APP_LIGHTNING_NODE_GRPC_PORT} diff --git a/lightning-terminal/data/.gitkeep b/lightning-terminal/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lightning-terminal/dfwebos-app.yml b/lightning-terminal/dfwebos-app.yml new file mode 100644 index 0000000..b445140 --- /dev/null +++ b/lightning-terminal/dfwebos-app.yml @@ -0,0 +1,104 @@ +manifestVersion: 1 +id: lightning-terminal +category: bitcoin +name: Lightning Terminal +version: "0.16.1-alpha" +tagline: Самый простой способ управлять ликвидностью канала +description: >- + Lightning Терминал — это самый простой способ управления входящими и + исходящая ликвидность в сети Lightning. Держите свои каналы открытыми и + средства текут. Он предоставляет визуальный интерфейс для взаимодействия с вашим + каналы и балансы с помощью Loop. + + + 🚨 ВАЖНОЕ НАПОМИНАНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ TAPROOT ASSETS: + + Удаление этого приложения безвозвратно удаляет данные приложения, включая Taproot Assets и средства Bitcoin. + Перед удалением или повторной установкой этого приложения необходимо создать резервную копию папки данных приложения .tapd, чтобы восстановить ресурсы Taproot после переустановки. + Несоблюдение этого требования приведет к безвозвратной потере средств. Мы рекомендуем вам регулярно делать резервные копии. + Следуйте этому руководству для резервного копирования данных Tapd: + https://community.umbrel.com/t/backing-up-taproot-assets-tapd-data-in-lightning-terminal/14360 + + + Зачем использовать пул? + + - Получите прибыль от капитала Lightning + + - Арендуйте канал и начните принимать платежи мгновенно + + - Открывайте каналы за меньшие деньги благодаря пакетной обработке транзакций. + + + Зачем использовать цикл? + + - Добавьте «входящую ликвидность» для получения платежей. + + - Снизьте комиссию за транзакции за счет переработки и повторного использования каналов Lightning. + + - Отправляйте средства пользователям или службам, для которых еще не включен Lightning, и от них. + + - Настраиваемое время ожидания и «пакетирование» позволяют еще больше сэкономить на комиссиях. + + - Пополнение и выгрузка средств из любого количества каналов Lightning в одной транзакции в цепочке. +developer: Lightning Labs +website: https://lightning.engineering +dependencies: + - lightning +repo: https://github.com/lightninglabs/lightning-terminal +support: https://github.com/lightninglabs/lightning-terminal/issues/new +port: 3004 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +deterministicPassword: true +releaseNotes: >- + ⚠️ Обновите приложение Lightning Node до последней версии, доступной в магазине приложений, чтобы обеспечить совместимость с терминалом Lightning. + + + Эта версия терминала Lightning (LiT) поставляется с lnd v0.20.1-beta, Loop v0.31.8-beta, Faraday v0.2.16-alpha, + пул v0.6.6-бета и Tapd v0.7.1. + + + ВАЖНОЕ ПРИМЕЧАНИЕ: Чтобы избежать потери средств, обязательно прочтите + Руководство по эксплуатационной безопасности + (https://github.com/lightninglabs/taproot-assets/blob/main/docs/safety.md) + перед использованием Tapd в основной сети! + + + 🚨 ВАЖНОЕ НАПОМИНАНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ TAPROOT ASSETS: + + Удаление этого приложения безвозвратно удаляет данные приложения, включая Taproot Assets и средства Bitcoin. + Перед удалением или повторной установкой этого приложения необходимо создать резервную копию папки данных приложения .tapd, чтобы восстановить ресурсы Taproot после переустановки. + Несоблюдение этого требования приведет к безвозвратной потере средств. Мы рекомендуем вам регулярно делать резервные копии. + Следуйте этому руководству для резервного копирования данных Tapd: + https://community.umbrel.com/t/backing-up-taproot-assets-tapd-data-in-lightning-terminal/14360 + + + Демон Taproot Assets все еще находится в альфа-состоянии, что означает, что его можно + все еще есть ошибки, и не все желаемые механизмы безопасности и резервного копирования данных были реализованы. + реализовано еще. Релиз в основной сети в основном сигнализирует о том, что не будет + серьезные изменения в будущем и что активы, созданные с помощью версии 0.3.0, будут + совместим с более поздними версиями. + + ## Критические изменения + + Значение конфигурации (taproot-assets.universe.public-access) и командная строка. + флаг (--taproot-assets.universe.public-access) теперь требует значения и больше не является логическим значением. Значение теперь контролирует + можно ли получить доступ к базе данных юниверса узла через RPC и прочитать (значение r), записать (значение w) или + оба (значение rw). Поэтому существующие узлы со значением файла конфигурации Taproot-assets.universe.public-access=true нуждаются в + чтобы изменить значение на Taproot-assets.universe.public-access=rw. Пользователи, указывающие флаг командной строки + --taproot-assets.universe.public-access просто нужно добавить значение, например + --taproot-assets.universe.public-access=rw. + + Мы будем постоянно работать над улучшением пользовательского опыта на основе + обратная связь от сообщества. + + + В этот выпуск входят бета-версия LND v0.20.1, Taproot Assets Daemon v0.7.1, + Loop v0.31.8-бета, Pool v0.6.6-бета и Фарадей v0.2.16-альфа. +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/348 \ No newline at end of file diff --git a/lightning-terminal/docker-compose.yml b/lightning-terminal/docker-compose.yml new file mode 100644 index 0000000..0623d30 --- /dev/null +++ b/lightning-terminal/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lightning-terminal_web_1 + APP_PORT: 3004 + + web: + image: lightninglabs/lightning-terminal:v0.16.1-alpha@sha256:7f8e16d940ee350ff38b2d8e71bda0c512a89822fa62a60097ac7ecc71d660ae + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + HOME: "/data" + APP_PASSWORD: "$APP_PASSWORD" + command: + - --uipassword_env=APP_PASSWORD + - --insecure-httplisten=0.0.0.0:3004 + - --network="$APP_BITCOIN_NETWORK" + - --lnd-mode="remote" + - --remote.lnd.rpcserver=$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT + - --remote.lnd.macaroonpath="/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" + - --remote.lnd.tlscertpath="/lnd/tls.cert" diff --git a/lightning/data/lightning/.gitkeep b/lightning/data/lightning/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lightning/data/lnd/.gitkeep b/lightning/data/lnd/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lightning/dfwebos-app.yml b/lightning/dfwebos-app.yml new file mode 100644 index 0000000..4398e13 --- /dev/null +++ b/lightning/dfwebos-app.yml @@ -0,0 +1,105 @@ +manifestVersion: 1.1 +id: lightning +category: bitcoin +name: Lightning Node +version: "0.20.0-beta" +tagline: Запустите свой личный сетевой узел Lightning +description: >- + Запустите свой личный сетевой узел Lightning и присоединяйтесь к будущему Bitcoin сегодня. + + + Сеть Lightning позволяет проводить сверхдешевые и почти мгновенные транзакции Bitcoin. Запустив узел Lightning, вы можете не только самостоятельно хранить свой Bitcoin на Lightning, но и зарабатывать саты, маршрутизируя платежи в сети. + + + Подключите Zeus Wallet, Zap или любой другой кошелек, поддерживающий lndconnect, для удаленного управления вашим узлом и доступа к нему из любой точки мира. + + + С помощью функции расширенных настроек вы можете взять под свой контроль свой узел и настроить его в соответствии со своими потребностями. Персонализируйте его, задав имя, включите более крупные каналы, ограничьте размеры каналов, установите плату за маршрутизацию, оптимизируйте стратегию маршрутизации, добавьте службы сторожевой башни, настройте ее производительность и многое другое. + + + При поддержке ЛНД. + + + Официальное приложение от DFWebOS. +releaseNotes: >- + Это обновление включает последнюю версию LND (v0.20.0-бета). + + + Полные примечания к выпуску LND можно найти по адресу https://github.com/lightningnetwork/lnd/releases/tag/v0.20.0-beta. +developer: DFWebOS +website: https://dfwebos.com +dependencies: + - bitcoin +repo: https://github.com/getumbrel/umbrel-lightning +support: https://community.getumbrel.com/c/bitcoin-and-lightning +port: 2101 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultPassword: "" +widgets: + - id: "bitcoin-wallet" + type: "text-with-buttons" + refresh: "5s" + endpoint: "app:3006/v1/lnd/widgets/bitcoin-wallet" + link: "" + example: + type: "text-with-buttons" + link: "" + title: "Bitcoin Wallet" + text: "1,845,894" + subtext: "sats" + buttons: + - text: "Withdraw" + icon: "arrow-up-right" + link: "?action=send-bitcoin" + - text: "Deposit" + icon: "arrow-down-right" + link: "?action=receive-bitcoin" + - id: "lightning-wallet" + type: "text-with-buttons" + refresh: "2s" + endpoint: "app:3006/v1/lnd/widgets/lightning-wallet" + link: "" + example: + type: "text-with-buttons" + link: "" + title: "Lightning Wallet" + text: "762,248" + subtext: "sats" + buttons: + - text: "Send" + icon: "arrow-up-right" + link: "?action=send-lightning" + - text: "Receive" + icon: "arrow-down-right" + link: "?action=receive-lightning" + - id: "lightning-stats" + type: "four-stats" + refresh: "5s" + endpoint: "app:3006/v1/lnd/widgets/lightning-stats" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "Connections" + text: "5" + subtext: "peers" + - title: "Active channels" + text: "3" + subtext: "channels" + - title: "Max send" + text: "90K" + subtext: "sats" + - title: "Max receive" + text: "45K" + subtext: "sats" +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/commit/576ecd2bef8d625abceed0f67ec9c487da9b2b1b +backupIgnore: + - data/graph/mainnet/channel.db diff --git a/lightning/docker-compose.yml b/lightning/docker-compose.yml new file mode 100644 index 0000000..19bc338 --- /dev/null +++ b/lightning/docker-compose.yml @@ -0,0 +1,69 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_LIGHTNING_IP + APP_PORT: 3006 + + app: + image: getumbrel/umbrel-lightning:v1.2.1@sha256:41d5e7388a15443103ec0eae583a426dcf04bd371a1371fdeea8ccae99c01972 + restart: on-failure + volumes: + - "${APP_LIGHTNING_NODE_DATA_DIR}:/data/.lnd" + - "${APP_DATA_DIR}/data/lightning:/data" + environment: + PORT: "3006" + TOR_PROXY_IP: "${TOR_PROXY_IP}" + TOR_PROXY_PORT: "${TOR_PROXY_PORT}" + BITCOIN_HOST: "${APP_BITCOIN_NODE_IP}" + RPC_PORT: "${APP_BITCOIN_RPC_PORT}" + RPC_USER: "${APP_BITCOIN_RPC_USER}" + RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}" + LND_NETWORK: "${APP_BITCOIN_NETWORK}" + LND_HOST: "${APP_LIGHTNING_NODE_IP}" + LND_REST_HIDDEN_SERVICE: "${APP_LIGHTNING_REST_HIDDEN_SERVICE}" + LND_GRPC_HIDDEN_SERVICE: "${APP_LIGHTNING_GRPC_HIDDEN_SERVICE}" + TLS_FILE: "/data/.lnd/tls.cert" + MACAROON_DIR: "/data/.lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/" + CHANNEL_BACKUP_FILE: "/data/.lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/channel.backup" + BACKUP_STATUS_FILE: "/statuses/backup-status.json" + JSON_STORE_FILE: "/data/state.json" + JSON_SETTINGS_FILE: "/data/settings.json" + DFWEBOS_LND_CONF_FILEPATH: "/data/.lnd/dfwebos-lnd.conf" + LND_CONF_FILEPATH: "/data/.lnd/lnd.conf" + LND_INITIALIZE_WITH_TOR_ONLY: "${LND_INITIALIZE_WITH_TOR_ONLY:-unset}" + DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}" + EXPLORER_PORT: "${APP_MEMPOOL_PORT}" + EXPLORER_HIDDEN_SERVICE: "${APP_MEMPOOL_HIDDEN_SERVICE}" + networks: + default: + ipv4_address: $APP_LIGHTNING_IP + + lnd: + hostname: "${DEVICE_DOMAIN_NAME}" # Needed so LND can generate a valid cert + image: lightninglabs/lnd:v0.20.0-beta@sha256:4b33e89ce7d2db02bbf3c10649e567c36d175075921c97afc3bdfa36f2e7518a + command: "${APP_LIGHTNING_COMMAND}" + user: 1000:1000 + restart: unless-stopped + ports: + - "$APP_LIGHTNING_NODE_PORT:$APP_LIGHTNING_NODE_PORT" + - "$APP_LIGHTNING_NODE_REST_PORT:$APP_LIGHTNING_NODE_REST_PORT" + - "$APP_LIGHTNING_NODE_GRPC_PORT:$APP_LIGHTNING_NODE_GRPC_PORT" + volumes: + - "${APP_LIGHTNING_NODE_DATA_DIR}:/data/.lnd" + environment: + HOME: /data + networks: + default: + ipv4_address: $APP_LIGHTNING_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/lightning/exports.sh b/lightning/exports.sh new file mode 100644 index 0000000..64d98dc --- /dev/null +++ b/lightning/exports.sh @@ -0,0 +1,90 @@ +export APP_LIGHTNING_IP="10.21.22.3" +export APP_LIGHTNING_NODE_IP="10.21.21.9" + +export APP_LIGHTNING_NODE_PORT="9735" +export APP_LIGHTNING_NODE_GRPC_PORT="10009" +export APP_LIGHTNING_NODE_REST_PORT="8080" +export APP_LIGHTNING_NODE_DATA_DIR="${EXPORTS_APP_DIR}/data/lnd" + +BIN_ARGS=() +BIN_ARGS+=( "--configfile=/data/.lnd/umbrel-lnd.conf" ) +# [Параметры приложения] +BIN_ARGS+=( "--listen=0.0.0.0:${APP_LIGHTNING_NODE_PORT}" ) +BIN_ARGS+=( "--rpclisten=0.0.0.0:${APP_LIGHTNING_NODE_GRPC_PORT}" ) +BIN_ARGS+=( "--restlisten=0.0.0.0:${APP_LIGHTNING_NODE_REST_PORT}" ) + +# [Биткойн] +BIN_ARGS+=( "--bitcoin.active" ) +if [[ "${APP_BITCOIN_NETWORK}" == "mainnet" ]]; then + BIN_ARGS+=( "--bitcoin.mainnet" ) +elif [[ "${APP_BITCOIN_NETWORK}" == "testnet" ]]; then + BIN_ARGS+=( "--bitcoin.testnet" ) +elif [[ "${APP_BITCOIN_NETWORK}" == "testnet4" ]]; then + BIN_ARGS+=( "--bitcoin.testnet4" ) +elif [[ "${APP_BITCOIN_NETWORK}" == "signet" ]]; then + BIN_ARGS+=( "--bitcoin.signet" ) +elif [[ "${APP_BITCOIN_NETWORK}" == "regtest" ]]; then + BIN_ARGS+=( "--bitcoin.regtest" ) +else + echo "Warning (${EXPORTS_APP_ID}): Bitcoin Network '${APP_BITCOIN_NETWORK}' is not supported" +fi +BIN_ARGS+=( "--bitcoin.node=bitcoind" ) + +# [Биткоинд] +BIN_ARGS+=( "--bitcoind.rpchost=${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}" ) +BIN_ARGS+=( "--bitcoind.rpcuser=${APP_BITCOIN_RPC_USER}" ) +BIN_ARGS+=( "--bitcoind.rpcpass=${APP_BITCOIN_RPC_PASS}" ) +BIN_ARGS+=( "--bitcoind.zmqpubrawblock=tcp://${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_ZMQ_RAWBLOCK_PORT}" ) +BIN_ARGS+=( "--bitcoind.zmqpubrawtx=tcp://${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_ZMQ_RAWTX_PORT}" ) + +# [тор] +BIN_ARGS+=( "--tor.active" ) +BIN_ARGS+=( "--tor.v3" ) +BIN_ARGS+=( "--tor.control=${TOR_PROXY_IP}:29051" ) +BIN_ARGS+=( "--tor.socks=${TOR_PROXY_IP}:${TOR_PROXY_PORT}" ) +BIN_ARGS+=( "--tor.targetipaddress=${APP_LIGHTNING_NODE_IP}" ) +BIN_ARGS+=( "--tor.password=${TOR_PASSWORD}" ) + +export APP_LIGHTNING_COMMAND=$(IFS=" "; echo "${BIN_ARGS[@]}") + +# эхо "${APP_LIGHTNING_COMMAND}" + +rest_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rest/hostname" +grpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-grpc/hostname" +export APP_LIGHTNING_REST_HIDDEN_SERVICE="$(cat "${rest_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" +export APP_LIGHTNING_GRPC_HIDDEN_SERVICE="$(cat "${grpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" + +{ + # Перенесите настройки гибридного режима для обновлений приложений иначе, чем для новых установок. + LIGHTNING_DATA_DIR="${EXPORTS_APP_DIR}/data/lightning" + LND_DATA_DIR="${EXPORTS_APP_DIR}/data/lnd" + + IS_POST_HYBRID_MODE_INSTALL_FILE_PATH="${LIGHTNING_DATA_DIR}/IS_POST_HYBRID_MODE_INSTALL" + + # Если каталога lnd/data не существует, мы записываем файл, указывающий, что это новая установка. + # Это позволяет обойти проблему, связанную с предварительным запуском lnd-контейнера при создании Tor HS. + # и создаем каталог lnd/data. + if [[ ! -d "${LND_DATA_DIR}/data" ]]; then + touch "${IS_POST_HYBRID_MODE_INSTALL_FILE_PATH}" + fi + + APP_CONFIG_EXISTS="false" + APP_HYBRID_MODE_SETTING_EXISTS="false" + if [[ -f "${LIGHTNING_DATA_DIR}/settings.json" ]]; then + APP_CONFIG_EXISTS="true" + if jq -e '.lnd | has("tor.skip-proxy-for-clearnet-targets")' "${LIGHTNING_DATA_DIR}/settings.json" >/dev/null 2>&1; then + APP_HYBRID_MODE_SETTING_EXISTS="true" + fi + fi + + # Нам нужно только сохранить конфигурацию только для Tor для существующих установок до 1.2.0. + if [[ ! -f "${IS_POST_HYBRID_MODE_INSTALL_FILE_PATH}" ]]; then + if [[ "${APP_CONFIG_EXISTS}" = "false" ]]; then + # Если settings.json вообще не существует, это обновление версии приложения до Advanced-Settings, поэтому мы сохраняем существующую конфигурацию только для Tor. + export LND_INITIALIZE_WITH_TOR_ONLY="true" + elif [[ "${APP_CONFIG_EXISTS}" = "true" ]] && [[ "${APP_HYBRID_MODE_SETTING_EXISTS}" = "false" ]]; then + # Если settings.json существует, но гибридный режим еще не настроен, то это версия приложения до версии 1.2.0, поэтому мы по-прежнему сохраняем существующую конфигурацию только для Tor. + export LND_INITIALIZE_WITH_TOR_ONLY="true" + fi + fi +} || true \ No newline at end of file diff --git a/lightning/hooks/pre-start b/lightning/hooks/pre-start new file mode 100755 index 0000000..057fe51 --- /dev/null +++ b/lightning/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку Lightning до тех пор, пока не будут готовы скрытые службы Tor GRPC и REST. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-grpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach lnd +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/lightning/torrc.template b/lightning/torrc.template new file mode 100644 index 0000000..7633a10 --- /dev/null +++ b/lightning/torrc.template @@ -0,0 +1,7 @@ +# LND REST Скрытая служба +HiddenServiceDir /data/app-$APP_ID-rest +HiddenServicePort $APP_LIGHTNING_NODE_REST_PORT $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_REST_PORT + +# LND Скрытая служба gRPC +HiddenServiceDir /data/app-$APP_ID-grpc +HiddenServicePort $APP_LIGHTNING_NODE_GRPC_PORT $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT \ No newline at end of file diff --git a/linkstack/data/.gitkeep b/linkstack/data/.gitkeep new file mode 100644 index 0000000..d3f5a12 --- /dev/null +++ b/linkstack/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/linkstack/dfwebos-app.yml b/linkstack/dfwebos-app.yml new file mode 100644 index 0000000..93538dd --- /dev/null +++ b/linkstack/dfwebos-app.yml @@ -0,0 +1,45 @@ +manifestVersion: 1 +id: linkstack +name: LinkStack +tagline: Легко настраиваемая платформа для обмена ссылками +category: files +version: "4.2.3" +port: 8190 +description: >- + LinkStack — это уникальная платформа, предоставляющая эффективное решение для управления ссылками и обмена ими в Интернете. Наша платформа предлагает веб-сайт, аналогичный Linktree, который позволяет пользователям преодолеть ограничение, заключающееся в возможности добавления только одной ссылки на платформы социальных сетей. + + + С помощью LinkStack пользователи могут легко ссылаться на свою собственную страницу и предоставлять своим подписчикам доступ ко всем необходимым ссылкам в одном удобном месте. Что отличает LinkStack от других платформ управления ссылками, так это его гибкость, которая позволяет пользователям размещать свои ссылки на собственном веб-сервере или у провайдера веб-хостинга. Это предоставляет пользователям полный контроль над своим присутствием в Интернете и гарантирует легкий доступ к их ссылкам. + + + Кроме того, LinkStack позволяет другим пользователям регистрироваться и создавать свои собственные ссылки, что делает его идеальным решением для предприятий и организаций, желающих управлять несколькими ссылками. Благодаря нашей удобной панели администратора управлять ссылками других пользователей и получать к ним доступ очень легко. + + + ☁️ Вам нужно будет открыть доступ к приложению Linkstack в Интернете, чтобы поделиться своей веб-страницей Linkstack с другими. Самый простой способ сделать это — использовать приложение Cloudflare Tunnel из DFWebOS App Store и предоставить доступ к приложению Linkstack, используя свой собственный домен. + + + Почему стоит выбрать LinkStack? + + + 💡 Богатые возможности: LinkStack предлагает больше функций, чем любое другое аналогичное решение. + + + ⚙️ Простота настройки: LinkStack удобен для пользователя и его проще настроить по сравнению с аналогичными веб-приложениями. + + + 👐 Открытый исходный код: LinkStack можно использовать, распространять и изменять бесплатно. Исходный код доступен на GitHub (https://github.com/LinkStackOrg). +developer: Julian Prieber +website: https://linkstack.org/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/1537 +repo: https://github.com/LinkStackOrg/LinkStack +support: https://github.com/LinkStackOrg/LinkStack/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: "" +dependencies: [] +path: "" diff --git a/linkstack/docker-compose.yml b/linkstack/docker-compose.yml new file mode 100644 index 0000000..8365d65 --- /dev/null +++ b/linkstack/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: linkstack_linkstack_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + linkstack: + hostname: 'linkstack' + # Это изображение не имеет тегов, специфичных для версии. + image: 'linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae' + restart: on-failure + # Это изображение не поддерживает пользовательского пользователя. Должно быть, это Apache (100:101) + # user: '1000:1000' + volumes: + - linkstack_data:/htdocs + +# https://docs.linkstack.org/docker/setup/#docker-bind-mounts +# Это позволяет обойти требование загрузить последнюю версию linkstack и поместить ее в каталог, смонтированный с помощью привязки, чтобы использовать монтирование с привязкой. +volumes: + linkstack_data: + driver: local + driver_opts: + o: bind + type: none + device: ${APP_DATA_DIR}/data diff --git a/linkwarden/data/app/.gitkeep b/linkwarden/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/linkwarden/data/db/.gitkeep b/linkwarden/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/linkwarden/dfwebos-app.yml b/linkwarden/dfwebos-app.yml new file mode 100644 index 0000000..6e03f68 --- /dev/null +++ b/linkwarden/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1 +id: linkwarden +name: Linkwarden +tagline: Сохранение закладок для отдельных лиц и команд +category: social +version: "2.14.1" +port: 8233 +description: >- + 📚 Linkwarden — это автономный менеджер закладок с открытым исходным кодом для совместной работы, позволяющий собирать, систематизировать и архивировать веб-страницы. + + + 🛜 Цель состоит в том, чтобы организовать полезные веб-страницы и статьи, которые вы найдете в Интернете, в одном месте, а поскольку полезные веб-страницы могут исчезнуть (см. неизбежность гниения ссылок), Linkwarden также сохраняет копию каждой веб-страницы в виде снимка экрана и PDF, обеспечивая доступность, даже если исходный контент больше не доступен. + + + 👥 Кроме того, Linkwarden разработан с учетом совместной работы, позволяя делиться ссылками с общественностью и/или позволяя нескольким пользователям беспрепятственно работать вместе. +developer: Linkwarden +website: https://linkwarden.app +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/1817 +repo: https://github.com/linkwarden/linkwarden +support: https://discord.gg/CtuYV47nuJ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: >- + Это обновление включает в себя: + - Добавлена поддержка обслуживания сохраненных HTML-архивов с отдельного общедоступного имени хоста для изоляции ненадежных заархивированных страниц от вашего основного приложения Linkwarden. + - Улучшен опыт выбора тегов. + - Исправлены ошибки + + + Полные примечания к выпуску можно найти по адресу https://github.com/linkwarden/linkwarden/releases. +path: "" diff --git a/linkwarden/docker-compose.yml b/linkwarden/docker-compose.yml new file mode 100644 index 0000000..d58aa46 --- /dev/null +++ b/linkwarden/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: linkwarden_app_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + postgres: + image: postgres:16-alpine@sha256:0366402213df5db03c47ff80bcc697e92c8be0c213d03c941df1fc42d1ba9560 + environment: + - POSTGRES_PASSWORD=linkwarden + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 + app: + image: ghcr.io/linkwarden/linkwarden:v2.14.1@sha256:31cf4bd2a2e111991fa5c9de03174c8698869c83722105c6ce529e4c911e6861 + environment: + - DATABASE_URL=postgresql://postgres:linkwarden@linkwarden_postgres_1:5432/postgres + - NEXTAUTH_URL=http://${DEVICE_DOMAIN_NAME}:8233/api/v1/auth + - NEXTAUTH_SECRET=linkwarden + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/app:/data/data + depends_on: + postgres: + condition: service_healthy diff --git a/llama-gpt/dfwebos-app.yml b/llama-gpt/dfwebos-app.yml new file mode 100644 index 0000000..3204c30 --- /dev/null +++ b/llama-gpt/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1.1 +id: llama-gpt +category: ai +name: LlamaGPT +version: "1.0.0" +tagline: Самостоятельный автономный чат-бот, похожий на ChatGPT, на базе Llama 2. +description: >- + LlamaGPT — это автономный, автономный и частный чат-бот, который обеспечивает работу, аналогичную ChatGPT, без передачи данных с вашего устройства. + + + Примечание. Размер загрузки LlamaGPT составляет около 5,5 ГБ. В зависимости от скорости вашего интернета установка может занять некоторое время. + + + LlamaGPT потребляет около 5 ГБ ОЗУ. В результате он не подходит для пользователей, использующих DFWebOS на Raspberry Pi 4 с 4 ГБ ОЗУ. Для наилучшего пользовательского опыта рекомендуется иметь как минимум 8 ГБ ОЗУ. + + + LlamaGPT оптимизирован для DFWebOS Home и генерирует слова со скоростью ~3 слова в секунду. На Raspberry Pi 4 с 8 ГБ ОЗУ он генерирует слова со скоростью ~ 1 слово/сек. Производительность может варьироваться в зависимости от того, какие другие приложения установлены на вашем DFWebOS. + + + LlamaGPT, основанный на современной языковой модели Nous Hermes Llama 2 7B, точно настроен на более чем 300 000 инструкций, обеспечивая более длительные ответы и более низкий уровень галлюцинаций. + + + LlamaGPT стал возможен благодаря невероятной работе с открытым исходным кодом различных разработчиков и команд. Мы выражаем благодарность Mckay Wrigley за создание чат-бота интерфейс, Георгию Герганову за реализацию llama.cpp, Андрею за разработку привязок Python для llama.cpp, NousResearch за тонкую настройку модели, Тому Джоббинсу за квантование модели и Meta за выпуск Llama 2 под разрешительной лицензией. + + + Официальное приложение от DFWebOS. +releaseNotes: "" +developer: DFWebOS +website: https://dfwebos.com +dependencies: [] +repo: https://github.com/getumbrel/llama-gpt +support: https://community.umbrel.com +port: 1234 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +optimizedForDFWebOSHome: true +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/727 diff --git a/llama-gpt/docker-compose.yml b/llama-gpt/docker-compose.yml new file mode 100644 index 0000000..45033cb --- /dev/null +++ b/llama-gpt/docker-compose.yml @@ -0,0 +1,23 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: llama-gpt-ui + APP_PORT: 3000 + + llama-gpt-api: + image: ghcr.io/getumbrel/llama-gpt-api:1.0.1@sha256:57a4323a0254732a45841f447ae4ef733df6510413b692a0589c0e2b68d9ef51 + restart: on-failure + environment: + MODEL: '/models/llama-2-7b-chat.bin' + + llama-gpt-ui: + image: ghcr.io/getumbrel/llama-gpt-ui:1.0.1@sha256:1ad8a3463e7971b77e6deda8b6a230a42fbe283899d88e12448603e474fedaef + restart: on-failure + environment: + - 'OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX' + - 'OPENAI_API_HOST=http://llama-gpt-api:8000' + - 'DEFAULT_MODEL=/models/llama-2-7b-chat.bin' + - 'WAIT_HOSTS=llama-gpt-api:8000' + - 'WAIT_TIMEOUT=600' diff --git a/llama-gpt/hooks/pre-install b/llama-gpt/hooks/pre-install new file mode 100755 index 0000000..4572eef --- /dev/null +++ b/llama-gpt/hooks/pre-install @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Требования +REQUIRED_SPACE_GB="10" +REQUIRED_MEMORY_GB="6" + +# Нам нужно завершить родительский процесс установки, потому что выход из этого скрипта +# убивает только текущий процесс-перехватчик, а не родительский. Пользователь не получит +# любая визуальная обратная связь, если мы выйдем, но это лучше, чем позволить им убить +# их система. +kill_app_install() { + pkill --full "app install llama-gpt" + exit 1 +} + +# Проверить доступное место +REQUIRED_SPACE_KB=$((REQUIRED_SPACE_GB * 1024 * 1024)) +DFWEBOS_ROOT="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../../..)" +AVAILABLE_SPACE_KB=$(df "${DFWEBOS_ROOT}" | tail -1 | awk '{print $4}') +if (( AVAILABLE_SPACE_KB < REQUIRED_SPACE_KB )) +then + echo "Not enough available storage space to install LlamaGPT. Exiting." + kill_app_install +fi + +# Проверьте доступную память +REQUIRED_MEMORY_KB=$((REQUIRED_MEMORY_GB * 1024 * 1024)) +TOTAL_MEMORY_KB=$(free | grep '^Mem' | awk '{print $2}') +if (( TOTAL_MEMORY_KB < REQUIRED_MEMORY_KB )) +then + echo "Not enough system memory to install LlamaGPT. Exiting." + kill_app_install +fi diff --git a/ln-visualizer/dfwebos-app.yml b/ln-visualizer/dfwebos-app.yml new file mode 100644 index 0000000..6d1fc3d --- /dev/null +++ b/ln-visualizer/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1 +id: ln-visualizer +category: bitcoin +name: LnVisualizer +version: "0.0.28" +releaseNotes: >- + Что изменилось + + - Функция/таблица + + - начальная работа по поиску каналов в построенном графике + + - Включить поиск по таблице + + - Узлы объектов/сфер v2 и ортогональная камера + + - отключить сервер статуса модуля + + Полные примечания к выпуску здесь: https://github.com/MaxKotlan/LN-Visualizer/releases/tag/v0.0.28. +tagline: Просмотрите сеть Lightning с точки зрения вашего узла. +description: "" +developer: Max Kotlan +website: https://lnvisualizer.com +dependencies: + - lightning +repo: https://github.com/MaxKotlan/LN-Visualizer +support: https://github.com/MaxKotlan/LN-Visualizer/issues +port: 5646 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +submitter: Max Kotlan +submission: https://github.com/getumbrel/dfwebos-apps/pull/19 diff --git a/ln-visualizer/docker-compose.yml b/ln-visualizer/docker-compose.yml new file mode 100644 index 0000000..60eb1b2 --- /dev/null +++ b/ln-visualizer/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: ln-visualizer_web_1 + APP_PORT: 80 + + web: + image: maxkotlan/ln-visualizer-web:v0.0.28@sha256:d207e2e474453090d8c0ebec568c94536f79c9ae0d691818068861bbc2abb25d + init: true + restart: on-failure + stop_grace_period: 1m + environment: + LN_VISUALIZER_API_URL: "http://ln-visualizer_api_1:5647" + + api: + image: maxkotlan/ln-visualizer-api:v0.0.28@sha256:7724b02e0b5f91a8a88559458434731d9767d0893982b8a013d39cb24f8b9d94 + init: true + restart: on-failure + stop_grace_period: 1m + user: 1000:1000 + volumes: + - "${APP_LIGHTNING_NODE_DATA_DIR}/tls.cert:/lnd/tls.cert:ro" + - "${APP_LIGHTNING_NODE_DATA_DIR}/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/readonly.macaroon:/lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/readonly.macaroon:ro" + environment: + LND_CERT_FILE: "/lnd/tls.cert" + LND_MACAROON_FILE: "/lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/readonly.macaroon" + LND_SOCKET: "${APP_LIGHTNING_NODE_IP}:${APP_LIGHTNING_NODE_GRPC_PORT}" diff --git a/lnbits-holesail-proxy/data/.gitkeep b/lnbits-holesail-proxy/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lnbits-holesail-proxy/dfwebos-app.yml b/lnbits-holesail-proxy/dfwebos-app.yml new file mode 100644 index 0000000..70134b0 --- /dev/null +++ b/lnbits-holesail-proxy/dfwebos-app.yml @@ -0,0 +1,32 @@ +manifestVersion: 1 +id: lnbits-holesail-proxy +category: bitcoin +name: LNbits Holesail Proxy +version: "1.0.7" +tagline: Прокси-сервер Holesail для удаленного подключения к вашим LNbits +description: >- + Запускаем DFWebOS за домашним маршрутизатором (NAT) без общедоступного домена? + + TOR слишком медленный? + + Это приложение позволит вам (и вашим друзьям) удаленно подключаться к вашим LNbits с помощью Holesail — мгновенного P2P-туннеля для обхода любых ограничений сети, брандмауэра и NAT. + + + Примечание. Туннель работает только тогда, когда клиентская часть работает за пределами локальной сети (это основной вариант использования этого приложения). +releaseNotes: "" +developer: oren-z0 +website: https://github.com/oren-z0/holesail-server-manager +dependencies: + - lnbits +repo: https://github.com/oren-z0/holesail-server-manager +support: https://github.com/oren-z0/holesail-server-manager/discussions +port: 3107 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: oren-z0 +submission: https://github.com/getumbrel/dfwebos-apps/pull/2007 diff --git a/lnbits-holesail-proxy/docker-compose.yml b/lnbits-holesail-proxy/docker-compose.yml new file mode 100644 index 0000000..874954e --- /dev/null +++ b/lnbits-holesail-proxy/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lnbits-holesail-proxy_web_1 + APP_PORT: 3107 + web: + image: orenz0/holesail-server-manager:v1.0.7@sha256:23782c148dd09ff20ab70d06fc116afd7d8adc6e5679c682c5f944ef1d305b9b + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + HSM_DATA_FILE: /data/hsm.json + HSM_HOST: 0.0.0.0 + HSM_PORT: 3107 + HSM_TITLE: LNbits Holesail Proxy + HSM_TARGET_ADDRESS: lnbits_web_1 + HSM_TARGET_PORT: 3007 diff --git a/lnbits/data/.gitkeep b/lnbits/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lnbits/dfwebos-app.yml b/lnbits/dfwebos-app.yml new file mode 100644 index 0000000..713afd9 --- /dev/null +++ b/lnbits/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: lnbits +category: bitcoin +name: LNbits +version: "1.5.3" +tagline: Многопользовательская система управления кошельком +description: >- + LNbits — это простая многопользовательская система с учетными записями для Lightning. + Сеть, которую можно использовать для создания отдельных кошельков Lightning для друзей. + и члены семьи. Вы также можете создать несколько учетных записей для себя, чтобы + снизить риск раскрытия приложений всего вашего баланса с помощью уникального API + ключи для каждого кошелька. + + + LNbits поставляется с инструментами, помогающими управлять средствами, такими как таблица транзакций, линейный график расходов, экспорт в CSV и многое другое. Он предоставляет расширяемую платформу для расширения функциональных возможностей сети Lightning с помощью платформы расширения LNbits, а также может использоваться в качестве резервного кошелька для схемы LNURL. +developer: LNbits +website: https://github.com/lnbits/lnbits-legend +dependencies: + - lightning +repo: https://github.com/lnbits/lnbits-legend +support: https://t.me/lnbits +port: 3007 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Этот выпуск включает незначительное улучшение по сравнению с первой установкой. + + + Ключевые моменты включают в себя: + - Добавлена возможность сбросить токен первой установки. + + + ⚠️ Возможно, вам придется очистить кеш браузера (локальное хранилище) после обновления, чтобы увидеть любые изменения интерфейс. + + + Полные примечания к выпуску доступны по адресу https://github.com/lnbits/lnbits/releases. +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/372 diff --git a/lnbits/docker-compose.yml b/lnbits/docker-compose.yml new file mode 100644 index 0000000..104a144 --- /dev/null +++ b/lnbits/docker-compose.yml @@ -0,0 +1,35 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lnbits_web_1 + APP_PORT: 3007 + PROXY_AUTH_ADD: "false" + + web: + image: lnbits/lnbits:v1.5.3@sha256:2d4ab0739db02f1659cb50c1901faf7ad37e066d5528075804945305d6009060 + init: true + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + # Глобальный + LNBITS_HOST: "0.0.0.0" + LNBITS_PORT: 3007 + LNBITS_DATA_FOLDER: "/data" + + # ЛНД + LNBITS_BACKEND_WALLET_CLASS: LndRestWallet + LND_REST_ENDPOINT: https://$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_REST_PORT/ + LND_REST_CERT: "/lnd/tls.cert" + LND_REST_MACAROON: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" + + # Приложение + LNBITS_SITE_TITLE: "LNbits - DFWebOS" + LNBITS_DEFAULT_WALLET_NAME: "LNbits wallet" + LNBITS_DISABLED_EXTENSIONS: "amilk" + LNBITS_ADMIN_EXTENSIONS: "ngrok" + LNBITS_ADMIN_UI: "true" diff --git a/lndboss/.bosgui/.env b/lndboss/.bosgui/.env new file mode 100644 index 0000000..e69de29 diff --git a/lndboss/dfwebos-app.yml b/lndboss/dfwebos-app.yml new file mode 100644 index 0000000..abddb4d --- /dev/null +++ b/lndboss/dfwebos-app.yml @@ -0,0 +1,44 @@ +manifestVersion: 1 +id: lndboss +category: bitcoin +name: LndBoss +version: "2.19.1" +tagline: Графический интерфейс для BalanceOfSatoshis +description: >- + ⚠️ Уведомление об устаревании: это приложение устарело и поэтому больше не будет получать никаких обновлений. + + + LndBoss — это графический интерфейс для BalanceOfSatoshis. + Это инструмент, который позволяет легко запускать ваши любимые + bos дает команды и помогает управлять вашим узлом Lightning. + Вы можете запланировать задания для автоматической ребалансировки каналов, + автоматическое обновление комиссий на основе политик, открытие сбалансированных/групповых каналов с другими узлами, + интеграция с amboss для публикации обновлений и многое другое. +developer: Nitesh Balusu +website: https://github.com/niteshbalusu11 +dependencies: + - lightning +repo: https://github.com/niteshbalusu11/lndboss +support: https://t.me/lndboss +port: 8055 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: > + - 2.19.1 (23.06.2023) + Исправлены проблемы, из-за которых маршрутизатор приложений не работал в nextjs 13. + Исправлены проблемы, из-за которых пакетное открытие не удавалось из-за критического изменения зависимости. + + - 2.18.1 (10 апреля 2023 г.) + Зависимость Bump bos, которая исправляет ошибку в команде отправки при отправке ключей на необъявленные узлы. + Перейти на nextjs13 + + - 2.18.0 (10 марта 2023 г.) + Добавлены опции для вызова команды: getChainAddresses, getBlock,verifyChainAddressMessage,signChainAddressMessage. +submitter: Nitesh Balusu +submission: https://github.com/getumbrel/dfwebos-apps/pull/65 +disabled: true \ No newline at end of file diff --git a/lndboss/docker-compose.yml b/lndboss/docker-compose.yml new file mode 100644 index 0000000..5fa83cd --- /dev/null +++ b/lndboss/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lndboss_web_1 + APP_PORT: 8055 + + web: + image: niteshbalusu/lndboss:2.19.1@sha256:2dddce26e0ffcce049896cf8f813740f1c8cdea85d77b8445cafa296c4d7d7f9 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/home/node/.lnd:ro + - ${APP_DATA_DIR}/.bosgui:/home/node/.bosgui + environment: + BOS_DATA_PATH: "/home/node/.bosgui" + NODE_ENV: "production" + PORT: 8055 + BOS_DEFAULT_LND_SOCKET: $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT diff --git a/lndg/data/db/.gitkeep b/lndg/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lndg/data/logs/lndg-controller.log b/lndg/data/logs/lndg-controller.log new file mode 100644 index 0000000..e69de29 diff --git a/lndg/dfwebos-app.yml b/lndg/dfwebos-app.yml new file mode 100644 index 0000000..4c64ceb --- /dev/null +++ b/lndg/dfwebos-app.yml @@ -0,0 +1,31 @@ +manifestVersion: 1 +id: lndg +category: bitcoin +name: LNDg +version: "1.10.1" +tagline: Анализируйте и автоматизируйте управление узлами Lightning. +description: "LNDg — ваш командный центр для ведения прибыльного и эффективного бизнеса." +developer: cryptosharks131 +website: https://github.com/cryptosharks131 +dependencies: + - lightning +repo: https://github.com/cryptosharks131/lndg +support: https://t.me/+-RxoZdi7snk2ZGYx +port: 8889 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: lndg-admin +deterministicPassword: true +releaseNotes: >- + - Обновлены AutoFees с помощью Inbound-автоматизации (включите с помощью AF-InboundFees) + + - Улучшена производительность для узлов с большой историей пересылок. + + - Добавлена ​​новая страница показателей для выявления убыточных или застрявших каналов. + + - И еще... Полную информацию можно найти здесь: https://github.com/cryptosharks131/lndg/releases/tag/v1.10.1 +submitter: cryptosharks131 +submission: https://github.com/getumbrel/umbrel/pull/1189 diff --git a/lndg/docker-compose.yml b/lndg/docker-compose.yml new file mode 100644 index 0000000..c277599 --- /dev/null +++ b/lndg/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_LNDG_IP + APP_PORT: $APP_LNDG_PORT + + web: + image: ghcr.io/cryptosharks131/lndg:v1.10.1@sha256:c4f12e9222d81b74b665e61feab2b28d0e32e08d144b2cb1334e517eab01c9ad + restart: on-failure + stop_grace_period: 1m + init: true + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/root/.lnd:ro + - ${APP_DATA_DIR}/data/db:/app/data + - ${APP_DATA_DIR}/data/logs/lndg-controller.log:/var/log/lndg-controller.log + command: + - sh + - -c + - python initialize.py -net '${APP_BITCOIN_NETWORK}' -rpc '${APP_LIGHTNING_NODE_IP}:${APP_LIGHTNING_NODE_GRPC_PORT}' -pw '${APP_PASSWORD}' -wn && python controller.py runserver 0.0.0.0:${APP_LNDG_PORT} > /var/log/lndg-controller.log 2>&1 + networks: + default: + ipv4_address: ${APP_LNDG_IP} diff --git a/lndg/exports.sh b/lndg/exports.sh new file mode 100644 index 0000000..63ad167 --- /dev/null +++ b/lndg/exports.sh @@ -0,0 +1,2 @@ +export APP_LNDG_IP="10.21.21.75" +export APP_LNDG_PORT="8889" \ No newline at end of file diff --git a/lndg/hooks/pre-start b/lndg/hooks/pre-start new file mode 100755 index 0000000..8a3b504 --- /dev/null +++ b/lndg/hooks/pre-start @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт проверяет наличие каталогов data/data/db и data/logs и создает их + устанавливает правильные разрешения, если они не существуют. +# Если db.sqlite3 и lndg-controller.log существуют в основном каталоге приложения, мы перемещаем их в соответствующие новые места и не меняем разрешения (lndg запускается от имени пользователя root) +# Это будет справедливо для установок, которые обновляются с версии до 1.9.0. + +# Каталог приложений находится на один уровень выше, чем в этом скрипте. +APP_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" +APP_DATA_DIR="${APP_DIR}/data" +APP_DATA_DB_DIR="${APP_DATA_DIR}/db" +APP_DATA_LOGS_DIR="${APP_DATA_DIR}/logs" +DESIRED_OWNER="1000:1000" + +set_correct_permissions() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown -R "${DESIRED_OWNER}" "${path}" + fi + fi +} + +create_directory_if_not_exists() { + local -r dir="${1}" + if [[ ! -d "${dir}" ]]; then + mkdir -p "${dir}" + set_correct_permissions "${dir}" + fi +} + +move_file_if_exists() { + local -r src="${1}" + local -r dest="${2}" + if [[ -f "${src}" ]]; then + mv "${src}" "${dest}" + fi +} + +# Создайте каталоги, если они не существуют. +create_directory_if_not_exists "${APP_DATA_DIR}" +create_directory_if_not_exists "${APP_DATA_DB_DIR}" +create_directory_if_not_exists "${APP_DATA_LOGS_DIR}" + +# Переместить файлы, если они существуют +move_file_if_exists "${APP_DIR}/db.sqlite3" "${APP_DATA_DB_DIR}/db.sqlite3" +move_file_if_exists "${APP_DIR}/lndg-controller.log" "${APP_DATA_LOGS_DIR}/lndg-controller.log" \ No newline at end of file diff --git a/lnmarkets/dfwebos-app.yml b/lnmarkets/dfwebos-app.yml new file mode 100644 index 0000000..7c44e57 --- /dev/null +++ b/lnmarkets/dfwebos-app.yml @@ -0,0 +1,34 @@ +manifestVersion: 1.2 +id: lnmarkets +category: bitcoin +name: LN Markets +version: "2.0.1" +tagline: Первая торговая платформа мгновенного расчета Bitcoin +description: >- + ⚠️ Уведомление об удалении: это приложение больше не поддерживается и не получает никаких обновлений. + + + LN Markets — это первая торговая платформа Bitcoin с мгновенными расчетами. Дополнительная информация: linktr.ee/lnmarkets. + + + Это приложение DFWebOS дает вам еще один способ взаимодействия с LN Markets: вы можете напрямую вносить депозиты, снимать средства, получать торговую статистику и мгновенно подключаться к своей учетной записи, чтобы открывать позиции в обычном режиме. В будущем могут появиться дополнительные функции! + + + Благодарим вас за поддержку. Давайте продолжим строить будущее финансов вместе! +developer: LN Markets +website: https://lnmarkets.com +dependencies: + - lightning +repo: https://github.com/ln-markets/dfwebos +support: https://t.me/lnmarkets +port: 4242 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +submitter: LN Markets +submission: https://github.com/getumbrel/umbrel/pull/879 +releaseNotes: >- + - Это незначительный релиз с исправлением ошибок. +disabled: true diff --git a/lnmarkets/docker-compose.yml b/lnmarkets/docker-compose.yml new file mode 100644 index 0000000..9948296 --- /dev/null +++ b/lnmarkets/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_LNMARKETS_IP + APP_PORT: $APP_LNMARKETS_PORT + + lnmarkets: + image: ghcr.io/ln-markets/umbrel:v2.0.1@sha256:391798e0a18ec8135abf94037f879fa83e8394fa3a8881fec3aa934338e978d2 + init: true + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + LND_IP: $APP_LIGHTNING_NODE_IP + LND_GRPC_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + BITCOIN_NETWORK: $APP_BITCOIN_NETWORK + APP_LNMARKETS_PORT: $APP_LNMARKETS_PORT + networks: + default: + ipv4_address: $APP_LNMARKETS_IP diff --git a/lnmarkets/exports.sh b/lnmarkets/exports.sh new file mode 100644 index 0000000..11a0272 --- /dev/null +++ b/lnmarkets/exports.sh @@ -0,0 +1,2 @@ +export APP_LNMARKETS_IP="10.21.21.58" +export APP_LNMARKETS_PORT="4242" \ No newline at end of file diff --git a/lnplus/dfwebos-app.yml b/lnplus/dfwebos-app.yml new file mode 100644 index 0000000..2cfc3de --- /dev/null +++ b/lnplus/dfwebos-app.yml @@ -0,0 +1,32 @@ +manifestVersion: 1 +id: lnplus +category: bitcoin +name: Lightning Network+ +version: "0.1.31" +tagline: Получите входящую ликвидность и удвойте свои каналы бесплатно +description: >- + Lightning Network Plus (LN+) — это бесплатное приложение, которое помогает операторам узлов Lightning объединяться и создавать свопы ликвидности. + + + Мы проведем вас через каждый шаг, чтобы сделать этот процесс простым. Вы получите входящую ликвидность и сможете увеличить количество и мощность каналов в два раза быстрее, без каких-либо дополнительных затрат. + + + Приложение автоматически войдет в систему с вашим узлом. Вы можете присоединиться к обмену или создать новый. Вы можете общаться с другими операторами узлов. LN+ поможет вам открыть канал одним щелчком мыши, или вы можете открыть канал вручную с помощью приложения по вашему выбору. Вы можете оценивать участников свопа и получать рейтинги, которые повысят репутацию вашего узла. +releaseNotes: >- + Обновлены страницы справки и обработка ошибок. +developer: Lightning Network+ +website: https://lightningnetwork.plus +dependencies: + - lightning +repo: https://github.com/Lightning-Network-Plus/lnpclient +support: https://github.com/Lightning-Network-Plus/lnpclient/discussions +port: 3777 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Lightning Network+ +submission: https://github.com/getumbrel/dfwebos-apps/pull/202 \ No newline at end of file diff --git a/lnplus/docker-compose.yml b/lnplus/docker-compose.yml new file mode 100644 index 0000000..67f0350 --- /dev/null +++ b/lnplus/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lnplus_web_1 + APP_PORT: "3777" + web: + image: lightningnetworkplus/lnpclient:v0.1.31@sha256:35a8f299ee09c70318f93d7b3f0332215eb4e7fc0de75f527b6e49438722160c + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + LN_IMPLEMENTATION: "LND" + LN_SERVER_URL: $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT/ + MACAROON_PATH: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" + CONFIG_PATH: "/lnd/lnd.conf" + CERTIFICATE_PATH: "/lnd/tls.cert" + API_URL: "https://lightningnetwork.plus/api/2/" + RAILS_ENV: "development" \ No newline at end of file diff --git a/lobe-chat/bucket.config.json b/lobe-chat/bucket.config.json new file mode 100644 index 0000000..1720063 --- /dev/null +++ b/lobe-chat/bucket.config.json @@ -0,0 +1,24 @@ +{ + "ID": "", + "Statement": [ + { + "Sid": "", + "Effect": "Allow", + "Principal": { + "AWS": [ + "*" + ] + }, + "Action": [ + "s3:GetObject" + ], + "NotAction": [], + "Resource": [ + "arn:aws:s3:::lobe/*" + ], + "NotResource": [], + "Condition": {} + } + ], + "Version": "2012-10-17" +} diff --git a/lobe-chat/data/db/.gitkeep b/lobe-chat/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lobe-chat/data/redis/.gitkeep b/lobe-chat/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lobe-chat/data/rustfs-logs/.gitkeep b/lobe-chat/data/rustfs-logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lobe-chat/data/rustfs/.gitkeep b/lobe-chat/data/rustfs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lobe-chat/data/searxng/settings.yml b/lobe-chat/data/searxng/settings.yml new file mode 100644 index 0000000..b2aa07d --- /dev/null +++ b/lobe-chat/data/searxng/settings.yml @@ -0,0 +1,6 @@ +use_default_settings: true + +search: + formats: + - html + - json diff --git a/lobe-chat/dfwebos-app.yml b/lobe-chat/dfwebos-app.yml new file mode 100644 index 0000000..9ac07d8 --- /dev/null +++ b/lobe-chat/dfwebos-app.yml @@ -0,0 +1,50 @@ +manifestVersion: 1.1 +id: lobe-chat +name: Lobe Hub +tagline: Ваше автономное рабочее пространство ИИ для чата, агентов и знаний. +category: ai +version: "2.1.54" +port: 7455 +description: >- + 💬 Lobe Hub — это автономное рабочее пространство ИИ для бесед, команд агентов, + базы знаний и мультимодальные рабочие процессы. + + + 🗣️ Он поддерживает речь, мультимодальный чат, файлы, поиск знаний и богатый + экосистема поставщиков, включая API-интерфейсы, совместимые с OpenAI, Anthropic, Google, Groq, + Оллама и другие. + + + 🤖 Этот пакет DFWebOS теперь соответствует текущему самостоятельному развертыванию исходной ветки разработки. + модель и включает PostgreSQL, Redis и S3-совместимое объектное хранилище для + функции загрузки и базы знаний. + + + 🔑 Чтобы начать, создайте учетную запись при первом запуске, а затем добавьте одну или несколько + Ключи поставщика ИИ API в настройках Lobe Hub. +developer: LobeHub +website: https://lobehub.com/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/1901 +repo: https://github.com/lobehub/lobehub +support: https://github.com/lobehub/lobehub/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: >- + Это выпуск исправления, устраняющий проблему с навигацией, появившуюся в версии 2.1.53. + + + Ключевые изменения: + - Исправлено устаревшее состояние чата при переключении между агентами — предыдущая тема больше не сохраняется. + - Исправлена изоляция контекста разговора, поэтому правильное состояние агента/темы/потока загружается сразу при переключении. + - Исправлен список тем на боковой панели, который оставался расширенным при просмотре подтемы. + - Исправлен заголовок, показывающий правильное название темы для активных подтем. + + + Полные примечания к выпуску доступны по адресу https://github.com/lobehub/lobehub/releases. +path: "" diff --git a/lobe-chat/docker-compose.yml b/lobe-chat/docker-compose.yml new file mode 100644 index 0000000..0813ba3 --- /dev/null +++ b/lobe-chat/docker-compose.yml @@ -0,0 +1,119 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lobe-chat_app_1 + APP_PORT: 3210 + PROXY_AUTH_ADD: "false" + + app: + image: lobehub/lobehub:2.1.54@sha256:6f2bd9a1f203df46146361021375489f7f14883244fe01451ddced4e5fc2e550 + restart: on-failure + env_file: + - ${APP_DATA_DIR}/settings.env + environment: + APP_URL: http://${DEVICE_DOMAIN_NAME}:7455 + INTERNAL_APP_URL: http://lobe-chat_app_1:3210 + AUTH_TRUSTED_ORIGINS: http://${DEVICE_DOMAIN_NAME}:7455 + DATABASE_URL: postgresql://postgres:lobehubsecret@lobe-chat_postgres_1:5432/lobehub + REDIS_URL: redis://lobe-chat_redis_1:6379 + REDIS_PREFIX: lobechat + REDIS_TLS: "0" + S3_ENDPOINT: http://${DEVICE_DOMAIN_NAME}:7458 + S3_BUCKET: lobe + S3_ACCESS_KEY: lobehub + S3_ENABLE_PATH_STYLE: "1" + S3_ACCESS_KEY_ID: lobehub + S3_SECRET_ACCESS_KEY: ${APP_PASSWORD} + S3_SET_ACL: "0" + LLM_VISION_IMAGE_USE_BASE64: "1" + SEARXNG_URL: http://lobe-chat_searxng_1:8080 + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + rustfs: + condition: service_healthy + rustfs-init: + condition: service_completed_successfully + + postgres: + image: paradedb/paradedb:0.22.3-pg17@sha256:746c263e546b9d8bfdd278d7da9584c47ce838670e6cdfdb32713147548b43ce + user: "1000:1000" + restart: on-failure + environment: + POSTGRES_DB: lobehub + POSTGRES_PASSWORD: lobehubsecret + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d lobehub"] + interval: 10s + timeout: 5s + retries: 10 + + redis: + image: redis:7.4.8@sha256:a5995dfdf108997f8a7c9587f54fad5e94ed5848de5236a6b28119e99efd67e0 + user: "1000:1000" + restart: on-failure + command: redis-server --save 60 1000 --appendonly yes + volumes: + - ${APP_DATA_DIR}/data/redis:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 10 + + rustfs: + image: rustfs/rustfs:1.0.0-alpha.90@sha256:0725587f6fcca83c1898f321424327d6e6da5e01ea20382905dd258ed5af3be4 + restart: on-failure + ports: + - "7458:9000" + volumes: + - ${APP_DATA_DIR}/data/rustfs:/data + - ${APP_DATA_DIR}/data/rustfs-logs:/logs + environment: + RUSTFS_ADDRESS: 0.0.0.0:9000 + RUSTFS_CONSOLE_ADDRESS: 0.0.0.0:9001 + RUSTFS_CONSOLE_ENABLE: "true" + RUSTFS_VOLUMES: /data + RUSTFS_ACCESS_KEY: lobehub + RUSTFS_SECRET_KEY: ${APP_PASSWORD} + RUSTFS_OBS_LOG_DIRECTORY: /logs + healthcheck: + test: + ["CMD", "sh", "-c", "curl -f http://127.0.0.1:9000/health && curl -f http://127.0.0.1:9001/rustfs/console/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + + rustfs-init: + image: minio/mc:RELEASE.2025-08-13T08-35-41Z@sha256:a7fe349ef4bd8521fb8497f55c6042871b2ae640607cf99d9bede5e9bdf11727 + restart: on-failure + depends_on: + rustfs: + condition: service_healthy + volumes: + - ./bucket.config.json:/bucket.config.json:ro + entrypoint: /bin/sh + command: + - -c + - > + set -eux; + mc --version; + mc alias set rustfs "http://lobe-chat_rustfs_1:9000" "lobehub" "${APP_PASSWORD}"; + mc ls rustfs || true; + mc mb "rustfs/lobe" --ignore-existing; + mc anonymous set download rustfs/lobe + + searxng: + image: ghcr.io/searxng/searxng:2026.4.22-74f1ca203@sha256:37c616a774b90fb5df9239eb143f1b11866ddf7b830cd1ebcca6ba11b38cc2bf + restart: on-failure + environment: + SEARXNG_SECRET: ${APP_SEED} + volumes: + - ${APP_DATA_DIR}/data/searxng/settings.yml:/etc/searxng/settings.yml diff --git a/lobe-chat/hooks/pre-start b/lobe-chat/hooks/pre-start new file mode 100755 index 0000000..ab8e574 --- /dev/null +++ b/lobe-chat/hooks/pre-start @@ -0,0 +1,166 @@ +#!/usr/bin/env bash +set -euo pipefail + +ENV_FILE="${APP_DATA_DIR}/settings.env" +TMP_DIR="${APP_DATA_DIR}/tmp" +DB_DATA_DIR="${APP_DATA_DIR}/data/db" +REDIS_DATA_DIR="${APP_DATA_DIR}/data/redis" +RUSTFS_DATA_DIR="${APP_DATA_DIR}/data/rustfs" +RUSTFS_LOGS_DIR="${APP_DATA_DIR}/data/rustfs-logs" +SEARXNG_DATA_DIR="${APP_DATA_DIR}/data/searxng" + +mkdir -p "${TMP_DIR}" +mkdir -p "${DB_DATA_DIR}" "${REDIS_DATA_DIR}" "${RUSTFS_DATA_DIR}" "${RUSTFS_LOGS_DIR}" "${SEARXNG_DATA_DIR}" +touch "${ENV_FILE}" +chown -R 1000:1000 "${DB_DATA_DIR}" "${REDIS_DATA_DIR}" 2>/dev/null || true +chown -R 10001:10001 "${RUSTFS_DATA_DIR}" "${RUSTFS_LOGS_DIR}" 2>/dev/null || true + +if [[ ! -f "${SEARXNG_DATA_DIR}/settings.yml" ]]; then + cat > "${SEARXNG_DATA_DIR}/settings.yml" <<'EOF' +use_default_settings: true + +search: + formats: + - html + - json +EOF +fi + +get_var() { + local key="$1" + if grep -q "^${key}=" "${ENV_FILE}"; then + grep "^${key}=" "${ENV_FILE}" | tail -n 1 | cut -d= -f2- + fi +} + +set_var() { + local key="$1" + local value="$2" + python3 - "$ENV_FILE" "$key" "$value" <<'PY' +import pathlib +import sys + +path = pathlib.Path(sys.argv[1]) +key = sys.argv[2] +value = sys.argv[3] + +lines = path.read_text().splitlines() if path.exists() else [] +updated = False + +for index, line in enumerate(lines): + if line.startswith(f"{key}="): + lines[index] = f"{key}={value}" + updated = True + break + +if not updated: + lines.append(f"{key}={value}") + +path.write_text("\n".join(lines) + "\n") +PY +} + +generate_secret() { + openssl rand -base64 32 | tr -d '\n' +} + +generate_jwks() { + local pem_file="${TMP_DIR}/jwks.pem" + openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out "${pem_file}" >/dev/null 2>&1 + python3 - "${pem_file}" <<'PY' +import base64 +import hashlib +import json +import re +import subprocess +import sys + +pem_file = sys.argv[1] +text = subprocess.check_output( + ["openssl", "rsa", "-in", pem_file, "-text", "-noout"], + stderr=subprocess.DEVNULL, + text=True, +) + +mapping = { + "modulus": "n", + "privateExponent": "d", + "prime1": "p", + "prime2": "q", + "exponent1": "dp", + "exponent2": "dq", + "coefficient": "qi", +} + +values = {} +current = None + +for line in text.splitlines(): + stripped = line.strip() + + if stripped.startswith("publicExponent:"): + exponent = int(stripped.split()[1]) + values["e"] = exponent.to_bytes((exponent.bit_length() + 7) // 8, "big") + current = None + continue + + if stripped.endswith(":") and stripped[:-1] in mapping: + current = mapping[stripped[:-1]] + values[current] = b"" + continue + + if current and re.fullmatch(r"[0-9a-f:]+", stripped): + values[current] += bytes.fromhex(stripped.replace(":", "")) + continue + + current = None + +for key in ("n", "d", "p", "q", "dp", "dq", "qi"): + value = values[key] + while len(value) > 1 and value[0] == 0: + value = value[1:] + values[key] = value + +def b64url(data): + return base64.urlsafe_b64encode(data).decode().rstrip("=") + +kid = hashlib.sha256(values["n"]).hexdigest()[:16] + +print( + json.dumps( + { + "keys": [ + { + "kty": "RSA", + "use": "sig", + "alg": "RS256", + "kid": kid, + "n": b64url(values["n"]), + "e": b64url(values["e"]), + "d": b64url(values["d"]), + "p": b64url(values["p"]), + "q": b64url(values["q"]), + "dp": b64url(values["dp"]), + "dq": b64url(values["dq"]), + "qi": b64url(values["qi"]), + } + ] + }, + separators=(",", ":"), + ) +) +PY + rm -f "${pem_file}" +} + +if [[ -z "$(get_var KEY_VAULTS_SECRET)" ]]; then + set_var KEY_VAULTS_SECRET "$(generate_secret)" +fi + +if [[ -z "$(get_var AUTH_SECRET)" ]]; then + set_var AUTH_SECRET "$(generate_secret)" +fi + +if [[ -z "$(get_var JWKS_KEY)" ]]; then + set_var JWKS_KEY "$(generate_jwks)" +fi diff --git a/localai/data/images/.gitkeep b/localai/data/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/localai/data/models/.gitkeep b/localai/data/models/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/localai/dfwebos-app.yml b/localai/dfwebos-app.yml new file mode 100644 index 0000000..1818707 --- /dev/null +++ b/localai/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: localai +category: ai +name: LocalAI +version: "v4.1.3" +tagline: Замена OpenAI +description: >- + LocalAI — это бесплатная альтернатива OpenAI с открытым исходным кодом. LocalAI выступает в качестве замены REST API, совместимой со спецификациями OpenAI API для локального вывода. + + + Он позволяет запускать LLM, генерировать изображения и аудио локально с помощью оборудования потребительского уровня, поддерживая несколько семейств моделей и архитектур. + + + ⚠️ Примечание + + Прежде чем запускать модель, убедитесь, что на вашем устройстве достаточно свободной оперативной памяти для ее поддержки. Попытка запустить модель, объем которой превышает доступную память, может привести к сбою устройства или зависанию устройства. Всегда проверяйте требования модели перед ее загрузкой или запуском. +releaseNotes: >- + Это патч-релиз с исправлениями ошибок и небольшими улучшениями. + + + Ключевые моменты включают в себя: + - Исправлен вход через устаревшие ключи API. + - Исправлена совместимость с Anthropic API — больше не выдаются пустые токены, исправлены вызовы инструментов SSE. + - Улучшено обнаружение графического процессора для MacOS и Thor. + — Обновлены зависимости llama.cpp, Stable-diffusion.cpp и ace-step.cpp. + + + Полные примечания к выпуску можно найти по адресу https://github.com/mudler/LocalAI/releases. +backupIgnore: + - data/models/* +developer: Ettore Di Giacinto +website: https://localai.io/ +dependencies: [] +repo: https://github.com/mudler/LocalAI +support: https://github.com/mudler/LocalAI/discussions +port: 8793 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: highghlow +submission: https://github.com/getumbrel/dfwebos-apps/pull/1079 diff --git a/localai/docker-compose.yml b/localai/docker-compose.yml new file mode 100644 index 0000000..2b38d8a --- /dev/null +++ b/localai/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: localai_api_1 + APP_PORT: 8080 + PROXY_AUTH_WHITELIST: "/v1/*" + api: + image: localai/localai:v4.1.3@sha256:a6af99e17a73a92caa134e70ae84492cc47b67645c1676268a7522ad14f4c09d + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/readyz"] + interval: 1m + timeout: 20m + retries: 5 + environment: + - MODELS_PATH=/models + volumes: + - ${APP_DATA_DIR}/data/models:/models:cached + - ${APP_DATA_DIR}/data/images/:/tmp/generated/images/ diff --git a/lubelogger/data/app/.gitkeep b/lubelogger/data/app/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lubelogger/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/lubelogger/data/keys/.gitkeep b/lubelogger/data/keys/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lubelogger/data/keys/.gitkeep @@ -0,0 +1 @@ + diff --git a/lubelogger/dfwebos-app.yml b/lubelogger/dfwebos-app.yml new file mode 100644 index 0000000..e9be9a9 --- /dev/null +++ b/lubelogger/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: lubelogger +name: LubeLogger +tagline: Трекер технического обслуживания и расхода топлива +category: files +version: "1.6.4" +port: 8835 +description: >- + 🚗 LubeLogger — это приложение для управления транспортными средствами, призванное помочь пользователям вести полную и точную историю своих транспортных средств. Оно позволяет подробно отслеживать операции по техническому обслуживанию, ремонту и регулярному обслуживанию, так что каждая замена масла, осмотр или замена детали документируется в одном месте. Со временем это создает четкую запись о том, как за автомобилем ухаживали и какие работы были выполнены. + + + Приложение также уделяет большое внимание отслеживанию топлива и анализу затрат. Пользователи могут записывать заправки топливом, пробег и цены, что позволяет точно рассчитывать расход топлива и долгосрочную эффективность. На основе этих данных LubeLogger предоставляет информацию о текущих расходах и тенденциях, что упрощает понимание того, как привычки вождения или состояние автомобиля влияют на расходы. + + + Еще одна основная функция — управление расходами и затратами. LubeLogger позволяет пользователям классифицировать и просматривать все расходы, связанные с транспортным средством, включая техническое обслуживание, топливо и другие периодические или разовые расходы. Это позволяет легко увидеть, сколько стоит владение автомобилем в течение нескольких месяцев или лет, и сравнить затраты на несколько автомобилей. + + + LubeLogger включает функции планирования и напоминаний, которые помогают пользователям быть в курсе предстоящих задач по обслуживанию. Интервалы технического обслуживания можно отслеживать по времени или пробегу, гарантируя, что важная работа не будет забыта. Это помогает повысить надежность автомобиля и продлить срок его службы за счет своевременного ухода. + + + Приложение также поддерживает управление несколькими транспортными средствами и организацию всех связанных данных в структурированном виде с возможностью поиска. К записям можно прикреплять такие документы, как квитанции или сервисные книжки, создавая полный цифровой архив для каждого автомобиля. В целом, LubeLogger создан для того, чтобы предоставить владельцам транспортных средств полную информацию об истории технического обслуживания, расходе топлива и общей стоимости владения в понятной и практичной форме. +developer: Hargata Softworks +website: https://lubelogger.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/4345 +repo: https://github.com/hargata/lubelog +support: https://github.com/hargata/lubelog/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: "" +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/lubelogger/docker-compose.yml b/lubelogger/docker-compose.yml new file mode 100644 index 0000000..5981b16 --- /dev/null +++ b/lubelogger/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lubelogger_app_1 + APP_PORT: 8080 + + app: + image: ghcr.io/hargata/lubelogger:v1.6.4@sha256:82a41d7ebda9b47ce70ab55b590ea597f90ebee56877e6a99b4b786cf2f4432b + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/app:/App/data + - ${APP_DATA_DIR}/data/keys:/root/.aspnet/DataProtection-Keys diff --git a/lunalytics/data/logs/.gitkeep b/lunalytics/data/logs/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lunalytics/data/logs/.gitkeep @@ -0,0 +1 @@ + diff --git a/lunalytics/data/lunalytics_data/.gitkeep b/lunalytics/data/lunalytics_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lunalytics/data/lunalytics_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/lunalytics/dfwebos-app.yml b/lunalytics/dfwebos-app.yml new file mode 100644 index 0000000..e9fda52 --- /dev/null +++ b/lunalytics/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1 +id: lunalytics +name: Lunalytics +tagline: Инструмент мониторинга для команд +category: networking +version: "0.10.22" +port: 8183 +description: >- + 🔍 Lunalytics предлагает богатый набор функций, призванных дать вам полную информацию о состоянии ваших сервисов. Он постоянно отслеживает конечные точки HTTP и TCP и предоставляет подробную статистику работоспособности и задержек с точным отслеживанием времени отклика. + + + Инструмент также включает автоматический мониторинг сертификатов TLS, поэтому вы будете предупреждены до того, как сертификаты истечет или станут недействительными. Это помогает предотвратить непредвиденные простои, вызванные проблемами с сертификатами. + + + Каждую отслеживаемую конечную точку можно настроить с использованием настраиваемых интервалов, тегов и описаний, что обеспечивает гибкую организацию и категоризацию. Вы можете группировать услуги по проекту, типу или любому другому критерию, который соответствует вашему рабочему процессу. + + + Встроенная система оповещений уведомляет вас, когда служба выходит из строя или демонстрирует ненормальное поведение, чтобы вы могли немедленно отреагировать. Оповещения отправляются только тогда, когда они имеют значение, чтобы избежать ненужного шума. + + + Lunalytics поддерживает несколько пользователей с контролем доступа на основе ролей, что позволяет командам совместно использовать информационные панели, сохраняя при этом границы разрешений. Администраторы могут приглашать пользователей и назначать роли для эффективного управления уровнями доступа. + + + Все данные мониторинга отображаются в режиме реального времени через интуитивно понятную и интерактивную панель мониторинга. Исторические диаграммы и журналы запросов позволяют проводить более глубокий анализ и помогают выявлять тенденции или повторяющиеся проблемы с течением времени. +developer: KSJaay +website: https://lunalytics.xyz/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3158 +repo: https://github.com/KSJaay/Lunalytics +support: https://github.com/KSJaay/Lunalytics/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Это обновление устраняет проблему с проверкой URL-адреса Discord и ошибку с автоматическим добавлением мониторов: + — Обновлено регулярное выражение для проверки URL-адреса Discord. + - Исправлено автоматическое добавление, которое не работало должным образом. + + + Полные примечания к выпуску можно найти по адресу https://github.com/KSJaay/Lunalytics/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/lunalytics/docker-compose.yml b/lunalytics/docker-compose.yml new file mode 100644 index 0000000..a549043 --- /dev/null +++ b/lunalytics/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: lunalytics_web_1 + APP_PORT: 2308 + + web: + image: ksjaay/lunalytics:0.10.22@sha256:c6877f1957c829351b5f4dc686e72301210e332a0e31b56636f3c6bb45b6d5d4 + user: "1000:1000" + restart: on-failure + healthcheck: + test: ["CMD-SHELL", "nc -z 127.0.0.1 2308 || exit 1"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 90s + volumes: + - ${APP_DATA_DIR}/data/lunalytics_data:/app/data:rw + - ${APP_DATA_DIR}/data/logs:/app/logs:rw diff --git a/mailarchiver/data/appsettings.json b/mailarchiver/data/appsettings.json new file mode 100644 index 0000000..2eeea49 --- /dev/null +++ b/mailarchiver/data/appsettings.json @@ -0,0 +1,79 @@ +{ + "ConnectionStrings": { + "DefaultConnection": "Host=mailarchiver_postgres_1;Database=mailarchiver;Username=mailarchiver;Password=mailarchiver" + }, + "Authentication": { + "Username": "admin", + "Password": "secure123!", + "SessionTimeoutMinutes": 60, + "CookieName": "MailArchiverAuth", + "CookieSameSite": "Strict" + }, + "OAuth": { + "Enabled": false, + "Authority": "", + "ClientId": "", + "ClientSecret": null, + "ClientScopes": [ + "openid", + "profile", + "email" + ], + "DisablePasswordLogin": false, + "AutoRedirect": false, + "AutoApproveUsers": false, + "AdminEmails": [] + }, + "MailSync": { + "IntervalMinutes": 15, + "TimeoutMinutes": 120, + "ConnectionTimeoutSeconds": 300, + "CommandTimeoutSeconds": 600, + "AlwaysForceFullSync": false, + "IgnoreSelfSignedCert": false + }, + "BatchRestore": { + "AsyncThreshold": 50, + "MaxSyncEmails": 150, + "MaxAsyncEmails": 50000, + "SessionTimeoutMinutes": 30, + "DefaultBatchSize": 50 + }, + "Selection": { + "MaxSelectableEmails": 250 + }, + "View": { + "DefaultToPlainText": true, + "BlockExternalResources": true + }, + "BatchOperation": { + "BatchSize": 50, + "PauseBetweenEmailsMs": 50, + "PauseBetweenBatchesMs": 200 + }, + "TimeZone": { + "DisplayTimeZoneId": "Etc/UCT" + }, + "DatabaseMaintenance": { + "Enabled": true, + "DailyExecutionTime": "02:00", + "TimeoutMinutes": 30 + }, + "Upload": { + "MaxFileSizeGB": 10, + "KeepAliveTimeoutHours": 4, + "RequestHeadersTimeoutHours": 2, + "Notes": "Optimized for large file uploads up to 10GB" + }, + "Npgsql": { + "CommandTimeout": 900 + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Microsoft.EntityFrameworkCore.Database.Command": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/mailarchiver/data/database/.gitignore b/mailarchiver/data/database/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/mailarchiver/dfwebos-app.yml b/mailarchiver/dfwebos-app.yml new file mode 100644 index 0000000..1d93a53 --- /dev/null +++ b/mailarchiver/dfwebos-app.yml @@ -0,0 +1,72 @@ +manifestVersion: 1 +id: mailarchiver +name: Mail Archiver +tagline: Комплексное решение для архивирования, поиска и экспорта электронной почты. +category: files +version: "2604.2" +port: 5006 +description: >- + Mail Archiver обеспечивает автоматическое архивирование входящей и исходящей электронной почты с нескольких учетных записей. Все содержимое электронной почты и вложения синхронизируются по расписанию. Адаптивный интерфейс оптимизирован для использования на мобильных устройствах и настольных компьютерах, многоязычен и поддерживает темный режим. + + OpenID Connect (OIDC) можно настроить для интеграции внешних служб аутентификации. + + + **Настраивать** + + Предоставленные учетные данные необходимо изменить при первом входе в систему. Пользователей, учетные записи и т. д. можно настроить в веб-интерфейсе, основные настройки (например, часовой пояс) можно настроить в соответствии с вашими потребностями в «data/appsettings.json». + + + 🔍 **Поиск и доступ** + - Расширенный поиск по всем заархивированным электронным письмам с возможностью фильтрации. + - Предварительный просмотр электронных писем со списком вложений + - Экспортируйте целые почтовые учетные записи в виде файлов mbox или сжатых архивов EML. + - Экспортировать выбранные отдельные электронные письма или пакеты электронных писем. + + + 👥 **Управление пользователями** + - Многопользовательская поддержка с разрешениями для конкретной учетной записи. + - Панель управления со статистикой, мониторингом хранилища и анализом отправителей + - Комплексное ведение журнала доступа с подробным отслеживанием активности пользователей (доступ, экспорт, удаление, восстановление и многое другое) — подробности см. в руководстве по ведению журнала доступа. + + + 🧩 **Поддержка провайдера электронной почты** + - IMAP — традиционные учетные записи IMAP с возможностью полной синхронизации. + - M365 – почтовые учетные записи Microsoft 365 через Microsoft Graph API (Руководство по установке) + - ИМПОРТ – учетные записи, доступные только для импорта, для переноса существующих архивов электронной почты. + + + 📥 **Функции импорта и восстановления** + - Импорт MBox и импорт EML (ZIP-файлы с поддержкой структуры папок) + - Восстановить выбранные электронные письма или целые почтовые ящики в почтовые ящики назначения. + + + 🗑️ **Политика хранения** + - Настройте автоматическое удаление заархивированных писем с почтового сервера через определенные дни (документация по политикам хранения). + - Установите срок хранения для каждой учетной записи электронной почты (например, 30, 90 или 365 дней). + - Хранение локального архива. Настройка отдельного периода хранения для локального архива. +developer: s1t5 +website: https://mail-archiver.org +repo: https://github.com/s1t5/mail-archiver +support: https://github.com/s1t5/mail-archiver/issues +defaultUsername: "admin" +defaultPassword: "secure123!" +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Улучшения: + - Обновлены зависимости для лучшей совместимости. + + + Исправления ошибок: + - Исправлена обработка даты при восстановлении электронной почты в учетных записях Microsoft 365. + - Исправлено отображение времени последней синхронизации для русского языка. + - Исправлена обработка памяти во время синхронизации Microsoft 365. + + + Полные примечания к выпуску можно найти по адресу https://github.com/s1t5/mail-archiver. +dependencies: [] +path: "" +submitter: dirstel +submission: https://github.com/getumbrel/dfwebos-apps/pull/5078 diff --git a/mailarchiver/docker-compose.yml b/mailarchiver/docker-compose.yml new file mode 100644 index 0000000..a19c211 --- /dev/null +++ b/mailarchiver/docker-compose.yml @@ -0,0 +1,32 @@ +services: + app_proxy: + environment: + APP_HOST: mailarchiver_app_1 + APP_PORT: 5000 + + app: + image: ghcr.io/s1t5/mailarchiver:2604.2@sha256:53800df180b876e3cc02e31f088e0684bf81a4380ad22b5419da99e8559bb5ba + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/data-protection-keys:/app/DataProtection-Keys + - ${APP_DATA_DIR}/data/appsettings.json:/app/appsettings.json + depends_on: + postgres: + condition: service_healthy + + postgres: + image: postgres:18.3-alpine3.23@sha256:4da1a4828be12604092fa55311276f08f9224a74a62dcb4708bd7439e2a03911 + restart: on-failure + user: 1000:1000 + environment: + POSTGRES_DB: mailarchiver + POSTGRES_USER: mailarchiver + POSTGRES_PASSWORD: mailarchiver + volumes: + - ${APP_DATA_DIR}/data/database:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U mailarchiver -d mailarchiver"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s diff --git a/mainsail/data/config.json b/mainsail/data/config.json new file mode 100644 index 0000000..dbcb642 --- /dev/null +++ b/mainsail/data/config.json @@ -0,0 +1,3 @@ +{ + "instancesDB": "browser" +} diff --git a/mainsail/dfwebos-app.yml b/mainsail/dfwebos-app.yml new file mode 100644 index 0000000..ee87268 --- /dev/null +++ b/mainsail/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: mainsail +category: files +name: Mainsail +version: "2.14.0" +tagline: Управляйте и контролируйте свой принтер откуда угодно, с любого устройства +description: >- + 🖨️ Современный и адаптивный пользовательский интерфейс для Klipper. Управляйте и контролируйте свой принтер откуда угодно, с любого устройства. + + + **Простота в использовании.** Основное внимание уделяется как предвидению того, что пользователям может потребоваться сделать, так и обеспечению того, чтобы пользовательский интерфейс содержал легкодоступные, понятные и удобные для пользователя элементы, упрощающие эти действия. + + + **Всегда на шаг впереди.** Мы тесно сотрудничаем с разработчиками других проектов, чтобы функции можно было реализовать уже на ранних этапах. + + + **100 % открытый исходный код.** Присоединиться может любой, любой может внести свой вклад. +releaseNotes: >- + Новые функции и улучшения: + - Улучшена консоль с многострочным вводом и историей. + - Добавлена поддержка SHT3X на панели температуры. + - Новое меню для открытия настроек и отключения обогревателей в разделе «Температуры». + - Реализованы записи пакетов Python в диспетчере обновлений. + - Добавлены граммовые шкалы тензодатчиков на панели разного. + - Добавлена поддержка датчика ширины нити Холла. + - Добавлена функция поиска в интерфейс настроек макросов. + + + Исправления ошибок: + - Исправлены различные проблемы на панелях «Редактор», «История» и «Таймлапс». + - Улучшена функциональность Z-наклона. + - Исправлена визуализация G2/G3 в Gcode-Viewer. + - Различные другие мелкие исправления и улучшения. + + + Полные примечания к выпуску можно найти по адресу https://github.com/mainsail-crew/mainsail/releases. +developer: Mainsail Crew +website: https://docs.mainsail.xyz/ +dependencies: [] +repo: https://github.com/mainsail-crew/mainsail +support: https://docs.mainsail.xyz/faq/getting-help +port: 8070 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Julienpeps +submission: https://github.com/getumbrel/dfwebos-apps/pull/1982 diff --git a/mainsail/docker-compose.yml b/mainsail/docker-compose.yml new file mode 100644 index 0000000..7087c48 --- /dev/null +++ b/mainsail/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: mainsail_web_1 + APP_PORT: 80 + web: + image: ghcr.io/mainsail-crew/mainsail:v2.14.0@sha256:fc83a9104b9b87e0779f85dfaff2e68dc33824cfae3d0a7ae602dddbd062d1d1 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/config.json:/usr/share/nginx/html/config.json:ro diff --git a/matter-server/data/.gitkeep b/matter-server/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/matter-server/dfwebos-app.yml b/matter-server/dfwebos-app.yml new file mode 100644 index 0000000..a2833a7 --- /dev/null +++ b/matter-server/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: matter-server +name: Matter Server +tagline: Сервер Matter Controller через WebSockets +category: automation +version: "8.1.2" +port: 5580 +description: >- + 🛜 Этот проект реализует сервер контроллера Matter через WebSockets, используя официальный Matter (ранее CHIP) SDK в качестве основы, и обеспечивает как серверную, так и клиентскую реализацию. + + + 🏠 Цель этого проекта — в первую очередь обеспечить поддержку Matter в Home Assistant, но универсальный подход делает его пригодным для использования и в других проектах. +developer: Home Assistant +website: https://home-assistant.io +repo: https://github.com/matter-js/python-matter-server +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/1866 +support: https://community.home-assistant.io/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск включает в себя несколько улучшений и исправлений ошибок. + + + Ключевые обновления: + - Панель мониторинга теперь включает резервный вариант для неизвестных типов конечных устройств. + - Исправлена чувствительность к движению и обработка типов атрибутов. + - Добавлена поддержка режима пониженного энергопотребления для устройств Heiman. + - Добавлена функция сирены и отключения звука для дымовых извещателей Heiman. + - Улучшена обработка нестроковых данных меток. + - Обновления документации для ссылок на изображения Docker. + + + Полные примечания к выпуску доступны по адресу https://github.com/home-assistant-libs/python-matter-server/releases. +dependencies: [] +path: "" diff --git a/matter-server/docker-compose.yml b/matter-server/docker-compose.yml new file mode 100644 index 0000000..e78a5ff --- /dev/null +++ b/matter-server/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + server: + image: ghcr.io/matter-js/python-matter-server:8.1.2@sha256:6827e352011e2d8c2bde771e446fcf72acc49150ef66bad978816bac1762aad3 + restart: on-failure + # Требуется для корректной работы mDNS + network_mode: host + # интерфейс на порту по умолчанию 5580 + security_opt: + # Требуется для Bluetooth через dbus + - apparmor:unconfined + volumes: + - ${APP_DATA_DIR}/data:/data/ + # Требуется для Bluetooth через D-Bus + - /run/dbus:/run/dbus:ro diff --git a/mattermost/data/app/mattermost/client-plugins/.gitkeep b/mattermost/data/app/mattermost/client-plugins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mattermost/data/app/mattermost/config/.gitkeep b/mattermost/data/app/mattermost/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mattermost/data/app/mattermost/data/.gitkeep b/mattermost/data/app/mattermost/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mattermost/data/app/mattermost/logs/.gitkeep b/mattermost/data/app/mattermost/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mattermost/data/app/mattermost/plugins/.gitkeep b/mattermost/data/app/mattermost/plugins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mattermost/data/db/.gitkeep b/mattermost/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mattermost/dfwebos-app.yml b/mattermost/dfwebos-app.yml new file mode 100644 index 0000000..c1f4f3c --- /dev/null +++ b/mattermost/dfwebos-app.yml @@ -0,0 +1,45 @@ +manifestVersion: 1 +id: mattermost +name: Mattermost +tagline: Командный чат, с открытым исходным кодом, самостоятельное размещение +category: social +version: "11.6.1" +port: 8765 +description: >- + 🚉 Mattermost — это платформа с открытым исходным кодом, предназначенная для безопасного сотрудничества на протяжении всего жизненного цикла разработки программного обеспечения. + + + 💬 Оно служит приложением для обмена командными сообщениями, которое подчеркивает продуктивность разработчиков и преимущества программного обеспечения с открытым исходным кодом. + + + 💾 Mattermost предлагает автономную альтернативу проприетарным SaaS-сервисам обмена сообщениями, таким как Slack и Microsoft Teams. + + + Примечание. Mattermost можно использовать локально в вашей сети. Однако если вы хотите, чтобы другие люди за пределами вашей локальной сети имели доступ к вашему серверу, вам необходимо сделать его доступным в общедоступном Интернете. + Если у вас есть доменное имя, вы можете настроить его с помощью приложений Cloudflare Tunnel или Nginx Proxy Manager в магазине приложений DFWebOS. +developer: Mattermost +website: https://mattermost.com +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/1714 +repo: https://github.com/mattermost/mattermost +support: https://forum.mattermost.com/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: >- + 🚨 Этот выпуск содержит исправления безопасности средней и высокой степени серьезности. Обновление настоятельно рекомендуется. + + + Недавние обновления также включают в себя: + - URL-адреса на основе идентификаторов для улучшенной обработки ссылок. + - Многооконный поиск в правой части для упрощения навигации. + - Одноканальная отчетность о гостях для лучшего управления доступом. + - Исправлены ошибки из версии 11.5.3. + + + Полные примечания к выпуску доступны по адресу https://docs.mattermost.com/product-overview/mattermost-v11-changelog.html. +path: "" diff --git a/mattermost/docker-compose.yml b/mattermost/docker-compose.yml new file mode 100644 index 0000000..5d4260e --- /dev/null +++ b/mattermost/docker-compose.yml @@ -0,0 +1,50 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: mattermost_app_1 + APP_PORT: 8000 + PROXY_AUTH_ADD: "false" + + app: + image: alexlack/mattermost-app:v11.6.1@sha256:37b33b51fcf057605a00655afc92729c2348b46a172368821982526a4c1f1b7f + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + MM_USERNAME: admin + MM_PASSWORD: admin + MM_DBNAME: mattermost + MM_SQLSETTINGS_DATASOURCE: postgres://admin:admin@mattermost_db_1:5432/mattermost?sslmode=disable&connect_timeout=10 + volumes: + - ${APP_DATA_DIR}/data/app/mattermost/config:/mattermost/config:rw + - ${APP_DATA_DIR}/data/app/mattermost/data:/mattermost/data:rw + - ${APP_DATA_DIR}/data/app/mattermost/logs:/mattermost/logs:rw + - ${APP_DATA_DIR}/data/app/mattermost/plugins:/mattermost/plugins:rw + - ${APP_DATA_DIR}/data/app/mattermost/client-plugins:/mattermost/client/plugins:rw + - /etc/localtime:/etc/localtime:ro + ports: + - "8443:8443/tcp" # WebRTC over tcp + - "8443:8443/udp" # WebRTC over udp + depends_on: + db: + condition: service_healthy + + db: + image: alexlack/mattermost-db:v11.6.1@sha256:e8349dab19a6d4981d883373ac6c43afe5f3e1102acdaf30c7be2624f97b6794 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + MM_USERNAME: admin + MM_PASSWORD: admin + MM_DBNAME: mattermost + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + - /etc/localtime:/etc/localtime:ro + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 10s + timeout: 5s + retries: 5 diff --git a/maybe/data/postgres/.gitkeep b/maybe/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/maybe/data/rails/.gitkeep b/maybe/data/rails/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/maybe/data/redis/.gitkeep b/maybe/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/maybe/dfwebos-app.yml b/maybe/dfwebos-app.yml new file mode 100644 index 0000000..c01aaeb --- /dev/null +++ b/maybe/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1.1 +id: maybe +category: finance +name: Maybe +version: '0.6.0' +tagline: ОС для ваших личных финансов +description: >- + Maybe — это полностью (ваши финансы в безопасности) ОС с открытым исходным кодом для ваших личных финансов, созданная + небольшая команда вместе с невероятным сообществом. + + + Это версия Maybe с ранним доступом, доступная только тем, кто размещает ее самостоятельно. + Maybe находится в активной разработке и все еще работает над стабильной версией с полным набором функций. +releaseNotes: >- + 🚨 Maybe переключается на финансовое прогнозирование B2B и планирование сценариев и больше не будет активно поддерживать проект. + + + Этот финальный выпуск представляет собой рабочую версию программного обеспечения «как есть». + + + Полные примечания к выпуску можно найти по адресу https://github.com/maybe-finance/maybe/releases. +developer: Maybe +website: https://maybe.co/ +dependencies: [] +repo: https://github.com/maybe-finance/maybe +support: https://github.com/maybe-finance/discussions +port: 3063 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: '' +defaultUsername: '' +defaultPassword: '' +submitter: CaptainCodeman +submission: https://github.com/getumbrel/dfwebos-apps/pull/1105 diff --git a/maybe/docker-compose.yml b/maybe/docker-compose.yml new file mode 100644 index 0000000..aec5e7b --- /dev/null +++ b/maybe/docker-compose.yml @@ -0,0 +1,84 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: maybe_web_1 + APP_PORT: 3063 + + web: + image: ghcr.io/maybe-finance/maybe:0.6.0@sha256:1e791e88ecc4d124d05142d943bcec5b5a172e889f648c97d334363133384f01 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/rails:/rails/storage + environment: + SELF_HOSTING_ENABLED: "true" + PORT: 3063 + # URL кодирует символы подчеркивания (%5F) в имени хоста для удовлетворения строгого анализа URI в Ruby. + # Original: postgresql://maybe:maybe@maybe_db_1:5432/maybe + DATABASE_URL: postgresql://maybe:maybe@maybe%5Fdb%5F1:5432/maybe + RAILS_FORCE_SSL: "false" + RAILS_ASSUME_SSL: "false" + POSTGRES_DB: maybe + POSTGRES_USER: maybe + POSTGRES_PASSWORD: maybe + GOOD_JOB_EXECUTION_MODE: async + SECRET_KEY_BASE: $APP_SEED + REDIS_URL: redis://maybe_redis_1:6379/1 + depends_on: + db: + condition: service_healthy + redis: + condition: service_healthy + + worker: + image: ghcr.io/maybe-finance/maybe:0.6.0@sha256:1e791e88ecc4d124d05142d943bcec5b5a172e889f648c97d334363133384f01 + command: bundle exec sidekiq + restart: on-failure + environment: + SELF_HOSTING_ENABLED: "true" + PORT: 3063 + # URL кодирует символы подчеркивания (%5F) в имени хоста для удовлетворения строгого анализа URI в Ruby. + # Original: postgresql://maybe:maybe@maybe_db_1:5432/maybe + DATABASE_URL: postgresql://maybe:maybe@maybe%5Fdb%5F1:5432/maybe + RAILS_FORCE_SSL: "false" + RAILS_ASSUME_SSL: "false" + POSTGRES_DB: maybe + POSTGRES_USER: maybe + POSTGRES_PASSWORD: maybe + GOOD_JOB_EXECUTION_MODE: async + SECRET_KEY_BASE: $APP_SEED + REDIS_URL: redis://maybe_redis_1:6379/1 + depends_on: + redis: + condition: service_healthy + + db: + image: postgres:16@sha256:1bf73ccae25238fa555100080042f0b2f9be08eb757e200fe6afc1fc413a1b3c + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + environment: + POSTGRES_DB: maybe + POSTGRES_USER: maybe + POSTGRES_PASSWORD: maybe + PGDATA: /var/lib/postgresql/data/pgdata + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U maybe'] + interval: 10s + timeout: 5s + retries: 5 + + redis: + image: redis:7.4.2@sha256:fbdbaea47b9ae4ecc2082ecdb4e1cea81e32176ffb1dcf643d422ad07427e5d9 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data + healthcheck: + test: [ "CMD", "redis-cli", "ping" ] + interval: 5s + timeout: 5s + retries: 5 diff --git a/maybe/hooks/pre-start b/maybe/hooks/pre-start new file mode 100755 index 0000000..f7aa18f --- /dev/null +++ b/maybe/hooks/pre-start @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт проверяет наличие каталогов data/data/redis и создает их + устанавливает правильные разрешения, если они не существуют. + +# Каталог приложений находится на один уровень выше, чем в этом скрипте. +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="${APP_DIR}/data" +APP_DATA_REDIS_DIR="${APP_DATA_DIR}/redis" +DESIRED_OWNER="1000:1000" + +set_correct_permissions() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown -R "${DESIRED_OWNER}" "${path}" + fi + fi +} + +create_directory_if_not_exists() { + local -r dir="${1}" + if [[ ! -d "${dir}" ]]; then + mkdir -p "${dir}" + set_correct_permissions "${dir}" + fi +} + +move_file_if_exists() { + local -r src="${1}" + local -r dest="${2}" + if [[ -f "${src}" ]]; then + mv "${src}" "${dest}" + fi +} + +# Создайте каталоги, если они не существуют. +create_directory_if_not_exists "${APP_DATA_DIR}" +create_directory_if_not_exists "${APP_DATA_REDIS_DIR}" diff --git a/mazanoke/dfwebos-app.yml b/mazanoke/dfwebos-app.yml new file mode 100644 index 0000000..c95a7b7 --- /dev/null +++ b/mazanoke/dfwebos-app.yml @@ -0,0 +1,33 @@ +manifestVersion: 1 +id: mazanoke +name: Mazanoke +tagline: Самостоятельный локальный оптимизатор изображений. +category: files +version: "1.1.5" +port: 3474 +description: >- + Mazanoke — это оптимизатор изображений, ориентированный на конфиденциальность, который полностью работает в браузере, не полагаясь на внешние серверы. Разработанное как прогрессивное веб-приложение (PWA), оно обеспечивает бесперебойную работу в автономном режиме и может быть установлено непосредственно на ваше устройство для быстрого доступа. + + + Приложение позволяет пользователям оптимизировать и конвертировать изображения без ущерба для их конфиденциальности. Все задачи, такие как настройка качества, изменение размера до определенных размеров, преобразование форматов и сжатие файлов, выполняются локально на устройстве. Поддерживаемые форматы включают JPEG, PNG, WebP, а также SVG и GIF, которые преобразуются в оптимизированные PNG. + + + Mazanoke имеет отзывчивый и интуитивно понятный интерфейс, который плавно работает на настольных компьютерах, планшетах и ​​смартфонах. Он автоматически адаптируется к темному или светлому режиму системы для комфортного использования. + + + Выпущенный под лицензией GPL 3.0, Mazanoke имеет открытый исходный код и создан для людей, которым нужны мощные инструменты обработки изображений, сохраняя при этом полный контроль над своими данными. +developer: civilblur +website: https://mazanoke.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3184 +repo: https://github.com/civilblur/mazanoke +support: https://github.com/civilblur/mazanoke/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: "" +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/mazanoke/docker-compose.yml b/mazanoke/docker-compose.yml new file mode 100644 index 0000000..7581d14 --- /dev/null +++ b/mazanoke/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: mazanoke_web_1 + APP_PORT: 80 + + web: + image: ghcr.io/civilblur/mazanoke:v1.1.5@sha256:e43dc48de575b7a032bbefd96b890d69c1f141417e43d5d096469aa1398711d6 + # без рута не работает + #user: "1000:1000" + restart: on-failure + healthcheck: + test: ["CMD-SHELL", "nc -z 127.0.0.1 80 || exit 1"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 90s diff --git a/mealie/data/.gitkeep b/mealie/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mealie/dfwebos-app.yml b/mealie/dfwebos-app.yml new file mode 100644 index 0000000..d101473 --- /dev/null +++ b/mealie/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: mealie +category: files +name: Mealie +version: "3.16.0" +tagline: Место для всех ваших рецептов +description: >- + Мили — самостоятельный менеджер рецептов и планировщик еды. Легко добавляйте рецепты, предоставляя + URL-адрес, и Мили автоматически импортирует соответствующие данные или добавит семейный рецепт с помощью редактора интерфейс. Мили также + предоставляет API для взаимодействия со сторонними приложениями. + + + Ключевые особенности: + + - Импорт рецептов: создавайте рецепты, импортируя их по URL-адресу или вводя данные вручную. + + - Планировщик еды: используйте Планировщик еды, чтобы спланировать, что вы приготовите на следующую неделю. + + - Список покупок: поместите необходимые ингредиенты в свой список покупок, разбитый на разделы в местном супермаркете. + + - Кулинарные книги: группируйте рецепты в кулинарные книги на основе ваших собственных критериев. + + - Локализация: переводы на более чем 35 языков. +developer: Hayden +website: https://docs.mealie.io/ +dependencies: [] +repo: https://github.com/hay-kot/mealie +support: https://github.com/hay-kot/mealie/issues +port: 9925 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/608 +releaseNotes: >- + Это обновление включает в себя новые функции, исправления ошибок и улучшения в нескольких версиях. + + + Основные моменты: + — Манифест PWA перенесен на серверную часть, исправлено несоблюдение пользовательских цветов темы. + - Исправлены пустые поля конструктора фильтров запросов. + - Исправлены заголовки разделов ингредиентов, которые терялись при анализе ингредиентов рецепта. + - Исправлены различные проблемы с макетом интерфейса. + - Исправлены уязвимости обхода путей при импорте изображений миграции и маршрутах мультимедиа. + + + Полные примечания к выпуску можно найти по адресу https://github.com/mealie-recipes/mealie/releases. \ No newline at end of file diff --git a/mealie/docker-compose.yml b/mealie/docker-compose.yml new file mode 100644 index 0000000..809d0c7 --- /dev/null +++ b/mealie/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: mealie_web_1 + APP_PORT: 9000 + PROXY_AUTH_WHITELIST: "/api/*" + + web: + image: ghcr.io/mealie-recipes/mealie:v3.16.0@sha256:74496aed2c5055e3b7b6c4e1bb9b4f16b1f566601582b258a10bae851f19ac24 + restart: on-failure + environment: + # Разрешить дополнительную регистрацию пользователей без токена + ALLOW_SIGNUP: "true" + PUID: 1000 + PGID: 1000 + MAX_WORKERS: 1 + WEB_CONCURRENCY: 1 + volumes: + - ${APP_DATA_DIR}/data:/app/data diff --git a/memos/data/.gitkeep b/memos/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/memos/dfwebos-app.yml b/memos/dfwebos-app.yml new file mode 100644 index 0000000..1288173 --- /dev/null +++ b/memos/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: memos +category: files +name: Memos +version: "0.28.0" +tagline: Легко записывайте и делитесь своими замечательными мыслями +description: >- + Легкий сервис для создания заметок, ориентированный на конфиденциальность. + Легко записывайте и делитесь своими замечательными мыслями. + + - Открытый исходный код и бесплатно навсегда. Откройте для себя будущее, в котором творчество не знает границ, с нашим решением с открытым исходным кодом — бесплатным сегодня, завтра и всегда. + + - Самостоятельный хостинг с Docker за считанные секунды. Наслаждайтесь гибкостью, масштабируемостью и простотой настройки, которые обеспечивает Docker, что позволяет вам полностью контролировать свои данные и конфиденциальность. + + - Чистый текст с добавленной поддержкой Markdown. Попрощайтесь с непосильным умственным бременем форматирования и примите минималистский подход. + + - Настраивайте и делитесь своими заметками без особых усилий. Благодаря нашим интуитивно понятным функциям обмена вы можете легко сотрудничать и распространять свои заметки среди других. + + — RESTful API для сторонних сервисов. Ощутите мощь интеграции и раскройте новые возможности благодаря нашей поддержке RESTful API. +releaseNotes: >- + ⚠️ Критическое изменение: если вы ранее входили в систему через единый вход, после обновления вам необходимо один раз войти в систему, используя свое имя пользователя и пароль, а затем перейти в настройки учетной записи, чтобы повторно связать свою личность единого входа. + + + Этот выпуск включает в себя новые функции и исправления ошибок: + - Добавлена привязка идентификаторов пользователей SSO к локальным учетным записям Memos. + - Добавлена опция отображения времени создания или обновления заметки. + - Переработаны страницы управления учетной записью и SSO. + - Исправлена авторизация и проверка имени пользователя + - Исправлены устаревшие потоки аутентификации имени пользователя. + - Исправлена смешанная задача уценки и разделение списка маркеров. + - Исправлено сохранение состояния флажка задачи в редакторе. + - Исправлена проблема с исчезновением прокрутки раскрывающегося меню. + - Уменьшены накладные расходы на запросы к списку заметок. + + + Полные примечания к выпуску доступны по адресу https://github.com/usememos/memos/releases. +developer: Memos +website: https://www.usememos.com/ +dependencies: [] +repo: https://github.com/usememos/memos +support: https://github.com/usememos/memos/discussions +port: 5230 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: highghlow +submission: https://github.com/getumbrel/umbrel/pull/1043 diff --git a/memos/docker-compose.yml b/memos/docker-compose.yml new file mode 100644 index 0000000..ce6d5d3 --- /dev/null +++ b/memos/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: memos_main_1 + APP_PORT: 5230 + PROXY_AUTH_ADD: "false" + + main: + image: neosmemo/memos:0.28.0@sha256:06066de94333c091ee67c2ad5dec5f15bf5f35b31498c90092f9915dd05e9f92 + user: "1000:1000" + environment: + - MEMOS_MODE=prod + - MEMOS_PORT=5230 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/var/opt/memos diff --git a/mempool/data/.gitkeep b/mempool/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/mempool/dfwebos-app.yml b/mempool/dfwebos-app.yml new file mode 100644 index 0000000..192c196 --- /dev/null +++ b/mempool/dfwebos-app.yml @@ -0,0 +1,76 @@ +manifestVersion: 1 +id: mempool +category: bitcoin +name: mempool +version: "3.3.1" +tagline: Будьте своим собственным исследователем +description: >- + Запустите свой собственный экземпляр проекта с открытым исходным кодом Mempool и никому не доверяйте. + + + Используйте свой собственный узел для красивой визуализации данных о сети Bitcoin, транзакциях, блокчейне, мемпуле и многом другом. + + + Этот продукт включает данные GeoLite2, созданные MaxMind, доступные по адресу https://www.maxmind.com. +releaseNotes: >- + В этом выпуске мемпул обновляется с 3.2.1 до 3.3.1, включая выпуск функций 3.3.0. + + + Основные моменты: + - Предварительный просмотр транзакций Coinbase из заданий Stratum + - Визуализация дерева сценариев Taproot. + - Значки и подсветка Сигаша + - Сравнение и визуализация устаревших блоков + - Поддержка и маркировка очков в приложении. + - Поддержка Sub-1-Sat/vB + - Поддержка эфемерной пыли + - Отображение подписей в превью PSBT. + - Поддержка простоты (жидкая) + - /api/tx/:txId/merkle-proof API конечная точка для серверных частей, отличных от Esplora. + - Обновление Angular 16 -> 20 + - Рекомендации по десятичной плате + - Аннотации-свидетели Taproot + - Различные исправления и улучшения. + - Поддержка регистрации + + Полные примечания к выпуску можно найти по адресу https://github.com/mempool/mempool/releases. +developer: Mempool Holdings S.A. de C.V. +website: https://mempool.space/about +dependencies: + - bitcoin + - electrs +repo: https://github.com/mempool/mempool +support: https://mempool.space/sponsor +port: 3006 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +widgets: + - id: "stats" + type: "four-stats" + refresh: "5s" + endpoint: "widget-server:3000/widgets/fees" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "No priority" + text: "2" + subtext: "sat/vB" + - title: "Low priority" + text: "6" + subtext: "sat/vB" + - title: "Medium priority" + text: "18" + subtext: "sat/vB" + - title: "High priority" + text: "27" + subtext: "sat/vB" +submitter: Mempool Holdings S.A. de C.V. +submission: https://github.com/getumbrel/umbrel/pull/470 diff --git a/mempool/docker-compose.yml b/mempool/docker-compose.yml new file mode 100644 index 0000000..359ecc7 --- /dev/null +++ b/mempool/docker-compose.yml @@ -0,0 +1,84 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_MEMPOOL_IP + APP_PORT: $APP_MEMPOOL_PORT + PROXY_AUTH_ADD: "false" + web: + image: mempool/frontend:v3.3.1@sha256:0a162e7e0d26a01e9686ddf69c96c4beae5fe10b0daa1020f3d392e033c058f1 + user: "1000:1000" + init: true + restart: on-failure + stop_grace_period: 1m + command: "./wait-for mariadb:3306 --timeout=720 -- nginx -g 'daemon off;'" + environment: + FRONTEND_HTTP_PORT: $APP_MEMPOOL_PORT + BACKEND_MAINNET_HTTP_HOST: $APP_MEMPOOL_API_IP + NGINX_PORT: $APP_MEMPOOL_PORT + NGINX_HOSTNAME: $APP_MEMPOOL_API_IP + LIGHTNING_DETECTED_PORT: $APP_MEMPOOL_LIGHTNING_NODE_PORT + networks: + default: + ipv4_address: $APP_MEMPOOL_IP + api: + image: mempool/backend:v3.3.1@sha256:358c0a517c8dcf26e7f5c02447de5bab33ec7e3fa6318685cf8012ce36098e3a + user: "1000:1000" + init: true + restart: on-failure + stop_grace_period: 1m + command: "./wait-for-it.sh mariadb:3306 --timeout=720 --strict -- ./start.sh" + volumes: + - ${APP_DATA_DIR}/data:/backend/cache + - ${DFWEBOS_ROOT}/app-data/lightning/data/lnd:/lnd:ro + environment: + CORE_RPC_HOST: $APP_BITCOIN_NODE_IP + CORE_RPC_PORT: $APP_BITCOIN_RPC_PORT + CORE_RPC_USERNAME: $APP_BITCOIN_RPC_USER + CORE_RPC_PASSWORD: $APP_BITCOIN_RPC_PASS + ELECTRUM_HOST: $APP_ELECTRS_NODE_IP + ELECTRUM_PORT: $APP_ELECTRS_NODE_PORT + ELECTRUM_TLS: "false" + DATABASE_HOST: $APP_MEMPOOL_DB_IP + DATABASE_PORT: "3306" + DATABASE_DATABASE: "mempool" + DATABASE_USERNAME: "mempool" + DATABASE_PASSWORD: "mempool" + MEMPOOL_HTTP_PORT: "8999" + MEMPOOL_CACHE_DIR: "/backend/cache" + MEMPOOL_CLEAR_PROTECTION_MINUTES: "20" + MEMPOOL_INDEXING_BLOCKS_AMOUNT: "52560" + MEMPOOL_STDOUT_LOG_MIN_PRIORITY: "info" + LIGHTNING_ENABLED: "true" + LIGHTNING_BACKEND: "lnd" + LIGHTNING_STATS_REFRESH_INTERVAL: 3600 + LIGHTNING_GRAPH_REFRESH_INTERVAL: 3600 + LND_TLS_CERT_PATH: "/lnd/tls.cert" + LND_MACAROON_PATH: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/readonly.macaroon" + LND_REST_API_URL: "https://$APP_MEMPOOL_LIGHTNING_NODE_IP:$APP_MEMPOOL_LIGHTNING_NODE_REST_PORT" + LND_TIMEOUT: 120000 + NODE_OPTIONS: "--max-old-space-size=2048" + networks: + default: + ipv4_address: $APP_MEMPOOL_API_IP + mariadb: + image: mariadb:10.5.12@sha256:dfcba5641bdbfd7cbf5b07eeed707e6a3672f46823695a0d3aba2e49bbd9b1dd + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/mysql/data:/var/lib/mysql + environment: + MYSQL_DATABASE: "mempool" + MYSQL_USER: "mempool" + MYSQL_PASSWORD: "mempool" + MYSQL_ROOT_PASSWORD: "moneyprintergobrrr" + networks: + default: + ipv4_address: $APP_MEMPOOL_DB_IP + widget-server: + image: getumbrel/umbrel-mempool-widget-server:v1.0.0@sha256:099846e613c7310deba842241477737babcdf78250fba6edf39d456712eeefc3 + environment: + MEMPOOL_API_URL: "http://$APP_MEMPOOL_IP:$APP_MEMPOOL_PORT/api/v1/fees/recommended" + restart: on-failure \ No newline at end of file diff --git a/mempool/exports.sh b/mempool/exports.sh new file mode 100644 index 0000000..fd196a5 --- /dev/null +++ b/mempool/exports.sh @@ -0,0 +1,17 @@ +export APP_MEMPOOL_IP="10.21.21.26" +export APP_MEMPOOL_PORT="3006" +export APP_MEMPOOL_API_IP="10.21.21.27" +export APP_MEMPOOL_DB_IP="10.21.21.28" + +hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}/hostname" +export APP_MEMPOOL_HIDDEN_SERVICE="$(cat "${hidden_service_file}" 2>/dev/null || echo "")" + +# Проверьте, установлено ли приложение Lightning Node, и если да, экспортируйте необходимые переменные. +# Приложение Lightning Node является необязательным и не указано в поле `required` файла dfwebos-app.yml, поэтому нам нужно сделать это для совместимости с umbrelOS >=1.3, где экспортируются только необходимые приложения. +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +if echo "$installed_apps" | grep --quiet 'lightning'; then + export APP_MEMPOOL_LIGHTNING_NODE_PORT="9735" + export APP_MEMPOOL_LIGHTNING_NODE_IP="10.21.21.9" + export APP_MEMPOOL_LIGHTNING_NODE_REST_PORT="8080" +fi \ No newline at end of file diff --git a/mempool/mysql/data/.gitkeep b/mempool/mysql/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/metube/dfwebos-app.yml b/metube/dfwebos-app.yml new file mode 100644 index 0000000..51ab663 --- /dev/null +++ b/metube/dfwebos-app.yml @@ -0,0 +1,30 @@ +manifestVersion: 1 +id: metube +category: media +name: MeTube +version: "2026.04.26" +tagline: Скачать видео с YouTube +description: >- + Загрузите видео с YouTube (и десятков других сайтов) прямо на свой DFWebOS. +developer: Alex Shnitman +dependencies: [] +repo: https://github.com/alexta69/metube +port: 3700 +releaseNotes: >- + Основные моменты: + - Добавлена поддержка загрузок с ограничением по времени (загрузка определенных фрагментов видео). + - Добавлена фильтрация заголовков для подписок. + + + Полные примечания к выпуску можно найти по адресу https://github.com/alexta69/metube/releases. +support: https://github.com/alexta69/metube/issues +website: https://github.com/alexta69/metube +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: MontejoJorge +submission: https://github.com/getumbrel/dfwebos-apps/pull/864 diff --git a/metube/docker-compose.yml b/metube/docker-compose.yml new file mode 100644 index 0000000..0ec9bfc --- /dev/null +++ b/metube/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: metube_metube_1 + APP_PORT: 8081 + + metube: + image: ghcr.io/alexta69/metube:2026.04.26@sha256:ee9a49b477215d33a8c330e9b9bb5c70588e265637cba9ff3888b75b87c00bf0 + restart: on-failure + volumes: + - ${DFWEBOS_ROOT}/data/storage/downloads/metube:/downloads + environment: + - DELETE_FILE_ON_TRASHCAN=true diff --git a/miner-sentinel/data/db/.gitkeep b/miner-sentinel/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/miner-sentinel/dfwebos-app.yml b/miner-sentinel/dfwebos-app.yml new file mode 100644 index 0000000..7fc3dfb --- /dev/null +++ b/miner-sentinel/dfwebos-app.yml @@ -0,0 +1,67 @@ +manifestVersion: 1 +id: miner-sentinel +category: bitcoin +name: MinerSentinel +version: "1.0.0-1" +tagline: Единая панель мониторинга для майнеров Bitaxe и Avalon Bitcoin +description: >- + MinerSentinel — это автономное решение для мониторинга, предназначенное для домашних майнеров Bitcoin, использующих ASIC-устройства Bitaxe и Avalon Nano 3s. Он предоставляет централизованную панель мониторинга для отслеживания показателей производительности, работоспособности и прибыльности всего вашего горнодобывающего парка. + + + **Мониторинг устройств в режиме реального времени** + + Отслеживайте хешрейт, температуру, энергопотребление и эффективность каждого устройства. + Визуальные индикаторы состояния сразу показывают онлайн-/оффлайн-состояние и состояние оборудования. + + + **Управление несколькими устройствами** + + Добавляйте неограниченное количество майнеров Bitaxe и Avalon через простой веб-интерфейс. + Динамическое управление устройствами позволяет добавлять или удалять устройства без перезапуска службы. + Каждое устройство отображает индивидуальную статистику с детализацией. + + + **Интеграция пула** + + Встроенная поддержка статистики индивидуального майнинга CKPool и Public Pool. + Отслеживайте свои лучшие акции, количество рабочих и хешрейт на стороне пула. + Просмотрите исторические данные о сложности и расчеты вероятности открытия одиночного блока. + + + **Расширенная аналитика** + + Визуализируйте тенденции производительности с помощью интерактивных диаграмм. + Сравнивайте эффективность различных устройств, анализируйте структуру энергопотребления и прогнозируйте потребности в обслуживании. + Данные временных рядов, хранящиеся в PostgreSQL, позволяют анализировать исторические тенденции. + + + **Интеллектуальные оповещения** + + Интеграция Telegram обеспечивает мгновенные уведомления о критических событиях. + Получайте оповещения о статусе устройства в автономном режиме, стагнации хешрейта и новых достижениях на лучшей сложности. + Автоматический перезапуск устройства предпринимается при обнаружении стагнации. + + + **Создан для независимости** + + Работает полностью на вашем собственном оборудовании без каких-либо внешних зависимостей. Все данные остаются локальными. + Разработан для DFWebOS с контейнеризацией Docker для простоты развертывания и обновления. +releaseNotes: >- + Это обновление решает проблему со входом в приложение. +developer: Davide Bert +website: https://github.com/dcbert/miner-sentinel +dependencies: [] +repo: https://github.com/dcbert/miner-sentinel +support: https://github.com/dcbert/miner-sentinel/issues +port: 3080 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultUsername: "admin" +deterministicPassword: true +submitter: Davide Bert +submission: "https://github.com/getumbrel/dfwebos-apps/pull/4354" diff --git a/miner-sentinel/docker-compose.yml b/miner-sentinel/docker-compose.yml new file mode 100644 index 0000000..cfd5405 --- /dev/null +++ b/miner-sentinel/docker-compose.yml @@ -0,0 +1,90 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: miner-sentinel_frontend_1 + APP_PORT: 80 + + db: + image: postgres:17.7@sha256:bac8128cd62a35471a1e97966861aa2ac88c8d2f408767a425ae70695a607c99 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + environment: + POSTGRES_USER: minersentinel + POSTGRES_PASSWORD: minersentinel + POSTGRES_DB: minersentinel + healthcheck: + test: ["CMD-SHELL", "pg_isready -U minersentinel"] + interval: 10s + timeout: 5s + retries: 5 + + backend: + image: dcbert/minersentinel-backend:1.0.0@sha256:0a545cb0dbbaa7772560963ebb4cff63ad3919ac1ba8750aa5850388a7b1788c + restart: on-failure + stop_grace_period: 1m + depends_on: + - db + environment: + # Конфигурация базы данных + DB_HOST: miner-sentinel_db_1 + DB_PORT: 5432 + POSTGRES_DB: minersentinel + POSTGRES_USER: minersentinel + POSTGRES_PASSWORD: minersentinel + # Настройки Джанго + DJANGO_SECRET_KEY: ${APP_SEED} + DJANGO_DEBUG: "False" + ALLOWED_HOSTS: "*" + CORS_ALLOWED_ORIGINS: "http://${DEVICE_DOMAIN_NAME}:3080,http://*.ts.net:3080" + CSRF_TRUSTED_ORIGINS: "http://${DEVICE_DOMAIN_NAME}:3080,http://*.ts.net:3080" + DJANGO_SUPERUSER_USERNAME: admin + DJANGO_SUPERUSER_PASSWORD: $APP_PASSWORD + DJANGO_SUPERUSER_EMAIL: "admin@umbrel.local" + # API URL для внешнего интерфейса + API_BASE_URL: "http://${DEVICE_DOMAIN_NAME}:3080" + command: > + sh -c " + python manage.py migrate && + python manage.py collectstatic --noinput && + (python manage.py createsuperuser --no-input || + echo 'Superuser already exists or created — winning!') && + gunicorn minersentinel.wsgi:application --bind 0.0.0.0:8000 --workers 2 --timeout 120 + " + + frontend: + image: dcbert/minersentinel-frontend:1.0.0@sha256:2144eb49160f841f0d4191a59942f7b18a1a3e89058332c2e6e807886158652a + restart: on-failure + stop_grace_period: 1m + depends_on: + - backend + environment: + VITE_API_URL: "http://${DEVICE_DOMAIN_NAME}:3080" + + data-service: + image: dcbert/minersentinel-data-service:1.0.0@sha256:aee26fe4db5f5d6d403154e73f609b454eccc54e7c78f21998dfda7ff4f5f589 + restart: on-failure + stop_grace_period: 1m + depends_on: + - db + - backend + environment: + # Конфигурация базы данных + POSTGRES_HOST: miner-sentinel_db_1 + POSTGRES_PORT: 5432 + POSTGRES_DB: minersentinel + POSTGRES_USER: minersentinel + POSTGRES_PASSWORD: minersentinel + # Бэкэнд API + BACKEND_URL: "http://miner-sentinel_backend_1:8000" + # Интервалы опроса (в секундах) + BITAXE_POLL_INTERVAL: 60 + AVALON_POLL_INTERVAL: 60 + POOL_POLL_INTERVAL: 300 + # Уведомления Telegram (необязательно — настройте через администратора Django) + TELEGRAM_BOT_TOKEN: "" + TELEGRAM_CHAT_ID: "" diff --git a/minio/data/minio/.gitkeep b/minio/data/minio/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/minio/data/minio/.gitkeep @@ -0,0 +1 @@ + diff --git a/minio/dfwebos-app.yml b/minio/dfwebos-app.yml new file mode 100644 index 0000000..4071122 --- /dev/null +++ b/minio/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1 +id: minio +category: developer +name: MinIO +version: "RELEASE.2025-06-13T11-33-47Z" +tagline: Хранилище объектов для инфраструктуры данных ИИ +description: >- + MinIO — это высокопроизводительное хранилище объектов, совместимое с S3. Он создан для + крупномасштабные рабочие нагрузки ИИ/ML, озера данных и баз данных. Это программно-определяемый + и работает в любом облаке или локальной инфраструктуре. MinIO имеет двойную лицензию + под открытым исходным кодом GNU AGPL v3 и лицензией коммерческого предприятия. + + + Узнайте о функциях, которые делают MinIO наиболее широко используемым объектным хранилищем в отрасли: + + - Неизменяемость сегментов и объектов + - Шифрование + - Активная активная репликация для объектного хранилища + - Автоматизированные интерфейсы управления данными + - Объектное хранилище, созданное для S3 + - Управление жизненным циклом данных и многоуровневое распределение + - Масштабируемое хранилище объектов + - Управление идентификацией и доступом +developer: "MinIO, Inc." +submitter: maipal-c +submission: https://github.com/getumbrel/dfwebos-apps/pull/982 +website: https://min.io +dependencies: [] +repo: https://github.com/minio/minio +support: https://slack.min.io +port: 9011 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +defaultUsername: dfwebos +releaseNotes: >- + Этот выпуск включает улучшения производительности и надежности системы: + - Исправлены проблемы с листингом и загрузкой S3, связанные с ILM. + - Улучшены показатели репликации и конфигурация региона. + - Улучшенная сетевая политика и контроль выхода заданий. + - Незначительные модернизации кода и исправления стабильности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/minio/minio/releases. \ No newline at end of file diff --git a/minio/docker-compose.yml b/minio/docker-compose.yml new file mode 100644 index 0000000..8111bbe --- /dev/null +++ b/minio/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: minio_web_1 + APP_PORT: 9011 + PROXY_AUTH_ADD: "false" + + web: + image: quay.io/minio/minio:RELEASE.2025-06-13T11-33-47Z@sha256:064117214caceaa8d8a90ef7caa58f2b2aeb316b5156afe9ee8da5b4d83e12c8 + restart: on-failure + user: "1000:1000" + stop_grace_period: 1m + ports: + # MinIO Порт API-сервера + - "9010:9000" + command: ["server", "/data"] + volumes: + - ${APP_DATA_DIR}/data/minio:/data + environment: + MINIO_ROOT_USER: "dfwebos" + MINIO_ROOT_PASSWORD: "$APP_PASSWORD" + MINIO_CONSOLE_ADDRESS: ":9011" diff --git a/monero/data/app/.gitkeep b/monero/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/monero/data/i2pd/.gitkeep b/monero/data/i2pd/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/monero/data/monero/.gitkeep b/monero/data/monero/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/monero/dfwebos-app.yml b/monero/dfwebos-app.yml new file mode 100644 index 0000000..3f04cc9 --- /dev/null +++ b/monero/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1.1 +id: monero +category: crypto +name: Monero Node +version: "0.18.4.6" +tagline: Запуск узла Monero +description: >- + Запустите свой узел Monero и независимо сохраняйте и проверяйте с его помощью каждую транзакцию Monero. + Это полный узел, который загрузит весь блокчейн Monero и сохранит его на вашем DFWebOS. + Это наиболее безопасный способ запуска узла Monero, но его синхронизация займет много времени и потребует много места для хранения. +developer: deverickapollo +website: https://www.getmonero.org/ +dependencies: [] +repo: https://github.com/deverickapollo/umbrel-monero +support: https://github.com/deverickapollo/umbrel-monero/issues +port: 9976 +submitter: deverickapollo +submission: https://github.com/getumbrel/dfwebos-apps/pull/690 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +releaseNotes: >- + Это версия программного обеспечения Monero v0.18.4.6. Этот выпуск содержит исправления ошибок. + + + + Некоторые основные моменты этого выпуска: + - Демон: исправлена ошибка в фильтре списка пиров. + - Демон: исправлены ошибки соединения p2p. + - Multisig: исправлен сбой обмена ключами в Monero-gen-trusted-multisig. + - Мелкие исправления ошибок и улучшения + + Более подробную информацию можно найти по адресу https://www.getmonero.org/2026/03/04/monero-0.18.4.6-released.html. \ No newline at end of file diff --git a/monero/docker-compose.yml b/monero/docker-compose.yml new file mode 100644 index 0000000..df24159 --- /dev/null +++ b/monero/docker-compose.yml @@ -0,0 +1,79 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: monero_server_1 + APP_PORT: 9976 + + server: + image: deverickapollo/umbrel-monero:v1.0.8@sha256:4cfb0a9b852175b73c9c3cb37771eb28c20fd21140bb85a98726dd6d09ee03f9 + depends_on: [monerod] + restart: on-failure + expose: + - "9976" + volumes: + - ${APP_DATA_DIR}/data/app:/data # volume to persist advanced settings json + - ${APP_MONERO_DATA_DIR}:/monero/.monero # volume to persist bitmonero.conf + environment: + PORT: "9976" + MONERO_HOST: "${APP_MONERO_NODE_IP}" + MONERO_P2P_PORT: "${APP_MONERO_P2P_PORT}" + MONERO_RPC_PORT: "${APP_MONERO_RPC_PORT}" + MONERO_RESTRICTED_RPC_PORT: "${APP_MONERO_RESTRICTED_RPC_PORT}" + MONERO_DEFAULT_NETWORK: "${MONERO_DEFAULT_NETWORK}" + MONERO_RPC_USER: "${APP_MONERO_RPC_USER}" + MONERO_RPC_PASSWORD: "${APP_MONERO_RPC_PASS}" + MONERO_RPC_HIDDEN_SERVICE: "${APP_MONERO_RPC_HIDDEN_SERVICE}" + MONERO_P2P_HIDDEN_SERVICE: "${APP_MONERO_P2P_HIDDEN_SERVICE}" + DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}" + MONEROD_IP: "${APP_MONERO_NODE_IP}" + TOR_PROXY_IP: "${APP_MONERO_TOR_PROXY_IP}" + TOR_PROXY_PORT: "9050" + TOR_PROXY_CONTROL_PORT: "9051" + TOR_PROXY_CONTROL_PASSWORD: "moneyprintergobrrr" + I2P_DAEMON_IP: "${APP_MONERO_I2P_DAEMON_IP}" + I2P_DAEMON_PORT: "7656" + networks: + default: + ipv4_address: $APP_MONERO_IP + + monerod: + user: "1000:1000" + # "unless-stopped" обеспечивает перезапуск monerod через перезапуск демона интерфейс-triggered, а не только в случае сбоя. + restart: unless-stopped + stop_grace_period: 15m + command: "${APP_MONERO_COMMAND}" + image: ghcr.io/sethforprivacy/simple-monerod:v0.18.4.6@sha256:ed9299d73634a13f10de85e63d104276bf5e4ce5175ee4cc16f64f4bbeacbbd4 + ports: + - "${APP_MONERO_P2P_PORT}:${APP_MONERO_P2P_PORT}" + - "${APP_MONERO_RPC_PORT}:${APP_MONERO_RPC_PORT}" + volumes: + - "${APP_MONERO_DATA_DIR}:/home/monero/.bitmonero" + networks: + default: + ipv4_address: $APP_MONERO_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" + networks: + default: + ipv4_address: "${APP_MONERO_TOR_PROXY_IP}" + + # i2pd_daemon: + # image: purplei2p/i2pd:release-2.44.0@sha256:d154a599793c393cf9c91f8549ba7ece0bb40e5728e1813aa6dd4c210aa606f6 + # user: "root" + # command: --sam.enabled=true --sam.address=0.0.0.0 --sam.port=7656 --loglevel=error + # restart: on-failure + # объемы: + # - ${APP_DATA_DIR}/data/i2pd:/home/i2pd/data + # сети: + # по умолчанию: + # ipv4_address: "${APP_MONERO_I2P_DAEMON_IP}" diff --git a/monero/exports.sh b/monero/exports.sh new file mode 100644 index 0000000..5bb497c --- /dev/null +++ b/monero/exports.sh @@ -0,0 +1,95 @@ +export APP_MONERO_IP="10.21.22.178" +export APP_MONERO_NODE_IP="10.21.21.179" +export APP_MONERO_TOR_PROXY_IP="10.21.21.180" +export APP_MONERO_I2P_DAEMON_IP="10.21.21.181" + +export APP_MONERO_DATA_DIR="${EXPORTS_APP_DIR}/data/monero" +export APP_MONERO_RPC_PORT="18081" +export APP_MONERO_RESTRICTED_RPC_PORT="18089" +export APP_MONERO_P2P_PORT="18080" +export APP_MONERO_TOR_PORT="9901" + +#временно настроен на основную сеть +MONERO_NETWORK="mainnet" +MONERO_CHAIN="mainnet" +MONERO_ENV_FILE="${EXPORTS_APP_DIR}/.env" + +{ + MONERO_APP_CONFIG_FILE="${EXPORTS_APP_DIR}/data/app/monero-config.json" + if [[ -f "${MONERO_APP_CONFIG_FILE}" ]] + then + monero_app_network=$(jq -r '.network' "${MONERO_APP_CONFIG_FILE}") + case $monero_app_network in + "mainnet") + MONERO_NETWORK="mainnet";; + "testnet") + MONERO_NETWORK="testnet";; + "stagenet") + MONERO_NETWORK="stagenet";; + esac + fi +} > /dev/null || true + + + +if [[ ! -f "${MONERO_ENV_FILE}" ]]; then + if [[ -z "${MONERO_NETWORK}" ]]; then + MONERO_NETWORK="mainnet" + fi + + if [[ -z ${MONERO_RPC_USER+x} ]] || [[ -z ${MONERO_RPC_PASS+x} ]] || [[ -z ${MONERO_RPC_AUTH+x} ]]; then + MONERO_RPC_USER="monero" + MONERO_RPC_DETAILS=$("${EXPORTS_APP_DIR}/scripts/rpcauth.py" "${MONERO_RPC_USER}") + MONERO_RPC_PASS=$(echo "$MONERO_RPC_DETAILS" | tail -1) + MONERO_RPC_AUTH=$(echo "$MONERO_RPC_DETAILS" | head -2 | tail -1 | sed -e "s/^rpc-login=//") + fi + + echo "export APP_MONERO_NETWORK='${MONERO_NETWORK}'" > "${MONERO_ENV_FILE}" + echo "export APP_MONERO_RPC_USER='${MONERO_RPC_USER}'" >> "${MONERO_ENV_FILE}" + echo "export APP_MONERO_RPC_PASS='${MONERO_RPC_PASS}'" >> "${MONERO_ENV_FILE}" + echo "export APP_MONERO_RPC_AUTH='${MONERO_RPC_AUTH}'" >> "${MONERO_ENV_FILE}" +fi + +. "${MONERO_ENV_FILE}" + +# Убедитесь, что мы не сохраняем исходное значение в .env, если у нас есть более свежая версия. +# значение из конфигурации приложения +{ + if [[ ! -z ${MONERO_NETWORK+x} ]] && [[ "${MONERO_NETWORK}" ]] && [[ "${APP_MONERO_NETWORK}" ]] + then + APP_MONERO_NETWORK="${MONERO_NETWORK}" + fi +} > /dev/null || true + +if [[ "${APP_MONERO_NETWORK}" == "mainnet" ]]; then + MONERO_CHAIN="mainnet" +elif [[ "${APP_MONERO_NETWORK}" == "testnet" ]]; then + MONERO_CHAIN="testnet" + export APP_MONERO_RPC_PORT="28081" + export APP_MONERO_P2P_PORT="28080" + +elif [[ "${APP_MONERO_NETWORK}" == "stagenet" ]]; then + MONERO_CHAIN="stagenet" + export APP_MONERO_RPC_PORT="38081" + export APP_MONERO_P2P_PORT="38080" +else + echo "Warning (${EXPORTS_APP_ID}): Monero Network '${APP_MONERO_NETWORK}' is not supported" +fi + +export MONERO_DEFAULT_NETWORK="${MONERO_CHAIN}" + +BIN_ARGS=() +BIN_ARGS+=( "--rpc-bind-port=${APP_MONERO_RPC_PORT}" ) +BIN_ARGS+=( "--rpc-bind-ip=0.0.0.0" ) +BIN_ARGS+=( "--confirm-external-bind" ) + +BIN_ARGS+=( "--rpc-login=\"${APP_MONERO_RPC_AUTH}\"" ) + +export APP_MONERO_COMMAND=$(IFS=" "; echo "${BIN_ARGS[@]}") + +# эхо "${APP_MONERO_COMMAND}" + +rpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rpc/hostname" +p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname" +export APP_MONERO_RPC_HIDDEN_SERVICE="$(cat "${rpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" +export APP_MONERO_P2P_HIDDEN_SERVICE="$(cat "${p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" \ No newline at end of file diff --git a/monero/hooks/pre-start b/monero/hooks/pre-start new file mode 100755 index 0000000..3f7e306 --- /dev/null +++ b/monero/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку Monero до тех пор, пока не будут готовы скрытые службы Tor RPC и P2P. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach monerod +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/monero/scripts/rpcauth.py b/monero/scripts/rpcauth.py new file mode 100755 index 0000000..29db990 --- /dev/null +++ b/monero/scripts/rpcauth.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +# Copyright (c) 2015-2018 Разработчики Bitcoin Core +# Распространяется по лицензии на программное обеспечение MIT, см. прилагаемый документ. +# файл COPYING или http://www.opensource.org/licenses/mit-license.php. + +from argparse import ArgumentParser +from base64 import urlsafe_b64encode +from binascii import hexlify +from getpass import getpass +from os import urandom + +import hmac + +def generate_salt(size): + """Create size byte hex salt""" + return hexlify(urandom(size)).decode() + +def generate_password(): + """Create 32 byte b64 password""" + return urlsafe_b64encode(urandom(32)).decode('utf-8') + +def password_to_hmac(salt, password): + m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), 'SHA256') + return m.hexdigest() + +def main(): + parser = ArgumentParser(description='Create login credentials for a JSON-RPC user') + parser.add_argument('username', help='the username for authentication') + parser.add_argument('password', help='leave empty to generate a random password or specify "-" to prompt for password', nargs='?') + args = parser.parse_args() + + if not args.password: + args.password = generate_password() + elif args.password == '-': + args.password = getpass() + + # Создать 16-байтовую шестнадцатеричную соль + # salt = generate_salt(16) + # password_hmac = password_to_hmac(salt, args.password) + + print('String to be appended to monerod.conf:') + # Заменен rpcauth на rpc-login для поддержки формата входа в систему rpc демона monero (имя пользователя:пароль) вместо (имя пользователя:salt$hash). + print('rpc-login={0}:{1}'.format(args.username, args.password)) + print('Your password:\n{0}'.format(args.password)) + +if __name__ == '__main__': + main() diff --git a/monero/torrc.template b/monero/torrc.template new file mode 100644 index 0000000..0b73bdf --- /dev/null +++ b/monero/torrc.template @@ -0,0 +1,13 @@ +SocksPort 0.0.0.0:9050 +ControlPort 0.0.0.0:9051 +CookieAuthentication 1 +CookieAuthFileGroupReadable 1 +HashedControlPassword 16:39AF5EEFA4FC1D986022FDFB13663669FE50FB6DE9A3B4FE4FC7D82010 # moneyprintergobrrr + +# MONERO Базовый P2P Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-p2p +HiddenServicePort $APP_MONERO_P2P_PORT $APP_MONERO_NODE_IP:$APP_MONERO_TOR_PORT + +# MONERO Базовый RPC Скрытый сервис +HiddenServiceDir /data/app-$APP_ID-rpc +HiddenServicePort $APP_MONERO_RPC_PORT $APP_MONERO_NODE_IP:$APP_MONERO_RPC_PORT \ No newline at end of file diff --git a/monetr/data/app/.gitkeep b/monetr/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/monetr/data/db/.gitkeep b/monetr/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/monetr/data/valkey/.gitkeep b/monetr/data/valkey/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/monetr/dfwebos-app.yml b/monetr/dfwebos-app.yml new file mode 100644 index 0000000..e1a2fa1 --- /dev/null +++ b/monetr/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1 +id: monetr +name: Monetr +tagline: Приложение для составления бюджета, ориентированное на планирование периодических расходов. +category: finance +version: "1.13.1" +port: 8379 +description: >- + 💸 Monetr — это приложение для управления личными финансами, которое помогает пользователям понимать свои расходы и четко управлять своими деньгами. Основное внимание уделяется представлению четкой картины доступных средств, показывая, сколько остается после учета предстоящих расходов и целей сбережений. Приложение позволяет пользователям организовывать свои финансы на основе реальных обязательств и запланированных расходов, а не полагаться на простой ежемесячный обзор. Он поддерживает повторяющиеся расходы любого интервала и использует их для расчета того, что необходимо отложить, чтобы будущие платежи всегда были покрыты. + + + Monetr предоставляет инструменты для категоризации транзакций, отслеживания структуры расходов и управления бюджетами таким образом, чтобы адаптироваться к индивидуальным финансовым привычкам. Это позволяет пользователям составить точный обзор своих финансовых обязательств и гарантирует, что в их балансе отражаются как регулярные, так и нерегулярные платежи. Система поощряет реалистичный подход к составлению бюджета, помогая пользователям намеренно распределять деньги и избегать неожиданных дефицитов. + + + Благодаря своему дизайну monetr стремится сделать личное финансовое планирование более предсказуемым и менее напряженным, предоставляя пользователям структурированное и прозрачное представление о своих финансах. +backupIgnore: + - data/valkey/* +developer: Monetr LLC. +website: https://monetr.app/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/4132 +repo: https://github.com/monetr/monetr +support: https://github.com/monetr/monetr/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Этот выпуск включает обновления зависимостей и безопасности: + - Обновлен PostCSS для устранения уязвимости безопасности. + - Обновлены различные зависимости внешнего и внутреннего интерфейса. + + + Полные примечания к выпуску можно найти по адресу https://github.com/monetr/monetr/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/monetr/docker-compose.yml b/monetr/docker-compose.yml new file mode 100644 index 0000000..9bb6ca9 --- /dev/null +++ b/monetr/docker-compose.yml @@ -0,0 +1,60 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: monetr_monetr_1 + APP_PORT: 4000 + + db: + image: postgres:17.9@sha256:7ad98329d513dd497293b951c195ca354274a77f12ddbbbbf85e68a811823d72 + user: "1000:1000" + environment: + POSTGRES_PASSWORD: m0netrPass123 + POSTGRES_USER: postgres + POSTGRES_DB: monetr + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres || exit 1"] + interval: 10s + timeout: 5s + retries: 10 + + valkey: + image: valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/valkey:/data + healthcheck: + test: ["CMD", "valkey-cli", "ping"] + interval: 10s + timeout: 5s + retries: 10 + + monetr: + image: ghcr.io/monetr/monetr:1.13.1@sha256:1a8b25adeaab4ef6560f502cef86641da2f9be4964ee50d34b8362ae46a6ff94 + user: "1000:1000" + command: + - serve + - --migrate + - --generate-certificates + depends_on: + db: + condition: service_healthy + valkey: + condition: service_healthy + volumes: + - ${APP_DATA_DIR}/data/app:/etc/monetr + environment: + MONETR_ALLOW_SIGN_UP: ${MONETR_ALLOW_SIGN_UP:-true} + MONETR_PG_USERNAME: postgres + MONETR_PG_PASSWORD: m0netrPass123 + MONETR_PG_DATABASE: monetr + MONETR_PG_ADDRESS: monetr_db_1 + MONETR_PG_PORT: 5432 + MONETR_REDIS_ENABLED: "true" + MONETR_REDIS_ADDRESS: monetr_valkey_1 + MONETR_REDIS_PORT: 6379 + MONETR_STORAGE_ENABLED: ${MONETR_STORAGE_ENABLED:-true} + MONETR_STORAGE_PROVIDER: ${MONETR_STORAGE_PROVIDER:-filesystem} diff --git a/morphos/dfwebos-app.yml b/morphos/dfwebos-app.yml new file mode 100644 index 0000000..2ed9a5a --- /dev/null +++ b/morphos/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1 +id: morphos +category: files +name: Morphos server +version: "0.6.0" +tagline: Самостоятельный конвертер файлов +description: >- + Сегодня мы вынуждены полагаться на сторонние сервисы для конвертации файлов в другие форматы. Это серьезная угроза нашей конфиденциальности, если мы используем подобные сервисы для конвертации файлов с особо конфиденциальными личными данными. Рано или поздно это может быть использовано против нас. + + + Сервер Morphos призван решить упомянутую выше проблему, предоставляя автономный сервер для частного преобразования файлов. Проект предоставляет удобный веб-сайт интерфейс. + + + Функции: + + - Конвертируйте изображения в другие форматы изображений. + + - Конвертируйте PDF в изображения и наоборот. + + - Конвертируйте DOCX в PDF и наоборот + + - Конвертируйте XLSX в CSV и наоборот. +releaseNotes: >- + Новые возможности: + - Добавить темный режим + - Добавьте ffmpeg для обработки изображений. + - Добавить поддержку электронных книг. + - Добавьте API, чтобы другие системы могли взаимодействовать с морфами. + + Исправления ошибок: + - Исправлен предварительный просмотр zip-файлов. + - Добавьте пользователя без полномочий root в файл dockerfile. +developer: Dan Vergara +website: https://github.com/danvergara/morphos +submitter: danvergara +submission: https://github.com/getumbrel/dfwebos-apps/pull/1020 +dependencies: [] +repo: https://github.com/danvergara/morphos +support: https://github.com/danvergara/morphos/issues +port: 3778 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/morphos/docker-compose.yml b/morphos/docker-compose.yml new file mode 100644 index 0000000..4f86b67 --- /dev/null +++ b/morphos/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: morphos_web_1 + APP_PORT: 8080 + + web: + image: ghcr.io/danvergara/morphos-server:0.6.0@sha256:3d6f64ef386cbb6a7c5d55526e1a69da2d3661a1996d757897e92bf4369088f5 + restart: on-failure + stop_grace_period: 1m diff --git a/mosquitto/data/config/mosquitto.conf b/mosquitto/data/config/mosquitto.conf new file mode 100644 index 0000000..c08f5a0 --- /dev/null +++ b/mosquitto/data/config/mosquitto.conf @@ -0,0 +1,18 @@ +# Конфигурационный файл для Mosquitto +# См. mosquitto.conf(5) для получения дополнительной информации. + +# прослушиватель по умолчанию +listener 1883 + +# прослушиватель веб-сокетов (включая веб-сервер) +listener 9001 +protocol websockets + +# безопасность +allow_anonymous true +#файл_пароля +#acl_file + +# Путь к сертификату PEM в кодировке server/keyfile. +#файл сертификата +#ключевой файл diff --git a/mosquitto/data/log/.gitkeep b/mosquitto/data/log/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/mosquitto/data/log/.gitkeep @@ -0,0 +1 @@ + diff --git a/mosquitto/data/mosquitto/.gitkeep b/mosquitto/data/mosquitto/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/mosquitto/data/mosquitto/.gitkeep @@ -0,0 +1 @@ + diff --git a/mosquitto/data/nginx/default.conf b/mosquitto/data/nginx/default.conf new file mode 100644 index 0000000..b399756 --- /dev/null +++ b/mosquitto/data/nginx/default.conf @@ -0,0 +1,36 @@ +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +map $http_upgrade $upgrade_request { + default 1; + '' 0; +} + +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + + location / { + error_page 418 = @websocket; + + if ($upgrade_request = 1) { + return 418; + } + + try_files $uri $uri/ /index.html; + } + + location @websocket { + proxy_pass http://broker:9001; + proxy_http_version 1.1; + proxy_read_timeout 1d; + proxy_send_timeout 1d; + proxy_set_header Host $host; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + } +} diff --git a/mosquitto/data/www/favicon.png b/mosquitto/data/www/favicon.png new file mode 100644 index 0000000..fb71282 Binary files /dev/null and b/mosquitto/data/www/favicon.png differ diff --git a/mosquitto/data/www/index.html b/mosquitto/data/www/index.html new file mode 100644 index 0000000..6a0a834 --- /dev/null +++ b/mosquitto/data/www/index.html @@ -0,0 +1,308 @@ + + + Mosquitto + + + + + + +
+
+ +
+ ● Запущено +

Eclipse Mosquitto

+
+
+

+
+

Как подключиться к MQTT-брокеру

+

Выполните следующие шаги, чтобы подключиться к MQTT-брокеру:

+ +

MQTTX Web (веб-версия)

+
    +
  1. Установите MQTTX Web из магазина приложений DFWebOS.
  2. +
  3. Используйте umbrel.local в качестве адреса сервера.
  4. +
  5. Используйте порт 9021 в качестве порта сервера.
  6. +
  7. Нажмите connect, после чего вы сможете подписываться на нужные вам топики и публиковать сообщения.
  8. +
+ +

MQTT Explorer (Windows)

+
    +
  1. Установите MQTT Explorer с сайта mqtt-explorer.com.
  2. +
  3. Используйте umbrel.local в качестве адреса сервера.
  4. +
  5. Используйте порт 1883 в качестве порта сервера.
  6. +
  7. Нажмите connect, после чего вы сможете подписываться на нужные вам топики и публиковать сообщения.
  8. +
+ +

Используйте приведенные выше данные доступа, чтобы настроить устройства и сервисы для подключения к MQTT-брокеру.

+
+

🚨 Внимание 🚨

+

Если вы планируете открыть свой MQTT-брокер для доступа из интернета, вам настоятельно рекомендуется настроить аутентификацию.

+

Чтобы изменить конфигурацию вручную через mosquitto.conf, выполните следующие шаги:

+
    +
  • Откройте терминал через Settings -> Advanced settings -> Terminal -> umbrelOS
  • +
  • Введите sudo nano ~/umbrel/app-data/mosquitto/data/config/mosquitto.conf
  • +
+
+ + + diff --git a/mosquitto/data/www/logo.png b/mosquitto/data/www/logo.png new file mode 100644 index 0000000..dc4b1c0 Binary files /dev/null and b/mosquitto/data/www/logo.png differ diff --git a/mosquitto/dfwebos-app.yml b/mosquitto/dfwebos-app.yml new file mode 100644 index 0000000..ded9bbd --- /dev/null +++ b/mosquitto/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1.1 +id: mosquitto +name: Mosquitto +tagline: MQTT-брокер с открытым исходным кодом. +category: automation +version: "2.1.2" +port: 9021 +description: >- + Eclipse Mosquitto — это брокер сообщений с открытым исходным кодом (лицензия EPL/EDL), реализующий протокол MQTT версий 5.0, 3.1.1 и 3.1. Mosquitto легкий и подходит для использования на всех устройствах: от одноплатных компьютеров с низким энергопотреблением до полноценных серверов. + + + Протокол MQTT предоставляет упрощенный метод обмена сообщениями с использованием модели публикации/подписки. Это делает его подходящим для обмена сообщениями в Интернете вещей, например, с датчиками малой мощности или мобильными устройствами, такими как телефоны, встроенные компьютеры или микроконтроллеры. + + + Проект Mosquitto также предоставляет библиотеку C для реализации клиентов MQTT и очень популярные клиенты MQTT командной строки mosquitto_pub и mosquitto_sub. +developer: Eclipse Foundation +website: https://mosquitto.org/ +submitter: dirstel +submission: https://github.com/getumbrel/dfwebos-apps/pull/1789 +repo: https://github.com/eclipse-mosquitto/mosquitto +support: https://github.com/eclipse-mosquitto/mosquitto +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Это крупный новый выпуск со множеством новых функций и улучшений: + - Добавлена встроенная поддержка WebSockets, для которой больше не требуются libwebsockets. + - Добавлена поддержка протокола PROXY v1 и v2. + - Добавлены псевдонимы тем, созданные брокером, для MQTT v5. + - Добавлены новые параметры global_plugin, global_max_clients и global_max_connections. + - Добавлена опция `accept_protocol_versions` для ограничения того, какие версии MQTT разрешены для каждого прослушивателя. + - Добавлена опция `--test-config` для проверки конфигурации перед запуском в эксплуатацию. + - Добавлена поддержка переменных среды PUID/PGID для настройки привилегий пользователя/группы. + — Добавлены параметры «bridge_receive_maximum» и «bridge_session_expiry_interval» для мостов MQTT v5. + - Улучшена производительность простоя за счет сокращения ненужных пробуждений процессов. + - Добавлены новые плагины acl-файла, файла пароля, persist-sqlite и плагинов, поддерживающих свечи зажигания. + - Плагин динамической безопасности теперь генерирует начальную конфигурацию, если ее нет. + - ⚠️ `max_packet_size` теперь по умолчанию равен 2 000 000 байт вместо 256 МБ - обновите конфигурацию, если вы используете большие полезные нагрузки. + - ⚠️ Параметры `acl_file` и `password_file` устарели в пользу новых плагинов. + - ⚠️ Удалена поддержка TLS v1.1. + - ⚠️ Удалена поддержка версий OpenSSL старше 3.0. + - Исправлена проверка PUID/PGID для Docker. + - Исправлен конфликт плагина постоянства при использовании вместе с «persistence true». + - Различные исправления сборок, включая отсутствие libedit в сборках Docker. + + + Полные примечания к выпуску можно найти по адресу https://mosquitto.org/blog/. +dependencies: [] +path: "" +defaultUsername: "" diff --git a/mosquitto/docker-compose.yml b/mosquitto/docker-compose.yml new file mode 100644 index 0000000..35f37c9 --- /dev/null +++ b/mosquitto/docker-compose.yml @@ -0,0 +1,26 @@ +services: + + app_proxy: + environment: + APP_HOST: mosquitto_web_1 + APP_PORT: 80 + + broker: + image: eclipse-mosquitto:2.1.2-alpine@sha256:9cfdd46ad59f3e3e5f592f6baf57ab23e1ad00605509d0f5c1e9b179c5314d87 + restart: on-failure + ports: + - '1883:1883' + volumes: + - ${APP_DATA_DIR}/data/config:/mosquitto/config:rw + - ${APP_DATA_DIR}/data/mosquitto:/mosquitto/data:rw + - ${APP_DATA_DIR}/data/log:/mosquitto/log:rw + user: "1000:1000" + + web: + image: nginx:1.27@sha256:124b44bfc9ccd1f3cedf4b592d4d1e8bddb78b51ec2ed5056c52d3692baebc19 + restart: on-failure + depends_on: + - broker + volumes: + - ${APP_DATA_DIR}/data/www:/usr/share/nginx/html:ro + - ${APP_DATA_DIR}/data/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro diff --git a/mosquitto/hooks/pre-start b/mosquitto/hooks/pre-start new file mode 100755 index 0000000..4653e8c --- /dev/null +++ b/mosquitto/hooks/pre-start @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="${APP_DIR}/data" + +NGINX_CONFIG_DIR="${APP_DATA_DIR}/nginx" +NGINX_CONFIG_FILE="${NGINX_CONFIG_DIR}/default.conf" +MOSQUITTO_CONFIG_FILE="${APP_DATA_DIR}/config/mosquitto.conf" + +NGINX_MARKER_REGEX='^# DFWebOS Mosquitto canonical nginx.conf 17-Mar-2026$' +LEGACY_HTTP_DIR_LINE='http_dir /mosquitto/www' + +mkdir -p "${NGINX_CONFIG_DIR}" + +if [[ ! -f "${NGINX_CONFIG_FILE}" ]] || ! grep -qx "${NGINX_MARKER_REGEX}" "${NGINX_CONFIG_FILE}"; then + echo "Updating nginx configuration file for Mosquitto." + cat >"${NGINX_CONFIG_FILE}" <<'EOF' +# Зонт Mosquitto канонический nginx.conf 17 марта 2026 г. +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +map $http_upgrade $upgrade_request { + default 1; + '' 0; +} + +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + + location / { + error_page 418 = @websocket; + + if ($upgrade_request = 1) { + return 418; + } + + try_files $uri $uri/ /index.html; + } + + location @websocket { + proxy_pass http://broker:9001; + proxy_http_version 1.1; + proxy_read_timeout 1d; + proxy_send_timeout 1d; + proxy_set_header Host $host; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + } +} +EOF +fi + +if [[ -f "${MOSQUITTO_CONFIG_FILE}" ]] && grep -qxF "${LEGACY_HTTP_DIR_LINE}" "${MOSQUITTO_CONFIG_FILE}"; then + echo "Removing legacy http_dir configuration from mosquitto.conf." + sed -i '\|^http_dir /mosquitto/www$|d' "${MOSQUITTO_CONFIG_FILE}" +fi diff --git a/mqttx-web/dfwebos-app.yml b/mqttx-web/dfwebos-app.yml new file mode 100644 index 0000000..ca27b14 --- /dev/null +++ b/mqttx-web/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: mqttx-web +name: MQTTX Web +tagline: Ваш универсальный набор инструментов MQTT-клиента +category: automation +version: "1.13.0" +port: 9012 +description: >- + MQTTX Web — это браузерный клиент MQTT 5.0 WebSocket с открытым исходным кодом, который поможет вам быстрее отлаживать службы и приложения MQTT. + + + Пользовательский интерфейс (интерфейс) MQTTX основан на чате, что упрощает операционную логику. Он позволяет пользователям устанавливать несколько соединений MQTT, тем самым облегчая быстрое тестирование соединений MQTT/MQTTS, а также подписку и публикацию сообщений. +developer: EMQ +website: https://mqttx.app/ +submitter: dirstel +submission: https://github.com/getumbrel/dfwebos-apps/pull/1772 +repo: https://github.com/emqx/MQTTX +support: https://github.com/emqx/MQTTX/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Обновление инспектора полезной нагрузки и интерфейс с расширенной функциональностью: + + + Новые возможности: + - Параметры быстрого копирования информации о теме, брокере и хосте. + - Обнаружение пробелов в теме для предупреждения о начальных или конечных пробелах. + - Подсветка синтаксиса для отображения полезной нагрузки JSON. + - Поддержка выпусков Protobuf 2023 г. + + + Улучшения: + - Обновленный интерфейс с модернизированным стилем и более плавной анимацией. + - Упрощенный стиль списка соединений. + - Переработан дизайн страниц справки и информации. + + + Исправления ошибок: + - Исправлены проблемы с вводом темы, вызывающие ошибки подписки. + - Исправлен ввод темы и проблемы выбора стиля. + - Предотвращены новые строки во входных темах и псевдонимах. + + + Полные примечания к выпуску можно найти по адресу https://github.com/emqx/MQTTX/releases/tag/v1.13.0. +path: "" +dependencies: [] diff --git a/mqttx-web/docker-compose.yml b/mqttx-web/docker-compose.yml new file mode 100644 index 0000000..459eba2 --- /dev/null +++ b/mqttx-web/docker-compose.yml @@ -0,0 +1,10 @@ +services: + app_proxy: + environment: + APP_HOST: mqttx-web_app_1 + APP_PORT: 80 + + app: + image: emqx/mqttx-web:v1.13.0@sha256:64525ad96286280f85f9f1a3f74a98475d1bbfe7a8ee278f93fa6991e6090c9c + user: "1000:1000" + restart: on-failure diff --git a/mstream/data/.gitkeep b/mstream/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/mstream/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/mstream/dfwebos-app.yml b/mstream/dfwebos-app.yml new file mode 100644 index 0000000..4afca8e --- /dev/null +++ b/mstream/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: mstream +name: mStream +tagline: Частный музыкальный сервер +category: media +version: "6.5.7" +port: 3840 +description: >- + 💿 mStream — это автономный сервер потоковой передачи музыки, который позволяет транслировать вашу личную музыкальную коллекцию из любого места с помощью веб-браузера или совместимого приложения. После установки он сканирует ваш локальный музыкальный каталог и создает библиотеку, к которой вы можете получить удаленный доступ, делая вашу музыку доступной на вашем телефоне, планшете или компьютере, не полагаясь на сторонние сервисы. + + + Он поддерживает высококачественные аудиоформаты, такие как FLAC, и обеспечивает воспроизведение без пауз для плавного и непрерывного прослушивания. Пользовательский интерфейс понятен, отзывчив и прост в навигации, обеспечивая привычный интерфейс, аналогичный коммерческим музыкальным платформам. + + + Поскольку mStream имеет открытый исходный код и полностью работает на вашем собственном оборудовании, вся ваша музыка и данные остаются конфиденциальными. Здесь нет рекламы, подписок и сбора данных, что делает его надежным и ориентированным на конфиденциальность решением для управления вашей музыкальной библиотекой и ее использования на ваших собственных условиях. +developer: Iros Software +website: https://mstream.io/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3287 +repo: https://github.com/IrosTheBeggar/mStream +support: https://github.com/IrosTheBeggar/mStream/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Основные моменты этого выпуска: + - Полная поддержка Subsonic REST API с ключами API для каждого пользователя для аутентификации клиента. + - Поддержка DLNA/UPnP MediaServer с несколькими макетами просмотра и смарт-контейнерами. + - Поддержка текстов песен, включая встроенные теги и дополнительные файлы, с дополнительным резервным вариантом LRCLib. + - Поддержка нескольких исполнителей и компиляций треков и альбомов. + - Поддержка переименования плейлиста в интерфейс по умолчанию. + - Генерация сигналов в реальном времени во время сканирования с отображением сигналов в виде индикатора выполнения. + - Различные исправления ошибок, включая сбои при сканировании файлов, проблемы общедоступной настройки и проблемы с загрузкой в некоторых средах. + + + Полные примечания к выпуску можно найти по адресу https://github.com/IrosTheBeggar/mStream/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/mstream/docker-compose.yml b/mstream/docker-compose.yml new file mode 100644 index 0000000..91ece67 --- /dev/null +++ b/mstream/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: mstream_server_1 + APP_PORT: 3000 + + server: + image: linuxserver/mstream:6.5.7@sha256:c2952c4cb8fac901c4bb672788514473d58f84c2c02fe96132ba88e409817ff2 + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data:/config + - ${DFWEBOS_ROOT}/data/storage/downloads/music:/music diff --git a/music-assistant/data/settings.json b/music-assistant/data/settings.json new file mode 100644 index 0000000..5249244 --- /dev/null +++ b/music-assistant/data/settings.json @@ -0,0 +1,83 @@ +{ + "server_id": "ea22c850e3e74462bd24515d860c67bf", + "providers": { + "builtin": { + "values": {}, + "type": "music", + "domain": "builtin", + "instance_id": "builtin", + "enabled": true, + "name": "Music Assistant", + "last_error": null + }, + "fanarttv": { + "values": {}, + "type": "metadata", + "domain": "fanarttv", + "instance_id": "fanarttv", + "enabled": true, + "name": "fanart.tv", + "last_error": null + }, + "lrclib": { + "values": {}, + "type": "metadata", + "domain": "lrclib", + "instance_id": "lrclib", + "enabled": true, + "name": "LRCLIB", + "last_error": null + }, + "musicbrainz": { + "values": {}, + "type": "metadata", + "domain": "musicbrainz", + "instance_id": "musicbrainz", + "enabled": true, + "name": "MusicBrainz", + "last_error": null + }, + "sendspin": { + "values": {}, + "type": "player", + "domain": "sendspin", + "instance_id": "sendspin", + "enabled": true, + "name": "Sendspin", + "last_error": null + }, + "theaudiodb": { + "values": {}, + "type": "metadata", + "domain": "theaudiodb", + "instance_id": "theaudiodb", + "enabled": true, + "name": "The Audio DB", + "last_error": null + } + }, + "core": { + "metadata": { + "values": { + "language": "en_US" + }, + "domain": "metadata", + "last_error": null + }, + "webserver": { + "values": { + "base_url": "http://changeme:8896", + "bind_port": 8896 + }, + "domain": "webserver", + "last_error": null + }, + "streams": { + "values": { + "bind_port": 8078 + }, + "domain": "streams", + "last_error": null + } + } +} diff --git a/music-assistant/dfwebos-app.yml b/music-assistant/dfwebos-app.yml new file mode 100644 index 0000000..5200e67 --- /dev/null +++ b/music-assistant/dfwebos-app.yml @@ -0,0 +1,68 @@ +manifestVersion: 1.1 +id: music-assistant +name: Music Assistant +category: media +version: "2.8.6" +port: 8896 +tagline: Менеджер музыкальной библиотеки для ваших офлайн- и онлайн-источников музыки. +description: >- + Music Assistant — это менеджер музыкальной библиотеки для ваших офлайн- и онлайн-источников музыки, который позволяет легко транслировать вашу любимую музыку на широкий спектр поддерживаемых проигрывателей и сочетать ее с мощью Home Assistant! + + + Особенности: + - Поддержка нескольких источников музыки посредством реализации поставщика + - Поддерживаются многие популярные потоковые сервисы, а также локальные файлы. + - Автоматически сопоставляет музыку на разных провайдерах (связывание треков) + - Извлекает метаданные для расширенной информации об исполнителе. + - Отслеживает всю музыкальную библиотеку в компактной базе данных. + - Поддержка Gapless, Crossfade и нормализации громкости для всех игроков. + - Синхронизация воспроизведения возможна для поддерживаемых плееров + - Поддерживаются объявления во время воспроизведения + - Поддерживается передача воспроизведения между игроками + - Действительно беспроблемная потоковая передача вашей любимой музыки на плееры, никаких дополнительных знаний не требуется. + - Интеграция Home Assistant: подключает Home Assistant к вашему серверу Music Assistant, чтобы обеспечить управление с вашего экземпляра HA, автоматизировать музыку и голосовое управление! Интеграция также позволяет использовать медиаплееры HA для MA, расширяя возможности воспроизведения. + - Богатый пользовательский интерфейс (прогрессивное веб-приложение) на базе VueJS 3. + + + Music Assistant состоит из нескольких строительных блоков: + - Сервер музыкального помощника + - Интеграция Home Assistant + - Поставщики музыки: импортируйте музыку из различных источников в Music Assistant. + - Поставщики проигрывателей: воспроизводите свою музыку в широкой коллекции экосистем проигрывателей. + - Плагины: расширяют функциональность Music Assistant. + + + Сервер музыкального помощника: + - Сервер Music Assistant — это бесплатный менеджер медиатеки с открытым исходным кодом, который подключается к вашим потоковым сервисам и широкому спектру подключенных динамиков. Сервер — это бьющееся сердце, ядро ​​Music Assistant, отслеживающее ваши музыкальные источники. Он должен работать на постоянно включенном устройстве, таком как Raspberry Pi, NAS, Intel NUC или аналогичном. Сервер может иметь доступ к нескольким поставщикам музыки и осуществлять потоковую передачу на несколько типов проигрывателей. +developer: Music Assistant +website: https://www.music-assistant.io +repo: https://github.com/music-assistant/server +support: https://www.music-assistant.io/support/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск содержит различные исправления ошибок и улучшения: + - Исправлена утечка процесса в микшере интеллектуальных фейдов при прерывании воспроизведения. + - Повышена надежность команды AirPlay STOP. + - Исправлена ошибка, из-за которой действие постановки в очередь «заменить» останавливало воспроизведение музыки. + - Исправлено исчезновение ручных жанров после очистки. + - Исправлены рекомендации Tidal + - Исправлена 30-секундная задержка после переключения треков в Sendspin. + - Улучшен поиск в SoundCloud. + - Исправлен просмотр ORF Radiothek, возвращающийся на верхний уровень. + - Исправлена утечка учетных данных Qobuz при ошибках аутентификации. + - Реализован контроль мощности для игроков Squeezelite. + - Исправлена ошибка, из-за которой типы альбомов с несколькими значениями терялись при анализаторах тегов. + + + Полные примечания к выпуску можно найти по адресу https://github.com/music-assistant/server/releases. +dependencies: [] +permissions: + - STORAGE_DOWNLOADS +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: phelipebf +submission: "https://github.com/getumbrel/dfwebos-apps/pull/4528" diff --git a/music-assistant/docker-compose.yml b/music-assistant/docker-compose.yml new file mode 100644 index 0000000..a2bef5b --- /dev/null +++ b/music-assistant/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.7" + +services: + web: + image: ghcr.io/music-assistant/server:2.8.6@sha256:400697b305e45bd1712c019e67d22681219e91deb41afe88939f921b5fae137f + restart: on-failure + user: "1000:1000" + # Для правильной работы MA должен быть установлен сетевой режим. + network_mode: host + # интерфейс в data/settings.json определил порт 8896 + # Streamserver на порту по умолчанию 8078 + # Sendspin на порту по умолчанию 8927 + volumes: + - ${APP_DATA_DIR}/data:/data/ + - ${DFWEBOS_ROOT}/data/storage/downloads:/media + # привилегированные ограничения (и параметры безопасности), необходимые для монтирования папок smb внутри контейнера + cap_add: + - SYS_ADMIN + - DAC_READ_SEARCH + security_opt: + - apparmor=unconfined diff --git a/music-assistant/hooks/pre-start b/music-assistant/hooks/pre-start new file mode 100755 index 0000000..0a4f91d --- /dev/null +++ b/music-assistant/hooks/pre-start @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт проверяет файл настроек на наличие значений-заполнителей и заменяет их системными переменными. + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="$APP_DIR/data" +SETTINGS_FILE="$APP_DATA_DIR/settings.json" + +# Проверьте, существует ли файл +if [ ! -f "$SETTINGS_FILE" ]; then + echo "Error: Settings file not found at $SETTINGS_FILE" + exit 1 +fi + +# Замените заполнитель Changeme в base_url фактическим именем хоста устройства. +if grep -q '"base_url": "http://changeme:' "$SETTINGS_FILE"; then + echo "Placeholder 'changeme' detected in base_url. Replacing with device hostname..." + + sed -i "s|http://changeme:|http://${DEVICE_DOMAIN_NAME}:|g" "$SETTINGS_FILE" + + echo "Updated base_url to http://${DEVICE_DOMAIN_NAME}:8896 in $SETTINGS_FILE" +else + echo "base_url is already configured. No changes made." +fi + +exit 0 diff --git a/myspeed/data/myspeed/.gitkeep b/myspeed/data/myspeed/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/myspeed/dfwebos-app.yml b/myspeed/dfwebos-app.yml new file mode 100644 index 0000000..19feae6 --- /dev/null +++ b/myspeed/dfwebos-app.yml @@ -0,0 +1,28 @@ +manifestVersion: 1 +id: myspeed +category: networking +name: MySpeed +version: 1.0.9 +tagline: Программное обеспечение для анализа тестов скорости, которое показывает скорость вашего интернета на срок до 30 дней. +description: >- + MySpeed ​​— это программное обеспечение для анализа тестов скорости, которое сохраняет скорость вашего Интернета до 30 дней. + Это может быть полезно, если вы хотите знать, когда в вашей сети могут быть сбои, или если вы хотите проверить, работает ли ваш Интернет. + соответствует забронированной стоимости из вашего контракта. + + + MySpeed ​​автоматически создает тесты каждый час, которые вы можете просмотреть на панели управления. + Тесты старше 30 дней автоматически удаляются, чтобы обеспечить чистоту информационной панели. +releaseNotes: "" +developer: Mathias Wagner +website: https://myspeed.dev +repo: https://github.com/gnmyt/myspeed +support: https://github.com/gnmyt/myspeed/issues/new/choose +dependencies: [] +port: 5216 +path: "" +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +submitter: Mathias Wagner +submission: https://github.com/getumbrel/dfwebos-apps/pull/1103 \ No newline at end of file diff --git a/myspeed/docker-compose.yml b/myspeed/docker-compose.yml new file mode 100644 index 0000000..1645584 --- /dev/null +++ b/myspeed/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: myspeed_web_1 + APP_PORT: 5216 + + web: + image: germannewsmaker/myspeed:1.0.9@sha256:3a3e774b3f78d930a5a962d625b99bcb3d71730bfeb4a6b93e04fd38cfe7d9a9 + # myspeed должен быть запущен от имени пользователя root + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/myspeed:/myspeed/data \ No newline at end of file diff --git a/n8n/data/.gitkeep b/n8n/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/n8n/dfwebos-app.yml b/n8n/dfwebos-app.yml new file mode 100644 index 0000000..1ae0bce --- /dev/null +++ b/n8n/dfwebos-app.yml @@ -0,0 +1,55 @@ +manifestVersion: 1 +id: n8n +category: automation +name: n8n +version: "2.14.2" +releaseNotes: >- + Этот выпуск включает в себя новые функции, исправления ошибок и улучшения: + - Добавлен новый узел Databricks. + - Добавлен клиент CLI (@n8n/cli`) для управления n8n с терминала. + - Добавлен новый фильтр выполнения по версии рабочего процесса. + - Добавлена конечная точка обнаружения возможностей в общедоступный API. + - Добавлена проверка подписи для ожидающих веб-перехватчиков и форм. + - Улучшен построитель рабочих процессов ИИ с мастером настройки и переработанным интерфейсом вопросов и ответов. + - Добавлена возможность отображать зависимости рабочего процесса, учетных данных и таблиц данных в редакторе. + - Исправлена фильтрация тегов рабочего процесса, которая неправильно исключала рабочие процессы внутри папок. + - Исправлены ссылки на узлы в выражениях, которые не обновлялись, если переименованный узел содержал кавычки. + - Исправлена проблема со статусом выполнения рабочего процесса. + - Исправлена ошибка разбивки узла HTTP-запроса на страницы с кодами состояния, отличными от 2xx. + - Исправлены выражения узла Postgres, которые не разрешались в версии 1. + - Исправлена ошибка, из-за которой при извлечении из файлового узла пропускались пустые строки при анализе CSV. + - Исправлены проблемы с редактором, включая флаг функции быстрого подключения и поведение при первой загрузке. + - Исправлен iframe предварительного просмотра выполнения, не заполнявший хранилище документов рабочего процесса. + - Различные другие исправления и улучшения редактора и ядра. + + + Полные примечания к выпуску можно найти по адресу https://github.com/n8n-io/n8n/releases. +tagline: Создавайте сложные рабочие процессы очень быстро +description: >- + n8n — это расширяемый инструмент автоматизации рабочих процессов. Благодаря модели справедливого распространения кода у n8n всегда будет видимый исходный код. + быть доступным для самостоятельного размещения и позволять добавлять собственные функции, логику и приложения. + Узловой подход n8n делает его очень универсальным, позволяя подключать что угодно ко всему. + + + n8n (произносится как n-eight-n) помогает вам соединить любое приложение с API с любым другим и манипулировать его данными с небольшим количеством кода или вообще без него. + + + Настраиваемость: очень гибкие рабочие процессы и возможность создавать собственные узлы. + + + Ориентированность на конфиденциальность: самостоятельный хостинг n8n для обеспечения конфиденциальности и безопасности. +developer: n8n +website: https://n8n.io +dependencies: [] +repo: https://github.com/n8n-io/n8n +support: https://docs.n8n.io/ +port: 5678 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/283 diff --git a/n8n/docker-compose.yml b/n8n/docker-compose.yml new file mode 100644 index 0000000..588c6f4 --- /dev/null +++ b/n8n/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: n8n_server_1 + APP_PORT: 5678 + # Эти конечные точки веб-перехватчиков защищены с помощью базовой аутентификации или аутентификации по заголовку. + # Подробности здесь: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/ + PROXY_AUTH_WHITELIST: "/webhook-test/*,/webhook/*" + + server: + image: n8nio/n8n:2.14.2@sha256:4f448824ec99e1160e49eeb1c5bf2130a5d244fe9029e871a9f4d9f126dbfc98 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/home/node/.n8n + stop_grace_period: 1m + environment: + - PUID=1000 + - PGID=1000 + # Используется для установки URL-адреса редактора, REST API и веб-хуков. + - N8N_HOST=$DEVICE_DOMAIN_NAME + - N8N_SECURE_COOKIE=false + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true + - N8N_RUNNERS_ENABLED=true diff --git a/navidrome/data/.gitkeep b/navidrome/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/navidrome/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/navidrome/dfwebos-app.yml b/navidrome/dfwebos-app.yml new file mode 100644 index 0000000..23e6351 --- /dev/null +++ b/navidrome/dfwebos-app.yml @@ -0,0 +1,68 @@ +manifestVersion: 1.1 +id: navidrome +category: media +name: Navidrome +version: "0.61.2" +tagline: Ваш личный потоковый сервис +description: >- + Navidrome — это веб-сервер и стример для сбора музыки с открытым исходным кодом. + Это дает вам свободу слушать свою музыкальную коллекцию из любого браузера или мобильного устройства. Это как ваш личный Spotify! + + + Функции: + + - Обрабатывает очень большие музыкальные коллекции + + - Потоковая передача практически любого доступного аудиоформата + + - Читает и использует все ваши тщательно подобранные метаданные. + + - Отличная поддержка компиляций (альбомы различных исполнителей) и бокс-сетов (многодисковые альбомы) + + - Многопользовательский режим: у каждого пользователя есть собственное количество воспроизведений, плейлисты, избранное и т. д. + + - Очень низкое использование ресурсов + + - Мультиплатформенность, работает на macOS, Linux и Windows. Также предоставляются изображения Docker. + + - Готовые к использованию двоичные файлы для всех основных платформ, включая Raspberry Pi. + + - Автоматически отслеживает вашу библиотеку на предмет изменений, импортируя новые файлы и перезагружая новые метаданные. + + - Тематический, современный и отзывчивый веб-интерфейс на основе Material интерфейс. + + - Совместим со всеми клиентами Subsonic/Madsonic/Airsonic. + + - Транскодирование на лету. Может быть установлен для каждого пользователя/игрока. Поддерживается кодировка Opus + + - Переведено на разные языки +developer: Navidrome +website: https://www.navidrome.org/ +dependencies: [] +repo: https://github.com/navidrome/navidrome +support: https://github.com/navidrome/discussions +port: 4533 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +permissions: + - STORAGE_DOWNLOADS +releaseNotes: >- + ⚠️ Критическое изменение: встроенная интеграция со Spotify удалена. Параметры конфигурации Spotify.ID и Spotify.Secret больше не поддерживаются. Вместо этого используйте агентов Last.fm или Deezer. + + + Этот выпуск исправлений включает исправления перекодирования, улучшения сканера и обновления обложки. Ключевые улучшения включают в себя: + - Транскодирование теперь правильно ограничивает целевые каналы ограничениями кодеков, устраняя проблемы с кодеками с большим количеством каналов. + - Файлы WAV теперь воспроизводятся напрямую в браузерах без ненужного перекодирования. + - Сканер теперь распознает теги ORIGYEAR для форматов VorbisComment и MP4. + - Максимальный размер загрузки изображения теперь можно настроить с помощью MaxImageUploadSize (по умолчанию 10 МБ). + - Исправлена ошибка, из-за которой на обложку диска влияли CSS-фильтры темы. + - Разработчики плагинов теперь получают путь к файлу в TrackInfo для плагинов Scrobbler и Lyrics. + - Различные улучшения стабильности сервера и обработки ошибок. + + + Полные примечания к выпуску можно найти по адресу https://github.com/navidrome/navidrome/releases. +submitter: owmsoton +submission: https://github.com/getumbrel/dfwebos-apps/pull/1232 diff --git a/navidrome/docker-compose.yml b/navidrome/docker-compose.yml new file mode 100644 index 0000000..f1b3b31 --- /dev/null +++ b/navidrome/docker-compose.yml @@ -0,0 +1,16 @@ +services: + app_proxy: + environment: + APP_HOST: navidrome_server_1 + APP_PORT: 4533 + PROXY_AUTH_ADD: "false" + + server: + image: deluan/navidrome:0.61.2@sha256:9fa40b3d8dec43ceb2213d1fa551da3dcfef6ac6d19c2e534efb92527c2bafd2 + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data:/data + - ${DFWEBOS_ROOT}/data/storage/downloads/music:/music diff --git a/navidrome/hooks/pre-start b/navidrome/hooks/pre-start new file mode 100755 index 0000000..91dc845 --- /dev/null +++ b/navidrome/hooks/pre-start @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -euo pipefail + +DFWEBOS_STORAGE_DOWNLOADS_MUSIC_DIR="${DFWEBOS_ROOT}/data/storage/downloads/music" +DESIRED_OWNER="1000:1000" + +if [[ ! -d "${DFWEBOS_STORAGE_DOWNLOADS_MUSIC_DIR}" ]]; then + mkdir -p "${DFWEBOS_STORAGE_DOWNLOADS_MUSIC_DIR}" +fi + +navidrome_correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +navidrome_correct_permission "${DFWEBOS_STORAGE_DOWNLOADS_MUSIC_DIR}" diff --git a/neko/dfwebos-app.yml b/neko/dfwebos-app.yml new file mode 100644 index 0000000..9bb4e8b --- /dev/null +++ b/neko/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: neko +name: Neko +tagline: Самостоятельный виртуальный браузер на базе WebRTC. +category: networking +version: "3.1.4" +port: 3880 +description: >- + 🐈 Neko — это автономный виртуальный браузер, который транслирует полностью интерактивный просмотр веб-страниц непосредственно на устройство пользователя с помощью WebRTC. Он обеспечивает доступ к безопасной изолированной среде браузера, которая работает независимо от локальной системы пользователя, обеспечивая конфиденциальность и изоляцию. Браузер обрабатывается удаленно, и все взаимодействия передаются в реальном времени, что обеспечивает плавность работы и низкую задержку. + + + Разработанный с учетом требований совместной работы, Neko позволяет нескольким пользователям присоединяться и использовать один и тот же сеанс, что делает его идеальным для таких действий, как совместный просмотр, просмотр вечеринок или удаленная поддержка. Интерфейс оптимизирован для быстрого реагирования, с минимальной задержкой между вводом и обратной связью, что создает ощущение естественности, несмотря на удаленную работу. + + + При интеграции в DFWebOS Neko предлагает частный и всегда доступный экземпляр браузера, к которому можно безопасно получить доступ из домашней сети или через Интернет с помощью функций туннелирования DFWebOS. Он органично вписывается в самостоятельную экосистему, обеспечивая надежный и удобный способ просмотра веб-страниц, не полагаясь на сторонние сервисы и не подвергая риску свое локальное устройство. + + + Neko особенно полезен в сценариях, где важны конфиденциальность, простота и легкость доступа — будь то личное использование, совместные задачи или безопасный удаленный просмотр. + + + 💡 Neko предлагает широкий спектр вариантов конфигурации, включая конфигурацию WebRTC, настройки плагинов, а также захват аудио и видео. Для получения более подробной информации ознакомьтесь с официальной документацией здесь: https://neko.m1k1o.net/docs/v3/configuration.. +developer: m1k1o +website: https://neko.m1k1o.net/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2524 +repo: https://github.com/m1k1o/neko +support: https://github.com/m1k1o/neko/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Ключевые улучшения в этом выпуске: + - Улучшено взаимодействие с мобильными устройствами: прокрутка к чату, значок клавиатуры на сенсорных экранах и исправленное поведение клавиатуры. + - Исправлен устаревший режим HTTPS и добавлена поддержка HTTPS для проверок работоспособности. + - Добавлена замена команды буфера обмена для лучшей обработки буфера обмена. + - На панель управления добавлена кнопка переключения микрофона. + - Добавлена поддержка плагина скина VLC. + - Улучшено взаимодействие с экраном: перед взаимодействием запрашивается управление. + - Добавлено имя хоста в широковещательные переменные. + - Поддержка косвенного ввода текста + - Исправлена загрузка WidevineCDM. + - Обновлены базовые образы Debian Trixie. + - Добавлены переводы на польский и индонезийский языки, а также стандартизированы все языковые переводы. +dependencies: [] +path: "" +defaultUsername: "" +deterministicPassword: true diff --git a/neko/docker-compose.yml b/neko/docker-compose.yml new file mode 100644 index 0000000..3204a85 --- /dev/null +++ b/neko/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: neko_web_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/m1k1o/neko/firefox:3.1.4@sha256:0e0dfa8199ff4cccf95284c0c8e9dde72f740feb816302cc5e7071efe079039e + environment: + PUID: 1000 + PGID: 1000 + NEKO_DESKTOP_SCREEN: 1920x1080@30 + NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko + NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: $APP_PASSWORD + NEKO_WEBRTC_EPR: 52000-52100 + NEKO_WEBRTC_ICELITE: 0 + shm_size: "2gb" + restart: on-failure + ports: + - "52000-52100:52000-52100/udp" diff --git a/netbird/data/app_data/.gitkeep b/netbird/data/app_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/netbird/data/app_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/netbird/data/www/favicon.png b/netbird/data/www/favicon.png new file mode 100644 index 0000000..b8c2419 Binary files /dev/null and b/netbird/data/www/favicon.png differ diff --git a/netbird/data/www/index.html b/netbird/data/www/index.html new file mode 100644 index 0000000..e226077 --- /dev/null +++ b/netbird/data/www/index.html @@ -0,0 +1,180 @@ + + + Клиент NetBird + + + + + +
+
+ NetBird +
+ ● Запущено +

Клиент NetBird

+
+
+ +

 

+
+ + +

⚙️ Подключите ваш DFWebOS к NetBird

+

Для настройки NetBird требуется ключ установки, так как он регистрирует новые устройства в сети и связывает их с нужной учетной записью во время первоначальной активации.

+ +
+

Загрузка статуса...

+
+ + + + + + + +
+

+ Подробные инструкции по установке и настройке смотрите в официальной документации NetBird: + https://docs.netbird.io/ +

+ +
+ + + + + diff --git a/netbird/data/www/logo.png b/netbird/data/www/logo.png new file mode 100644 index 0000000..6203fa3 Binary files /dev/null and b/netbird/data/www/logo.png differ diff --git a/netbird/dfwebos-app.yml b/netbird/dfwebos-app.yml new file mode 100644 index 0000000..bf451c7 --- /dev/null +++ b/netbird/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1.1 +id: netbird +name: NetBird +tagline: Адаптивный клиент для сетей с нулевым доверием +category: networking +version: "0.70.0" +port: 8479 +description: >- + NetBird — это безопасная сетевая платформа, которая создает частные одноранговые соединения между устройствами с использованием зашифрованных каналов связи. Он создает надежный сетевой уровень, который обеспечивает бесперебойную и прямую связь, не раскрывая данные посредникам. Каждое соединение защищено современными стандартами шифрования и автоматически управляется с помощью модели безопасности с нулевым доверием, которая аутентифицирует личности, а не сети. + + + Клиент NetBird — это компонент, который воплощает в жизнь эту систему. Он обрабатывает всю зашифрованную связь, управление ключами и контроль доступа между подключенными узлами. После активации он надежно связывает устройство с сетью NetBird и постоянно управляет всеми фоновыми операциями для поддержания надежного и конфиденциального соединения. + + + Сочетая в себе простоту, автоматизацию и надежную криптографию, клиент NetBird обеспечивает безопасную работу в сети без необходимости настройки. Он обеспечивает стабильную основу для частного общения и совместной работы, гарантируя при этом, что каждое соединение остается полностью зашифрованным, аутентифицированным и устойчивым. + + + ⚙️ Подключите свой DFWebOS к NetBird. + + + Откройте ссылку, отображаемую в браузере, на своем компьютере или мобильном устройстве и войдите в систему, используя ту же учетную запись NetBird, которую вы используете для панели управления. Одобрите устройство при появлении соответствующего запроса. После подтверждения ваш клиент DFWebOS автоматически зарегистрируется и останется подключенным после перезапуска. +developer: NetBird +website: https://netbird.io/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/4054 +repo: https://github.com/netbirdio/netbird +support: https://github.com/netbirdio/netbird/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Некоторые из ключевых моментов этого выпуска включают в себя: + - Подавлена сигнализация ICE для уменьшения ненужного сетевого трафика. + - Улучшено разрешение DNS за счет предпочтения заглушки, разрешенной systemd, а не файлового режима. + - Добавлено обновление на основе TTL в кэше DNS управления для более надежного разрешения имен. + - Доверено интерфейсу WireGuard в firewalld для обхода цепочек, отмеченных владельцем. + - Увеличено время ожидания проверки работоспособности gRPC для повышения стабильности. + - Добавлено изменяемое ограничение скорости PAT в управлении. + - Исключены одноранговые узлы с истекшим сроком действия из задания с истекающим сроком действия, чтобы уменьшить ненужную обработку. + - Установите путь к файлу cookie сеанса как root в прокси-сервере. + - Добавлены поля хранения обратного прокси-сервера в объединенную локальную конфигурацию YAML. + + + Полные примечания к выпуску можно найти по адресу https://github.com/netbirdio/netbird/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/netbird/docker-compose.yml b/netbird/docker-compose.yml new file mode 100644 index 0000000..e4fb504 --- /dev/null +++ b/netbird/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: netbird_web_1 + APP_PORT: 80 + + app: + image: ghcr.io/netbirdio/netbird:0.70.0-rootless@sha256:b1487a94f432aa706275ebbbbdff3605bf927b056d63855f3d43966cb68c64dc + restart: on-failure + user: "1000:1000" + cap_add: + - NET_ADMIN + - SYS_ADMIN + - SYS_RESOURCE + network_mode: host + volumes: + - ${APP_DATA_DIR}/data/app_data:/var/lib/netbird:rw + + web: + image: nginx:1.27@sha256:124b44bfc9ccd1f3cedf4b592d4d1e8bddb78b51ec2ed5056c52d3692baebc19 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/www:/usr/share/nginx/html:ro diff --git a/netbird/hooks/post-start b/netbird/hooks/post-start new file mode 100755 index 0000000..4764d17 --- /dev/null +++ b/netbird/hooks/post-start @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт извлекает код установки NetBird из журналов Docker и отображает его в веб-интерфейсе. + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")"/..)" +STATUS_FILE="${APP_DATA_DIR}/data/www/status.json" + +echo "Waiting for NetBird container to start and checking status..." + +# Подождите до 30 секунд, пока контейнер запустится и станут доступны журналы. +for attempt in $(seq 1 300); do + # Получите журналы из контейнера приложения netbird. + LOGS=$(docker logs netbird_app_1 2>/dev/null | tail -n 50 || echo "") + + if echo "${LOGS}" | grep -q "Already connected"; then + # Контейнер уже подключен + echo "NetBird is already connected" + echo '{"status":"connected","message":"Already connected to NetBird"}' > "${STATUS_FILE}" + break + elif echo "${LOGS}" | grep -q "https://login.netbird.io/activate?user_code="; then + # Извлекаем активацию URL + ACTIVATION_URL=$(echo "${LOGS}" | grep -o "https://login.netbird.io/activate?user_code=[A-Z0-9-]*" | head -n 1) + USER_CODE=$(echo "${ACTIVATION_URL}" | grep -o "user_code=[A-Z0-9-]*" | cut -d= -f2) + + echo "Found activation URL: ${ACTIVATION_URL}" + echo "{\"status\":\"pending\",\"activationUrl\":\"${ACTIVATION_URL}\",\"userCode\":\"${USER_CODE}\"}" > "${STATUS_FILE}" + break + fi + + sleep 0.1 +done + +# Если мы ничего не нашли через 30 секунд, создайте статус по умолчанию. +if [[ ! -f "${STATUS_FILE}" ]]; then + echo '{"status":"waiting","message":"Waiting for NetBird to initialize. Check the app logs for the activation URL."}' > "${STATUS_FILE}" +fi diff --git a/networkingtoolbox/dfwebos-app.yml b/networkingtoolbox/dfwebos-app.yml new file mode 100644 index 0000000..401b762 --- /dev/null +++ b/networkingtoolbox/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1 +id: networkingtoolbox +name: Networking Toolbox +tagline: Универсальный набор инструментов для автономной работы в сети для системных администраторов. +category: developer +version: "1.6.0" +port: 3686 +description: >- + 🌐 Networking Toolbox — это комплексный набор веб-утилит, созданных для более быстрого анализа, настройки и устранения неполадок сети. Он объединяет широкий спектр технических функций, которые помогают профессионалам и энтузиастам более эффективно понимать и управлять системами цифровой связи. Сочетая аналитическую точность с интуитивно понятным интерфейсом, он позволяет пользователям исследовать, рассчитывать и визуализировать сложные сетевые взаимосвязи в режиме реального времени. + + + По своей сути Networking Toolbox фокусируется на основных строительных блоках Интернета и частных сетей. Он предоставляет инструменты для управления IP-адресами, расчета подсетей и CIDR, а также диагностики DNS, помогая пользователям выполнять операции, которые обычно требуют использования нескольких специализированных приложений. Он поддерживает стандарты IPv4 и IPv6, позволяя пользователям тестировать и проверять конфигурации, выявлять ошибки и понимать, как данные передаются между устройствами и службами. + + + Приложение также предлагает возможности для работы с сетевой безопасностью и производительностью. Пользователи могут проверять сертификаты SSL и TLS, проверять конфигурации домена, анализировать порты и декодировать сетевые заголовки, чтобы гарантировать безопасную и эффективную работу систем. Каждая функция предназначена для получения четких и точных результатов без ненужных сложностей, что позволяет глубже изучить сетевую инфраструктуру. + + + Networking Toolbox идеально подходит для тех, кому необходимо детально изучить, как функционируют сети. Независимо от того, используется ли оно для обучения, отладки или оптимизации системы, оно обеспечивает необходимую основу для освоения принципов работы в сети и обеспечения прозрачности, надежности и безопасности каждого уровня связи. +developer: Alicia Sykes +website: https://www.networkingtoolbox.net/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3844 +repo: https://github.com/Lissy93/networking-toolbox +support: https://github.com/Lissy93/networking-toolbox/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg +releaseNotes: "" +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/networkingtoolbox/docker-compose.yml b/networkingtoolbox/docker-compose.yml new file mode 100644 index 0000000..e6562d5 --- /dev/null +++ b/networkingtoolbox/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: networkingtoolbox_app_1 + APP_PORT: 3000 + + app: + image: ghcr.io/lissy93/networking-toolbox:1.6.0@sha256:4e97330fb310e1a5fbe185b1bf859270902ddef7934b88cecc6b3def98d21eaa + user: "1000:1000" + restart: on-failure + environment: + NODE_ENV: production + PORT: 3000 + HOST: 0.0.0.0 + healthcheck: + test: ["CMD", "wget", "-qO-", "http://localhost:3000/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s diff --git a/nextcloud/data/db/.gitkeep b/nextcloud/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nextcloud/data/nextcloud/.gitkeep b/nextcloud/data/nextcloud/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nextcloud/data/redis/.gitkeep b/nextcloud/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nextcloud/dfwebos-app.yml b/nextcloud/dfwebos-app.yml new file mode 100644 index 0000000..fb4e658 --- /dev/null +++ b/nextcloud/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1.1 +id: nextcloud +category: files +name: Nextcloud +version: "33.0.2" +tagline: Платформа продуктивности, которая позволит вам контролировать ситуацию +description: >- + Nextcloud помещает ваши данные под ваш контроль. + Храните свои документы, календарь, контакты и фотографии на DFWebOS вместо + дата-центр какой-то компании. Функции: + + + - Синхронизация с мобильным и настольным компьютером + + - Версионирование и восстановление + + - Галереи и лента активности + + - Поддержка редактирования и предварительного просмотра файлов для PDF, изображений, текстовых файлов, открытых документов, файлов Word и многого другого. + + - Плавная работа и простой пользовательский интерфейс. + + - Детальный контроль над доступом к данным и возможностями совместного использования пользователем и группой. + + + Примечание. После входа в Nextcloud смените пароль на более безопасный, прежде чем делиться адресом с кем-либо. +releaseNotes: >- + Это обновление включает исправления ошибок и улучшения: + - 📁 Новая опция для ограничения количества последних файлов, отображаемых в настройках файлов. + - 🔗 Исправлено создание общего ресурса, когда общий ресурс, защищенный паролем, не поддерживается типом общего ресурса. + - ↩️ Исправлено нежелательное перенаправление при сбое принятия акции. + - 🔄 Исправлено несоответствие зависимостей в программе обновления. + - 🧩 Обновления версий для всех приложений Stable33 (без функциональных изменений) + + + Полные примечания к выпуску можно найти по адресу https://github.com/nextcloud-releases/server/releases. +developer: Nextcloud GmbH +website: https://nextcloud.com +dependencies: [] +repo: https://github.com/nextcloud/server +support: https://help.nextcloud.com/categories +port: 8081 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: dfwebos +deterministicPassword: true +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/dcaae95daa8ee3d7e8044d55d13887d8ff353030 diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml new file mode 100644 index 0000000..fc952aa --- /dev/null +++ b/nextcloud/docker-compose.yml @@ -0,0 +1,75 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: nextcloud_web_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + db: + image: mariadb:10.6.21@sha256:8a16204dc96c08ed0ee2c52c0f9324aa5d2dd0e43ad23a471d447a39f75765b5 + user: "1000:1000" + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=moneyprintergobrrr + - MYSQL_PASSWORD=moneyprintergobrrr + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MARIADB_AUTO_UPGRADE=1 + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + start_period: 10s + interval: 10s + timeout: 5s + retries: 3 + + redis: + image: redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 + user: "1000:1000" + restart: on-failure + volumes: + - "${APP_DATA_DIR}/data/redis:/data" + + web: + image: nextcloud:33.0.2-apache@sha256:2176a451aa8fbd9f003a3d745978377e9a5213850e0181f4bcb24be63885175b + # В настоящее время необходимо запускать от имени пользователя root, если мы запускаем от имени uid 1000, это не удастся + # https://github.com/nextcloud/docker/blob/05026b029d37fc5cd488d4a4a2a79480e39841ba/21.0/apache/entrypoint.sh#L53-L77 + # user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/nextcloud:/var/www/html + environment: + - MYSQL_HOST=nextcloud_db_1 + - REDIS_HOST=nextcloud_redis_1 + - MYSQL_PASSWORD=moneyprintergobrrr + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - TRUSTED_PROXIES=${NETWORK_IP}/16 + - NEXTCLOUD_ADMIN_USER=umbrel + - NEXTCLOUD_ADMIN_PASSWORD=${APP_PASSWORD} + - NEXTCLOUD_TRUSTED_DOMAINS=${APP_DOMAIN}:${APP_NEXTCLOUD_PORT} ${APP_HIDDEN_SERVICE} ${DEVICE_HOSTNAME}:${APP_NEXTCLOUD_PORT} ${APP_NEXTCLOUD_LOCAL_IPS} nextcloud_web_1 + - PHP_UPLOAD_LIMIT=1024G + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + + cron: + image: nextcloud:33.0.2-apache@sha256:2176a451aa8fbd9f003a3d745978377e9a5213850e0181f4bcb24be63885175b + # В настоящее время необходимо запускать от имени пользователя root, если мы запускаем от имени uid 1000, это не удастся + # https://github.com/nextcloud/docker/blob/05026b029d37fc5cd488d4a4a2a79480e39841ba/21.0/apache/entrypoint.sh#L53-L77 + # user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/nextcloud:/var/www/html + entrypoint: /cron.sh + depends_on: + db: + condition: service_healthy + redis: + condition: service_started diff --git a/nextcloud/exports.sh b/nextcloud/exports.sh new file mode 100644 index 0000000..2e4fec1 --- /dev/null +++ b/nextcloud/exports.sh @@ -0,0 +1,4 @@ +export APP_NEXTCLOUD_PORT="8081" + +local_ips=$(hostname --all-ip-addresses 2> /dev/null) || local_ips="" +export APP_NEXTCLOUD_LOCAL_IPS="${local_ips}" \ No newline at end of file diff --git a/nextcloud/hooks/post-start b/nextcloud/hooks/post-start new file mode 100755 index 0000000..48729ad --- /dev/null +++ b/nextcloud/hooks/post-start @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Чтобы разрешить загрузку больших файлов, Nextcloud +# Экземпляр Apache должен быть настроен с помощью 'LimitRequestBody 0'. +# внутри файла .htaccess + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" +DOT_HTACCESS_FILE="${APP_DATA_DIR}/data/nextcloud/.htaccess" + +echo "Waiting for file (${DOT_HTACCESS_FILE}) to exist..." + +# Подождите до 30 секунд... +for attempt in $(seq 1 300); do + if [[ -f "${DOT_HTACCESS_FILE}" ]]; then + echo ".htaccess file exists" + break + fi + sleep 0.1 +done + +if [[ ! -f "${DOT_HTACCESS_FILE}" ]]; then + echo ".htaccess was never created. Something is likely wrong with the Nextcloud app" + exit +fi + +# Теперь проверьте, существует ли уже `LimitRequestBody 0` в файле .htaccess. +if ! cat "${DOT_HTACCESS_FILE}" | grep --quiet '^LimitRequestBody' +then + echo "Writing 'LimitRequestBody 0' config. to .htaccess" + + echo >> "${DOT_HTACCESS_FILE}" + echo "LimitRequestBody 0" >> "${DOT_HTACCESS_FILE}" +fi \ No newline at end of file diff --git a/nextcloud/hooks/post-update b/nextcloud/hooks/post-update new file mode 100755 index 0000000..2ca24bb --- /dev/null +++ b/nextcloud/hooks/post-update @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт проверяет файл Nextcloud config.php на наличие 'nextcloud_web_1' в массиве доверенных_доменов и добавляет его, если он не существует. При установке версий до 29.0.4 на umbrelOS домен не будет добавлен через `NEXTCLOUD_TRUSTED_DOMAIN`. +# Это обрабатывается в перехватчике после обновления, чтобы гарантировать, что мы не мешаем процессу запуска Nextcloud и предстартовому сценарию, в который записывается config.php. + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" +CONFIG_PHP_FILE="${APP_DATA_DIR}/data/nextcloud/config/config.php" + +DOMAIN_TO_ADD="nextcloud_web_1" + +domain_exists() { + grep -q "'$DOMAIN_TO_ADD'" "$CONFIG_PHP_FILE" +} + +get_highest_index() { + awk -F "=>" '/trusted_domains/ { + max = 0 + while (getline && !/\),/) { + if ($1 ~ /^[[:space:]]*[0-9]+/) { + split($1, a, " ") + if (a[1] > max) max = a[1] + } + } + print max + }' "$CONFIG_PHP_FILE" +} + +if domain_exists; then + echo "Domain '$DOMAIN_TO_ADD' already exists in trusted_domains." +else + echo "Domain '$DOMAIN_TO_ADD' not found. Adding it to trusted_domains..." + + # Получите самый высокий текущий индекс в массиве доверенных_доменов. + highest_index=$(get_highest_index) + + # Рассчитайте новый индекс для добавления + new_index=$((highest_index + 1)) + + # Добавьте новую запись домена + sed -i "/trusted_domains/,/),/ s/),/ $new_index => '$DOMAIN_TO_ADD',\n&/" "$CONFIG_PHP_FILE" + + echo "Domain '$DOMAIN_TO_ADD' added successfully." +fi \ No newline at end of file diff --git a/nextcloud/hooks/pre-start b/nextcloud/hooks/pre-start new file mode 100755 index 0000000..d34f10c --- /dev/null +++ b/nextcloud/hooks/pre-start @@ -0,0 +1,178 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" +DFWEBOS_ROOT="${APP_DATA_DIR}/../.." + +CONFIG_PHP_FILE="${APP_DATA_DIR}/data/nextcloud/config/config.php" + +APP_COMPOSE_FILE="${APP_DATA_DIR}/docker-compose.yml" +APP_COMPOSE_BACKUP_FILE="${APP_DATA_DIR}/docker-compose.yml.bak" + +# Поддерживаемый список миграции основных версий Nextcloud +VERSIONS=() +VERSIONS+=( "22" ) +VERSIONS+=( "23" ) +VERSIONS+=( "24" ) +VERSIONS+=( "25" ) +VERSIONS+=( "26" ) +VERSIONS+=( "27" ) +VERSIONS+=( "28" ) +VERSIONS+=( "29" ) +VERSIONS+=( "30" ) +VERSIONS+=( "31" ) +VERSIONS+=( "32" ) +VERSIONS+=( "33" ) + +# Список образов основных версий Nextcloud для миграции +IMAGES=() +IMAGES+=( "nextcloud:22.2.10-apache@sha256:71c4fb75d7c035ea2c840ebc1adf0da144b0c69e39ce925f4a2ea84b7c06db18" ) +IMAGES+=( "nextcloud:23.0.11-apache@sha256:671ed70c7b204c63cb56d5c0d5dd624abec5eadeacd492191e65e834ddffef26" ) +IMAGES+=( "nextcloud:24.0.7-apache@sha256:f95a21b598b7470b788251db5b0bbe9516992fdb865e7a8978980585e36eb715" ) +IMAGES+=( "nextcloud:25.0.1-apache@sha256:a200319b132c01ec3486e0dcaf052092b560ec30ac9b78115607696dd201f704" ) +IMAGES+=( "nextcloud:26.0.9-apache@sha256:23180fbe8169d428ce0058bfc8d47793628a16e00e40b495d82e4504a124b3fa" ) +IMAGES+=( "nextcloud:27.0.2-apache@sha256:3c8040278bdc991cbc025278eaffc4978a9c2fd4ac34e95b10f646dcadb7c3fb" ) +IMAGES+=( "nextcloud:28.0.3-apache@sha256:ed07f89119dcca2a3711897c48a8ac969542d96d69384445d8fcdc7804ca946f" ) +IMAGES+=( "nextcloud:29.0.7-apache@sha256:3bcd2afa9d02fccc52251712bee1afc4f5891beaf353af47881b7662cd1308f7" ) +IMAGES+=( "nextcloud:30.0.5-apache@sha256:02441f524c6fab3aadbf7157f6e0484927e231d685b248dc0734fa2941b4445e" ) +IMAGES+=( "nextcloud:31.0.9-apache@sha256:11f158050216614d585886600445e0a1b75ee224d6a6dddc5eba996cc9499fa6" ) +IMAGES+=( "nextcloud:32.0.6-apache@sha256:0e1084cc59df77bec7d6bb29d9ac6939da8372512237a9c51f74ff0a970524f2" ) +IMAGES+=( "nextcloud:33.0.2-apache@sha256:2176a451aa8fbd9f003a3d745978377e9a5213850e0181f4bcb24be63885175b" ) + +find_index() { + local -r value="${1}" + shift + local -r array=("$@") + + for i in "${!array[@]}"; do + if [[ "${array[$i]}" == "${value}" ]]; then + echo $i + exit + fi + done + + echo -1 +} + +wait_for_value_in_file () { + local -r file="${1}" + local -r str="${2}" + local -r max_seconds="${3}" + + echo "Searching for '${str}' inside: ${file}" + + for i in $(seq 1 "${max_seconds}"); do + echo "Attempt: ${i}" + if cat "${file}" | grep --quiet "${str}"; then + return + fi + sleep 1 + done + + echo "Failed after ${max_seconds} seconds to find '${str}' inside: ${file}" + exit 1 +} + +check_compose_file () { + local -r image="${1}" + + web_image=$(cat "${APP_COMPOSE_FILE}" 2> /dev/null | yq '.services.web.image' || true) + cron_image=$(cat "${APP_COMPOSE_FILE}" 2> /dev/null | yq '.services.cron.image' || true) + + if [[ "${web_image}" != "${image}" ]] || [[ "${cron_image}" != "${image}" ]]; then + echo "The docker-compose.yml now looks bad. Restoring..." + + mv "${APP_COMPOSE_BACKUP_FILE}" "${APP_COMPOSE_FILE}" + + exit + fi +} + +get_version() { + cat "${CONFIG_PHP_FILE}" | grep "'version'[[:space:]]=>[[:space:]]" | awk -F"'" '{print $4}' +} + +get_major_version() { + echo "${1%%.*}" +} + +# Если файл конфигурации Nextcloud еще не существует +# Тогда скорее всего это новая установка +# Поэтому делать нечего +if [[ ! -f "${CONFIG_PHP_FILE}" ]]; then + exit +fi + +nextcloud_version=$(get_version) +nextcloud_major_version=$(get_major_version "$nextcloud_version") + +echo "Active Nextcloud Version: ${nextcloud_version}" +echo "Active Nextcloud Major Version: ${nextcloud_major_version}" + +# проверьте, добавлен ли к активной версии "-patch", и выйдите, если да, мы позволяем миграции завершиться +# мы добавляем "-patch" в версию ниже во время миграции +if [[ "${nextcloud_version}" == *"-patch"* ]]; then + echo "Active Nextcloud version is undergoing migration. Exiting..." + exit +fi + +# Проверьте, есть ли активная основная версия в списке миграции +active_version_idx=$(find_index "${nextcloud_major_version}" "${VERSIONS[@]}") +if [[ "${active_version_idx}" == "-1" ]]; then + echo "Active major version is not supported in the list of migrations" + exit +fi + +# Проверьте, обновлено ли уже +if [[ "${VERSIONS[-1]}" == "${nextcloud_major_version}" ]]; then + echo "Nextcloud is already on the latest major version. No migration needed." + exit +fi + +# Перебирать версии, игнорируя предыдущие версии. +for i in "${!VERSIONS[@]}"; do + [[ "${i}" -le "${active_version_idx}" ]] && continue + + version="${VERSIONS[$i]}" + image="${IMAGES[$i]}" + + echo "Migrating to major version: ${version} (${image})" + echo + + cp --archive "${APP_COMPOSE_FILE}" "${APP_COMPOSE_BACKUP_FILE}" + + yq -i ".services.web.image = \"${image}\"" "${APP_COMPOSE_FILE}" + yq -i ".services.cron.image = \"${image}\"" "${APP_COMPOSE_FILE}" + + check_compose_file "${image}" + + nextcloud_version=$(get_version) + sed -i "s/${nextcloud_version}/${nextcloud_version}-patch/" "${CONFIG_PHP_FILE}" + + "${DFWEBOS_ROOT}/scripts/app" start nextcloud + + echo "Waiting for update to complete..." + + # Подождите, пока Nextcloud перейдет в режим обслуживания. + # Указание на то, что процесс обновления начался. + wait_for_value_in_file "${CONFIG_PHP_FILE}" "'maintenance'[[:space:]]=>[[:space:]]true" 300 + + # Подождите, пока Nextcloud выйдет из режима обслуживания. + # Указание на завершение процесса обновления + wait_for_value_in_file "${CONFIG_PHP_FILE}" "'maintenance'[[:space:]]=>[[:space:]]false" 300 + + "${DFWEBOS_ROOT}/scripts/app" stop nextcloud + + # Удалить изображение промежуточной версии + # Если это не последнее изображение + # В противном случае его придется загрузить заново + if [[ "${version}" != "${VERSIONS[-1]}" ]]; then + echo "Deleting intermediary image: ${image}" + + docker rmi "${image}" || true + fi +done + +rm -rf "${APP_COMPOSE_BACKUP_FILE}" + +echo "Migration completed successfully" diff --git a/nginx-proxy-manager/data/letsencrypt/.gitkeep b/nginx-proxy-manager/data/letsencrypt/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nginx-proxy-manager/data/npm-data/.gitkeep b/nginx-proxy-manager/data/npm-data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nginx-proxy-manager/dfwebos-app.yml b/nginx-proxy-manager/dfwebos-app.yml new file mode 100644 index 0000000..0cbb9d3 --- /dev/null +++ b/nginx-proxy-manager/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: nginx-proxy-manager +name: Nginx Proxy Manager +tagline: Легко и безопасно раскрывайте свои услуги +category: networking +version: "2.14.0" +port: 4498 +description: >- + Легко и безопасно размещайте свои приложения в Интернете. + + + ⚠️ Будьте осторожны, публикуя приложения в общедоступном Интернете. Убедитесь, что они имеют надлежащую безопасность, например защиту входа в систему, и избегайте раскрытия конфиденциальных приложений без надлежащих мер безопасности. + + + 🔧 Nginx Proxy Manager использует порт 40080 для HTTP (незащищенного) трафика и порт 40443 для HTTPS (защищенного) трафика. + Чтобы сделать ваши приложения доступными из общедоступного Интернета, вам необходимо настроить переадресацию портов на маршрутизаторе. + Перенаправьте внешний порт 80 (HTTP) на внутренний порт 40080 и внешний порт 443 (HTTPS) на внутренний порт 40443. + + + 🔍Особенности: + + - Красивый и безопасный интерфейс администратора на основе Tabler + - Легко создавайте домены переадресации, перенаправления, потоки и хосты 404, ничего не зная о Nginx. + - Бесплатный SSL с помощью Let's Encrypt или предоставьте свои собственные SSL-сертификаты. + - Списки доступа и базовая HTTP-аутентификация для ваших хостов. + - Расширенная конфигурация Nginx доступна для суперпользователей. + - Управление пользователями, разрешения и журнал аудита +developer: Jamie Curnow +website: https://nginxproxymanager.com/ +submitter: Sahil Phule +submission: https://github.com/getumbrel/dfwebos-apps/pull/1296 +repo: https://github.com/NginxProxyManager/nginx-proxy-manager +support: https://github.com/NginxProxyManager/nginx-proxy-manager/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Это обновление включает в себя несколько улучшений и исправлений ошибок. + + + Ключевые моменты включают в себя: + - Добавлена расширенная конфигурация прокси-хоста «Доверять восходящим пересылаемым заголовкам Proto». + - Исправлено отключение двухфакторной аутентификации. + - Добавлен плагин DNS для провайдера ArvanCloud. + - Обновлен словацкий перевод. + - Исправлена загрузка пользовательских сертификатов. + + + Полные примечания к выпуску доступны по адресу https://github.com/NginxProxyManager/nginx-proxy-manager/releases. +dependencies: [] +path: "" diff --git a/nginx-proxy-manager/docker-compose.yml b/nginx-proxy-manager/docker-compose.yml new file mode 100644 index 0000000..b1baaad --- /dev/null +++ b/nginx-proxy-manager/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: nginx-proxy-manager_web_1 + APP_PORT: 81 + + web: + image: jc21/nginx-proxy-manager:2.14.0@sha256:2aa69b382a384b676c0d4f1d6f2eac40ecd478fcf7af1cfb3f9f1d3cd0c81e12 + hostname: nginx-proxy-manager_web_1 + restart: on-failure + ports: + - 40080:80 + - 40443:443 + volumes: + - ${APP_DATA_DIR}/data/npm-data:/data + - ${APP_DATA_DIR}/data/letsencrypt:/etc/letsencrypt + + docker-host: + image: qoomon/docker-host:3.3.1@sha256:ec9d214d7fa88932e9186ca2f4419d44661376929931248525b08e7fa9e270f7 + hostname: $DEVICE_DOMAIN_NAME + cap_add: + - NET_ADMIN + - NET_RAW + restart: on-failure diff --git a/nitter/data/nitter/.gitkeep b/nitter/data/nitter/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nitter/data/redis/.gitkeep b/nitter/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nitter/dfwebos-app.yml b/nitter/dfwebos-app.yml new file mode 100644 index 0000000..ec9f9af --- /dev/null +++ b/nitter/dfwebos-app.yml @@ -0,0 +1,75 @@ +manifestVersion: 1.2 +id: nitter +category: social +name: Nitter +version: "38985af" +tagline: Просматривайте Twitter без отслеживания и рекламы +description: > + ⚠️ Уведомление об удалении: проект Nitter больше не поддерживается и не работает из-за изменений в API X. Для получения дополнительной информации посетите репозиторий проекта GitHub. + + + Nitter — это бесплатная альтернатива Twitter с открытым исходным кодом, ориентированная на конфиденциальность и производительность. + + + Невозможно использовать Twitter без включенного JavaScript. Для людей, заботящихся о конфиденциальности, предотвращение аналитики JavaScript и отслеживания на основе IP важно, но без использования VPN и uBlock/uMatrix это невозможно. Несмотря на то, что вы используете VPN и мощные блокировщики рекламы, вас можно точно отслеживать по отпечатку пальца вашего браузера, без необходимости JavaScript. Все это стало особенно важным после того, как Twitter лишил пользователей возможности контролировать, отправляются ли их данные рекламодателям. + + + Используя экземпляр Nitter, размещенный на вашем DFWebOS, вы можете просматривать Твиттер без JavaScript, сохраняя при этом свою конфиденциальность. Помимо уважения вашей конфиденциальности, Nitter в среднем примерно в 15 раз легче Twitter и в большинстве случаев обслуживает страницы быстрее (например, временные шкалы загружаются в 2–4 раза быстрее). + + + В будущем будет добавлена ​​простая система учетных записей, которая позволит вам следить за пользователями Twitter, что позволит вам иметь чистую хронологическую шкалу без необходимости иметь учетную запись Twitter. + + + Функции: + + - Нет JavaScript или рекламы + + - Все запросы проходят через серверную часть, клиент никогда не обращается к Twitter. + + - Не позволяет Twitter отслеживать ваш IP-адрес или отпечаток пальца JavaScript. + + - Использует неофициальный аккаунт Twitter API (без ограничений по скорости или учетной записи разработчика) + + - Легкий вес (для @nim_lang, 60 КБ против 784 КБ на twitter.com) + + - RSS-каналы + + - Темы + + - Мобильная поддержка (адаптивный дизайн) + + - Лицензия AGPLv3, проприетарные экземпляры запрещены. +developer: Zedeus +website: https://github.com/zedeus +dependencies: [] +repo: https://github.com/zedeus/nitter +support: https://matrix.to/#/#nitter:matrix.org +port: 8420 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: > + - исправлена ​​ошибка, из-за которой все отображались как проверенные + + - исправлена ​​ошибка, из-за которой темы в профилях пользователей скрывались + + - Добавить правильное надгробие для твитов подписчиков. + + - Удалить устаревший твит из теста карты. + + - Исправлен закрепленный сбой «TweetPreviewDisplay». + + - Обновление значков + + - Запретить конечной точке поиска отбрасывать токены. + + - Добавлен рабочий процесс действий для запуска тестов Selenium. + + - HLS в верхнем регистре в описании предпочтений. +submitter: Jasper +submission: https://github.com/getumbrel/dfwebos-apps/pull/128 +disabled: true \ No newline at end of file diff --git a/nitter/docker-compose.yml b/nitter/docker-compose.yml new file mode 100644 index 0000000..72b507a --- /dev/null +++ b/nitter/docker-compose.yml @@ -0,0 +1,32 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: nitter_web_1 + APP_PORT: 8080 + + web: + image: ceramicwhite/nitter:build-38985af@sha256:594a184c3a834c29957ddd917800d61f3d560411d26fa6cf389bef350d4c4ac6 + restart: on-failure + stop_grace_period: 1m + init: true + user: 1000:1000 + command: > + /bin/sh -c "sed -i + -e 's/localhost/nitter_redis_1/g' + -e 's/redisPassword = \"\"/redisPassword = \"moneyprintergobrrr\"/g' + -e 's/theme = \"Nitter\"/theme = \"auto_(twitter)\"/g' + /src/nitter.conf + && ./nitter" + depends_on: + - redis + + redis: + image: redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 + restart: on-failure + stop_grace_period: 1m + user: 1000:1000 + command: "redis-server --save 60 1 --loglevel warning --requirepass moneyprintergobrrr" + volumes: + - ${APP_DATA_DIR}/data/redis:/data \ No newline at end of file diff --git a/nocodb/data/app/.gitkeep b/nocodb/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nocodb/data/db/.gitkeep b/nocodb/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nocodb/dfwebos-app.yml b/nocodb/dfwebos-app.yml new file mode 100644 index 0000000..2dd6295 --- /dev/null +++ b/nocodb/dfwebos-app.yml @@ -0,0 +1,54 @@ +manifestVersion: 1 +id: nocodb +category: files +name: NocoDB +version: "2026.04.3" +tagline: Платформа без кода для управления базами данных, автономная альтернатива Airtable +description: >- + NocoDB — это платформа с открытым исходным кодом, которая преобразует базы данных в интеллектуальные таблицы для совместной работы. Он позволяет пользователям создавать приложения без кода поверх баз данных, таких как MySQL, PostgreSQL, SQLite, и даже интерфейсы, подобные Airtable, для существующих структур данных. + + + Функции: + + 📊 Интеллектуальный интерфейс электронных таблиц: богатый, интуитивно понятный интерфейс с такими функциями, как сортировка, фильтрация, скрытие и специализированные типы столбцов (вложение, JSON, рейтинг, формула). + + + 🤖 Встроенная поддержка сервера MCP: включите агентов ИИ (таких как Claude или локальные LLM) для безопасного взаимодействия с записями вашей базы данных с использованием протокола контекста модели. + + + ⚡ REST API: он автоматически генерирует API-интерфейсы REST для каждой таблицы, поэтому пользователи могут интегрироваться с другими приложениями, создавать средства автоматизации или разрабатывать собственные рабочие процессы. + + + 🔄 Веб-перехватчики: запускайте рабочие процессы и интегрируйтесь со сторонними приложениями, такими как Slack, Discord и электронная почта, непосредственно из событий вашей базы данных. + + + 🔌 Подключение к любой базе данных: вы можете легко подключиться к новым или существующим базам данных SQL (PostgreSQL, MySQL, SQLite) и управлять ими визуально. + + + 🎨 Настраиваемые представления: переключайтесь между представлениями «Сетка», «Галерея», «Канбан» и «Форма», чтобы визуализировать данные именно так, как вам нужно. + + + 🛡️ Разрешения и роли: NocoDB поддерживает роли пользователей, элементы управления доступом и разрешения, что делает его подходящим для командного использования. +releaseNotes: >- + Исправления ошибок в этом выпуске: + - Исправлена проблема, из-за которой все записи становились невидимыми после обновления до 2026.04.2 для пользователей SQLite. + - Исправлен сбой сегментации во время запуска на устройствах ARM64. + + + Полные примечания к выпуску можно найти по адресу https://github.com/nocodb/nocodb/releases. +developer: NocoDB Inc. +website: https://nocodb.com +dependencies: [] +repo: https://github.com/nocodb/nocodb +support: https://github.com/nocodb/nocodb/issues +port: 2183 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: cergmin +submission: https://github.com/getumbrel/dfwebos-apps/pull/4195 diff --git a/nocodb/docker-compose.yml b/nocodb/docker-compose.yml new file mode 100644 index 0000000..397850e --- /dev/null +++ b/nocodb/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: nocodb_app_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + app: + image: nocodb/nocodb:2026.04.3@sha256:98090d707ab36ad0fe62dac8c8416b4ebf6ee939a8f851676b880b5ac159a74a + restart: on-failure + user: "1000:1000" + depends_on: + postgres: + condition: service_healthy + environment: + NC_DB: "pg://nocodb_postgres_1:5432?u=nocodb&p=itworkslocally&d=nocodb" + volumes: + - ${APP_DATA_DIR}/data/app:/usr/app/data + + postgres: + image: postgres:18.3-alpine@sha256:52098013b4b64a746626437d38afc03cabff6cdeb4d3d92e2342aa95f0ce56ea + restart: on-failure + stop_grace_period: 1m + environment: + POSTGRES_DB: nocodb + POSTGRES_USER: nocodb + POSTGRES_PASSWORD: itworkslocally + PGDATA: /data/pgdata + healthcheck: + test: "pg_isready -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\"" + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + volumes: + - ${APP_DATA_DIR}/data/db:/data diff --git a/node-red-standalone/data/settings.js b/node-red-standalone/data/settings.js new file mode 100644 index 0000000..2525b31 --- /dev/null +++ b/node-red-standalone/data/settings.js @@ -0,0 +1,489 @@ +/** + * This is the default settings file provided by Node-RED. + * + * It can contain any valid JavaScript code that will get run when Node-RED + * is started. + * + * Lines that start with // are commented out. + * Each entry should be separated from the entries above and below by a comma ',' + * + * For more information about individual settings, refer to the documentation: + * https://nodered.org/docs/user-guide/runtime/configuration + * + * The settings are split into the following sections: + * - Flow File and User Directory Settings + * - Security + * - Server Settings + * - Runtime Settings + * - Editor Settings + * - Node Settings + * + **/ + +const fs = require("fs"); +const path = require("path"); + +module.exports = { + +/******************************************************************************* + * Flow File and User Directory Settings + * - flowFile + * - credentialSecret + * - flowFilePretty + * - userDir + * - nodesDir + ******************************************************************************/ + + /** The file containing the flows. If not set, defaults to flows_.json **/ + flowFile: 'flows.json', + + /** By default, credentials are encrypted in storage using a generated key. To + * specify your own secret, set the following property. + * If you want to disable encryption of credentials, set this property to false. + * Note: once you set this property, do not change it - doing so will prevent + * node-red from being able to decrypt your existing credentials and they will be + * lost. + */ + //credentialSecret: "a-secret-key", + + /** By default, the flow JSON will be formatted over multiple lines making + * it easier to compare changes when using version control. + * To disable pretty-printing of the JSON set the following property to false. + */ + flowFilePretty: true, + + /** By default, all user data is stored in a directory called `.node-red` under + * the user's home directory. To use a different location, the following + * property can be used + */ + //userDir: '/home/nol/.node-red/', + + /** Node-RED scans the `nodes` directory in the userDir to find local node files. + * The following property can be used to specify an additional directory to scan. + */ + //nodesDir: '/home/nol/.node-red/nodes', + +/******************************************************************************* + * Security + * - adminAuth + * - https + * - httpsRefreshInterval + * - requireHttps + * - httpNodeAuth + * - httpStaticAuth + ******************************************************************************/ + + /** To password protect the Node-RED editor and admin API, the following + * property can be used. See http://nodered.org/docs/security.html for details. + */ + /* + adminAuth: { + type: "credentials", + users: [ + + ].filter(Boolean) + }, + */ + + /** The following property can be used to enable HTTPS + * This property can be either an object, containing both a (private) key + * and a (public) certificate, or a function that returns such an object. + * See http://nodejs.org/api/https.html#https_https_createserver_options_requestlistener + * for details of its contents. + */ + + /** Option 1: static object */ + //https: { + // key: require("fs").readFileSync('privkey.pem'), + // cert: require("fs").readFileSync('cert.pem') + //}, + + /** Option 2: function that returns the HTTP configuration object */ + // https: function() { + // // This function should return the options object, or a Promise + // // that resolves to the options object + // return { + // key: require("fs").readFileSync('privkey.pem'), + // cert: require("fs").readFileSync('cert.pem') + // } + // }, + + /** If the `https` setting is a function, the following setting can be used + * to set how often, in hours, the function will be called. That can be used + * to refresh any certificates. + */ + //httpsRefreshInterval : 12, + + /** The following property can be used to cause insecure HTTP connections to + * be redirected to HTTPS. + */ + //requireHttps: true, + + /** To password protect the node-defined HTTP endpoints (httpNodeRoot), + * including node-red-dashboard, or the static content (httpStatic), the + * following properties can be used. + * The `pass` field is a bcrypt hash of the password. + * See http://nodered.org/docs/security.html#generating-the-password-hash + */ + //httpNodeAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, + //httpStaticAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, + +/******************************************************************************* + * Server Settings + * - uiPort + * - uiHost + * - apiMaxLength + * - httpServerOptions + * - httpAdminRoot + * - httpAdminMiddleware + * - httpNodeRoot + * - httpNodeCors + * - httpNodeMiddleware + * - httpStatic + ******************************************************************************/ + + /** the tcp port that the Node-RED web server is listening on */ + uiPort: process.env.PORT || 1880, + + /** By default, the Node-RED UI accepts connections on all IPv4 interfaces. + * To listen on all IPv6 addresses, set uiHost to "::", + * The following property can be used to listen on a specific interface. For + * example, the following would only allow connections from the local machine. + */ + //uiHost: "127.0.0.1", + + /** The maximum size of HTTP request that will be accepted by the runtime api. + * Default: 5mb + */ + //apiMaxLength: '5mb', + + /** The following property can be used to pass custom options to the Express.js + * server used by Node-RED. For a full list of available options, refer + * to http://expressjs.com/en/api.html#app.settings.table + */ + //httpServerOptions: { }, + + /** By default, the Node-RED UI is available at http://localhost:1880/ + * The following property can be used to specify a different root path. + * If set to false, this is disabled. + */ + //httpAdminRoot: '/admin', + + /** The following property can be used to add a custom middleware function + * in front of all admin http routes. For example, to set custom http + * headers. It can be a single function or an array of middleware functions. + */ + // httpAdminMiddleware: function(req,res,next) { + // // Set the X-Frame-Options header to limit where the editor + // // can be embedded + // //res.set('X-Frame-Options', 'sameorigin'); + // next(); + // }, + + + /** Some nodes, such as HTTP In, can be used to listen for incoming http requests. + * By default, these are served relative to '/'. The following property + * can be used to specifiy a different root path. If set to false, this is + * disabled. + */ + //httpNodeRoot: '/red-nodes', + + /** The following property can be used to configure cross-origin resource sharing + * in the HTTP nodes. + * See https://github.com/troygoode/node-cors#configuration-options for + * details on its contents. The following is a basic permissive set of options: + */ + //httpNodeCors: { + // origin: "*", + // methods: "GET,PUT,POST,DELETE" + //}, + + /** If you need to set an http proxy please set an environment variable + * called http_proxy (or HTTP_PROXY) outside of Node-RED in the operating system. + * For example - http_proxy=http://myproxy.com:8080 + * (Setting it here will have no effect) + * You may also specify no_proxy (or NO_PROXY) to supply a comma separated + * list of domains to not proxy, eg - no_proxy=.acme.co,.acme.co.uk + */ + + /** The following property can be used to add a custom middleware function + * in front of all http in nodes. This allows custom authentication to be + * applied to all http in nodes, or any other sort of common request processing. + * It can be a single function or an array of middleware functions. + */ + //httpNodeMiddleware: function(req,res,next) { + // // Handle/reject the request, or pass it on to the http in node by calling next(); + // // Optionally skip our rawBodyParser by setting this to true; + // //req.skipRawBodyParser = true; + // next(); + //}, + + /** When httpAdminRoot is used to move the UI to a different root path, the + * following property can be used to identify a directory of static content + * that should be served at http://localhost:1880/. + */ + //httpStatic: '/home/nol/node-red-static/', + +/******************************************************************************* + * Runtime Settings + * - lang + * - logging + * - contextStorage + * - exportGlobalContextKeys + * - externalModules + ******************************************************************************/ + + /** Uncomment the following to run node-red in your preferred language. + * Available languages include: en-US (default), ja, de, zh-CN, zh-TW, ru, ko + * Some languages are more complete than others. + */ + // lang: "de", + + /** Configure the logging output */ + logging: { + /** Only console logging is currently supported */ + console: { + /** Level of logging to be recorded. Options are: + * fatal - only those errors which make the application unusable should be recorded + * error - record errors which are deemed fatal for a particular request + fatal errors + * warn - record problems which are non fatal + errors + fatal errors + * info - record information about the general running of the application + warn + error + fatal errors + * debug - record information which is more verbose than info + info + warn + error + fatal errors + * trace - record very detailed logging + debug + info + warn + error + fatal errors + * off - turn off all logging (doesn't affect metrics or audit) + */ + level: "info", + /** Whether or not to include metric events in the log output */ + metrics: false, + /** Whether or not to include audit events in the log output */ + audit: false + } + }, + + /** Context Storage + * The following property can be used to enable context storage. The configuration + * provided here will enable file-based context that flushes to disk every 30 seconds. + * Refer to the documentation for further options: https://nodered.org/docs/api/context/ + */ + //contextStorage: { + // default: { + // module:"localfilesystem" + // }, + //}, + + /** `global.keys()` returns a list of all properties set in global context. + * This allows them to be displayed in the Context Sidebar within the editor. + * In some circumstances it is not desirable to expose them to the editor. The + * following property can be used to hide any property set in `functionGlobalContext` + * from being list by `global.keys()`. + * By default, the property is set to false to avoid accidental exposure of + * their values. Setting this to true will cause the keys to be listed. + */ + exportGlobalContextKeys: false, + + /** Configure how the runtime will handle external npm modules. + * This covers: + * - whether the editor will allow new node modules to be installed + * - whether nodes, such as the Function node are allowed to have their + * own dynamically configured dependencies. + * The allow/denyList options can be used to limit what modules the runtime + * will install/load. It can use '*' as a wildcard that matches anything. + */ + externalModules: { + // autoInstall: false, /** Whether the runtime will attempt to automatically install missing modules */ + // autoInstallRetry: 30, /** Interval, in seconds, between reinstall attempts */ + // palette: { /** Configuration for the Palette Manager */ + // allowInstall: true, /** Enable the Palette Manager in the editor */ + // allowUpload: true, /** Allow module tgz files to be uploaded and installed */ + // allowList: [], + // denyList: [] + // }, + // modules: { /** Configuration for node-specified modules */ + // allowInstall: true, + // allowList: [], + // denyList: [] + // } + }, + + +/******************************************************************************* + * Editor Settings + * - disableEditor + * - editorTheme + ******************************************************************************/ + + /** The following property can be used to disable the editor. The admin API + * is not affected by this option. To disable both the editor and the admin + * API, use either the httpRoot or httpAdminRoot properties + */ + //disableEditor: false, + + /** Customising the editor + * See https://nodered.org/docs/user-guide/runtime/configuration#editor-themes + * for all available options. + */ + editorTheme: { + /** The following property can be used to set a custom theme for the editor. + * See https://github.com/node-red-contrib-themes/theme-collection for + * a collection of themes to chose from. + */ + //theme: "", + palette: { + /** The following property can be used to order the categories in the editor + * palette. If a node's category is not in the list, the category will get + * added to the end of the palette. + * If not set, the following default order is used: + */ + //categories: ['subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'], + }, + projects: { + /** To enable the Projects feature, set this value to true */ + enabled: false, + workflow: { + /** Set the default projects workflow mode. + * - manual - you must manually commit changes + * - auto - changes are automatically committed + * This can be overridden per-user from the 'Git config' + * section of 'User Settings' within the editor + */ + mode: "manual" + } + }, + codeEditor: { + /** Select the text editor component used by the editor. + * Defaults to "ace", but can be set to "ace" or "monaco" + */ + lib: "ace", + options: { + /** The follow options only apply if the editor is set to "monaco" + * + * theme - must match the file name of a theme in + * packages/node_modules/@node-red/editor-client/src/vendor/monaco/dist/theme + * e.g. "tomorrow-night", "upstream-sunburst", "github", "my-theme" + */ + theme: "vs", + /** other overrides can be set e.g. fontSize, fontFamily, fontLigatures etc. + * for the full list, see https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandaloneeditorconstructionoptions.html + */ + //fontSize: 14, + //fontFamily: "Cascadia Code, Fira Code, Consolas, 'Courier New', monospace", + //fontLigatures: true, + } + } + }, + +/******************************************************************************* + * Node Settings + * - fileWorkingDirectory + * - functionGlobalContext + * - functionExternalModules + * - nodeMessageBufferMaxLength + * - ui (for use with Node-RED Dashboard) + * - debugUseColors + * - debugMaxLength + * - execMaxBufferSize + * - httpRequestTimeout + * - mqttReconnectTime + * - serialReconnectTime + * - socketReconnectTime + * - socketTimeout + * - tcpMsgQueueSize + * - inboundWebSocketTimeout + * - tlsConfigDisableLocalFiles + * - webSocketNodeVerifyClient + ******************************************************************************/ + + /** The working directory to handle relative file paths from within the File nodes + * defaults to the working directory of the Node-RED process. + */ + //fileWorkingDirectory: "", + + /** Allow the Function node to load additional npm modules directly */ + functionExternalModules: true, + + /** The following property can be used to set predefined values in Global Context. + * This allows extra node modules to be made available with in Function node. + * For example, the following: + * functionGlobalContext: { os:require('os') } + * will allow the `os` module to be accessed in a Function node using: + * global.get("os") + */ + functionGlobalContext: { + // os:require('os'), + }, + + /** The maximum number of messages nodes will buffer internally as part of their + * operation. This applies across a range of nodes that operate on message sequences. + * defaults to no limit. A value of 0 also means no limit is applied. + */ + //nodeMessageBufferMaxLength: 0, + + /** If you installed the optional node-red-dashboard you can set it's path + * relative to httpNodeRoot + * Other optional properties include + * readOnly:{boolean}, + * middleware:{function or array}, (req,res,next) - http middleware + * ioMiddleware:{function or array}, (socket,next) - socket.io middleware + */ + //ui: { path: "ui" }, + + /** Colourise the console output of the debug node */ + //debugUseColors: true, + + /** The maximum length, in characters, of any message sent to the debug sidebar tab */ + debugMaxLength: 1000, + + /** Maximum buffer size for the exec node. Defaults to 10Mb */ + //execMaxBufferSize: 10000000, + + /** Timeout in milliseconds for HTTP request connections. Defaults to 120s */ + //httpRequestTimeout: 120000, + + /** Retry time in milliseconds for MQTT connections */ + mqttReconnectTime: 15000, + + /** Retry time in milliseconds for Serial port connections */ + serialReconnectTime: 15000, + + /** Retry time in milliseconds for TCP socket connections */ + //socketReconnectTime: 10000, + + /** Timeout in milliseconds for TCP server socket connections. Defaults to no timeout */ + //socketTimeout: 120000, + + /** Maximum number of messages to wait in queue while attempting to connect to TCP socket + * defaults to 1000 + */ + //tcpMsgQueueSize: 2000, + + /** Timeout in milliseconds for inbound WebSocket connections that do not + * match any configured node. Defaults to 5000 + */ + //inboundWebSocketTimeout: 5000, + + /** To disable the option for using local files for storing keys and + * certificates in the TLS configuration node, set this to true. + */ + //tlsConfigDisableLocalFiles: true, + + /** The following property can be used to verify websocket connection attempts. + * This allows, for example, the HTTP request headers to be checked to ensure + * they include valid authentication information. + */ + //webSocketNodeVerifyClient: function(info) { + // /** 'info' has three properties: + // * - origin : the value in the Origin header + // * - req : the HTTP request + // * - secure : true if req.connection.authorized or req.connection.encrypted is set + // * + // * The function should return true if the connection should be accepted, false otherwise. + // * + // * Alternatively, if this function is defined to accept a second argument, callback, + // * it can be used to verify the client asynchronously. + // * The callback takes three arguments: + // * - result : boolean, whether to accept the connection or not + // * - code : if result is false, the HTTP error status to return + // * - reason: if result is false, the HTTP reason string to return + // */ + //}, +} diff --git a/node-red-standalone/dfwebos-app.yml b/node-red-standalone/dfwebos-app.yml new file mode 100644 index 0000000..22af303 --- /dev/null +++ b/node-red-standalone/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: node-red-standalone +category: automation +name: "Node-RED" +version: "4.1.8" +tagline: Соедините Интернет вещей +description: >- + Node-RED — это инструмент визуального программирования для подключения оборудования. + устройства, API и онлайн-сервисы новыми и интересными способами. + + + Он предоставляет редактор на основе браузера, который позволяет легко объединять потоки, используя широкий спектр узлов в палитре, которые можно развернуть в среде выполнения одним щелчком мыши. Встроенная библиотека позволяет сохранять полезные функции, шаблоны или потоки для повторного использования. + + + Потоки, созданные в Node-RED, хранятся с помощью JSON, который можно легко импортировать и экспортировать для совместного использования с другими. Онлайн-библиотека потоков позволяет вам поделиться своими лучшими потоками со всем миром. +releaseNotes: >- + Этот выпуск включает улучшения редактора и исправления ошибок: + - Разрешить плагинам темы переопределять настройки и добавлять пользовательские параметры меню. + - Разрешить скрытие раздела боковой панели справки Node-RED. + - Исправлена навигация по отфильтрованным древовидным спискам с помощью клавиш со стрелками. + - Исправлено сообщение журнала «подключено к...» в узлах TCP с использованием TLS. + - Добавлены действия «показать первую вкладку» и «показать последнюю вкладку» для навигации по вкладкам. + - Добавлены значки на вкладки функциональных узлов, содержащие код. + - Обновлена зависимость tar для повышения стабильности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/node-red/node-red/releases. +developer: OpenJS Foundation +website: https://nodered.org +dependencies: [] +repo: https://github.com/node-red/node-red +support: https://nodered.org/about/community/slack/ +port: 1881 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/38 diff --git a/node-red-standalone/docker-compose.yml b/node-red-standalone/docker-compose.yml new file mode 100644 index 0000000..0d25975 --- /dev/null +++ b/node-red-standalone/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3.7" + +services: + web: + image: nodered/node-red:4.1.8@sha256:a5cb1dcdf90a7148b02b9dba4acfe6bd98c7bf3bff1e845dcdecfd7af3a95a29 + network_mode: host + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + PORT: 1881 diff --git a/node-red/data/admin-credentials.json b/node-red/data/admin-credentials.json new file mode 100644 index 0000000..f0a61c8 --- /dev/null +++ b/node-red/data/admin-credentials.json @@ -0,0 +1 @@ +{"username":"dfwebos","# TODO:": "APP_PASSWORD","password":"$2a$08$qlczmePU/RzbHHBFrsefkONVqflomTis92iH.pdOVItq72W2G.bGu","permissions":"*"} diff --git a/node-red/data/flows.json b/node-red/data/flows.json new file mode 100644 index 0000000..ad22197 --- /dev/null +++ b/node-red/data/flows.json @@ -0,0 +1,221 @@ +[ + { + "id": "f50232d5dd80c5b3", + "type": "tab", + "label": "Flow 1", + "disabled": false, + "info": "" + }, + { + "id": "54f43e91fb562ca8", + "type": "debug", + "z": "f50232d5dd80c5b3", + "name": "msg.payload (see sidebar debug tab)", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 710, + "y": 420, + "wires": [] + }, + { + "id": "fcef7a58987b1ae5", + "type": "http request", + "z": "f50232d5dd80c5b3", + "name": "", + "method": "POST", + "ret": "obj", + "paytoqs": "body", + "url": "", + "tls": "", + "persist": false, + "proxy": "", + "authType": "", + "x": 450, + "y": 420, + "wires": [ + [ + "54f43e91fb562ca8" + ] + ] + }, + { + "id": "2679e2b0b4a4e5f2", + "type": "inject", + "z": "f50232d5dd80c5b3", + "name": "getblockchaininfo request", + "props": [ + { + "p": "payload" + }, + { + "p": "url", + "v": "\"http://\" & $env(\"BITCOIN_IP\") & \":\" & $env(\"BITCOIN_RPC_PORT\")", + "vt": "jsonata" + }, + { + "p": "headers", + "v": "{\t \"Authorization\": \"Basic \" & $base64encode($env(\"BITCOIN_RPC_USER\") & \":\" & $env(\"BITCOIN_RPC_PASS\"))\t}", + "vt": "jsonata" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "{\"jsonrpc\":\"1.0\",\"id\":\"test\",\"method\":\"getblockchaininfo\",\"params\":[]}", + "payloadType": "json", + "x": 230, + "y": 420, + "wires": [ + [ + "fcef7a58987b1ae5" + ] + ] + }, + { + "id": "44b30c110ae098b0", + "type": "function", + "z": "f50232d5dd80c5b3", + "name": "build admin-credentials.json", + "func": "msg.payload = JSON.stringify({\n username: \"umbrel\",\n password: bcryptjs.hashSync(msg.payload, 8),\n permissions: \"*\",\n});\nreturn msg;\n", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [ + { + "var": "bcryptjs", + "module": "bcryptjs" + } + ], + "x": 400, + "y": 180, + "wires": [ + [ + "4da8c916b9891e5b" + ] + ] + }, + { + "id": "7d4f1cdb5d0f6875", + "type": "inject", + "z": "f50232d5dd80c5b3", + "name": "Password", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "moneyprintergobrrr", + "payloadType": "str", + "x": 180, + "y": 180, + "wires": [ + [ + "44b30c110ae098b0" + ] + ], + "info": "hello" + }, + { + "id": "34b08a2abb3c4418", + "type": "comment", + "z": "f50232d5dd80c5b3", + "name": "Welcome to Node RED", + "info": "# This is an experimental app.\n## Use at your own risk.\n", + "x": 160, + "y": 40, + "wires": [] + }, + { + "id": "4da8c916b9891e5b", + "type": "file", + "z": "f50232d5dd80c5b3", + "name": "write /data/admin-credentials.json", + "filename": "/data/admin-credentials.json", + "appendNewline": true, + "createDir": false, + "overwriteFile": "true", + "encoding": "none", + "x": 520, + "y": 240, + "wires": [ + [ + "325641493682ca2a" + ] + ] + }, + { + "id": "9a14303ee07169ab", + "type": "comment", + "z": "f50232d5dd80c5b3", + "name": "Here is an example flow to change the password - double-click the Password node to choose a new password.", + "info": "", + "x": 480, + "y": 100, + "wires": [] + }, + { + "id": "11440c02fac4477f", + "type": "comment", + "z": "f50232d5dd80c5b3", + "name": "Don't forget to hit the deploy button to save changes.", + "info": "", + "x": 300, + "y": 140, + "wires": [] + }, + { + "id": "325641493682ca2a", + "type": "debug", + "z": "f50232d5dd80c5b3", + "name": "status", + "active": true, + "tosidebar": false, + "console": false, + "tostatus": true, + "complete": "payload", + "targetType": "msg", + "statusVal": "\"Updated at \" & $now()", + "statusType": "jsonata", + "x": 750, + "y": 240, + "wires": [] + }, + { + "id": "f546e2778c4622fd", + "type": "comment", + "z": "f50232d5dd80c5b3", + "name": "It is recommended to delete the password flow after you've updated the password.", + "info": "", + "x": 390, + "y": 300, + "wires": [] + }, + { + "id": "8eb5f7f9889a3c98", + "type": "comment", + "z": "f50232d5dd80c5b3", + "name": "Here is an example that calls getblockchaininfo:", + "info": "", + "x": 280, + "y": 380, + "wires": [] + } +] \ No newline at end of file diff --git a/node-red/data/settings.js b/node-red/data/settings.js new file mode 100644 index 0000000..d17b7d5 --- /dev/null +++ b/node-red/data/settings.js @@ -0,0 +1,497 @@ +/** + * This is the default settings file provided by Node-RED. + * + * It can contain any valid JavaScript code that will get run when Node-RED + * is started. + * + * Lines that start with // are commented out. + * Each entry should be separated from the entries above and below by a comma ',' + * + * For more information about individual settings, refer to the documentation: + * https://nodered.org/docs/user-guide/runtime/configuration + * + * The settings are split into the following sections: + * - Flow File and User Directory Settings + * - Security + * - Server Settings + * - Runtime Settings + * - Editor Settings + * - Node Settings + * + **/ + +const fs = require("fs"); +const path = require("path"); + +let adminCredentials; +if (fs.existsSync(path.join(__dirname, "admin-credentials.json"))) { + try { + adminCredentials = require("./admin-credentials.json"); + } catch (error) { + console.error("Failed to load admin-credentials.json"); + throw error; + } +} + +module.exports = { + +/******************************************************************************* + * Flow File and User Directory Settings + * - flowFile + * - credentialSecret + * - flowFilePretty + * - userDir + * - nodesDir + ******************************************************************************/ + + /** The file containing the flows. If not set, defaults to flows_.json **/ + flowFile: 'flows.json', + + /** By default, credentials are encrypted in storage using a generated key. To + * specify your own secret, set the following property. + * If you want to disable encryption of credentials, set this property to false. + * Note: once you set this property, do not change it - doing so will prevent + * node-red from being able to decrypt your existing credentials and they will be + * lost. + */ + //credentialSecret: "a-secret-key", + + /** By default, the flow JSON will be formatted over multiple lines making + * it easier to compare changes when using version control. + * To disable pretty-printing of the JSON set the following property to false. + */ + flowFilePretty: true, + + /** By default, all user data is stored in a directory called `.node-red` under + * the user's home directory. To use a different location, the following + * property can be used + */ + //userDir: '/home/nol/.node-red/', + + /** Node-RED scans the `nodes` directory in the userDir to find local node files. + * The following property can be used to specify an additional directory to scan. + */ + //nodesDir: '/home/nol/.node-red/nodes', + +/******************************************************************************* + * Security + * - adminAuth + * - https + * - httpsRefreshInterval + * - requireHttps + * - httpNodeAuth + * - httpStaticAuth + ******************************************************************************/ + + /** To password protect the Node-RED editor and admin API, the following + * property can be used. See http://nodered.org/docs/security.html for details. + */ + adminAuth: { + type: "credentials", + users: [ + adminCredentials + ].filter(Boolean) + }, + + /** The following property can be used to enable HTTPS + * This property can be either an object, containing both a (private) key + * and a (public) certificate, or a function that returns such an object. + * See http://nodejs.org/api/https.html#https_https_createserver_options_requestlistener + * for details of its contents. + */ + + /** Option 1: static object */ + //https: { + // key: require("fs").readFileSync('privkey.pem'), + // cert: require("fs").readFileSync('cert.pem') + //}, + + /** Option 2: function that returns the HTTP configuration object */ + // https: function() { + // // This function should return the options object, or a Promise + // // that resolves to the options object + // return { + // key: require("fs").readFileSync('privkey.pem'), + // cert: require("fs").readFileSync('cert.pem') + // } + // }, + + /** If the `https` setting is a function, the following setting can be used + * to set how often, in hours, the function will be called. That can be used + * to refresh any certificates. + */ + //httpsRefreshInterval : 12, + + /** The following property can be used to cause insecure HTTP connections to + * be redirected to HTTPS. + */ + //requireHttps: true, + + /** To password protect the node-defined HTTP endpoints (httpNodeRoot), + * including node-red-dashboard, or the static content (httpStatic), the + * following properties can be used. + * The `pass` field is a bcrypt hash of the password. + * See http://nodered.org/docs/security.html#generating-the-password-hash + */ + //httpNodeAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, + //httpStaticAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, + +/******************************************************************************* + * Server Settings + * - uiPort + * - uiHost + * - apiMaxLength + * - httpServerOptions + * - httpAdminRoot + * - httpAdminMiddleware + * - httpNodeRoot + * - httpNodeCors + * - httpNodeMiddleware + * - httpStatic + ******************************************************************************/ + + /** the tcp port that the Node-RED web server is listening on */ + uiPort: process.env.PORT || 1880, + + /** By default, the Node-RED UI accepts connections on all IPv4 interfaces. + * To listen on all IPv6 addresses, set uiHost to "::", + * The following property can be used to listen on a specific interface. For + * example, the following would only allow connections from the local machine. + */ + //uiHost: "127.0.0.1", + + /** The maximum size of HTTP request that will be accepted by the runtime api. + * Default: 5mb + */ + //apiMaxLength: '5mb', + + /** The following property can be used to pass custom options to the Express.js + * server used by Node-RED. For a full list of available options, refer + * to http://expressjs.com/en/api.html#app.settings.table + */ + //httpServerOptions: { }, + + /** By default, the Node-RED UI is available at http://localhost:1880/ + * The following property can be used to specify a different root path. + * If set to false, this is disabled. + */ + //httpAdminRoot: '/admin', + + /** The following property can be used to add a custom middleware function + * in front of all admin http routes. For example, to set custom http + * headers. It can be a single function or an array of middleware functions. + */ + // httpAdminMiddleware: function(req,res,next) { + // // Set the X-Frame-Options header to limit where the editor + // // can be embedded + // //res.set('X-Frame-Options', 'sameorigin'); + // next(); + // }, + + + /** Some nodes, such as HTTP In, can be used to listen for incoming http requests. + * By default, these are served relative to '/'. The following property + * can be used to specifiy a different root path. If set to false, this is + * disabled. + */ + //httpNodeRoot: '/red-nodes', + + /** The following property can be used to configure cross-origin resource sharing + * in the HTTP nodes. + * See https://github.com/troygoode/node-cors#configuration-options for + * details on its contents. The following is a basic permissive set of options: + */ + //httpNodeCors: { + // origin: "*", + // methods: "GET,PUT,POST,DELETE" + //}, + + /** If you need to set an http proxy please set an environment variable + * called http_proxy (or HTTP_PROXY) outside of Node-RED in the operating system. + * For example - http_proxy=http://myproxy.com:8080 + * (Setting it here will have no effect) + * You may also specify no_proxy (or NO_PROXY) to supply a comma separated + * list of domains to not proxy, eg - no_proxy=.acme.co,.acme.co.uk + */ + + /** The following property can be used to add a custom middleware function + * in front of all http in nodes. This allows custom authentication to be + * applied to all http in nodes, or any other sort of common request processing. + * It can be a single function or an array of middleware functions. + */ + //httpNodeMiddleware: function(req,res,next) { + // // Handle/reject the request, or pass it on to the http in node by calling next(); + // // Optionally skip our rawBodyParser by setting this to true; + // //req.skipRawBodyParser = true; + // next(); + //}, + + /** When httpAdminRoot is used to move the UI to a different root path, the + * following property can be used to identify a directory of static content + * that should be served at http://localhost:1880/. + */ + //httpStatic: '/home/nol/node-red-static/', + +/******************************************************************************* + * Runtime Settings + * - lang + * - logging + * - contextStorage + * - exportGlobalContextKeys + * - externalModules + ******************************************************************************/ + + /** Uncomment the following to run node-red in your preferred language. + * Available languages include: en-US (default), ja, de, zh-CN, zh-TW, ru, ko + * Some languages are more complete than others. + */ + // lang: "de", + + /** Configure the logging output */ + logging: { + /** Only console logging is currently supported */ + console: { + /** Level of logging to be recorded. Options are: + * fatal - only those errors which make the application unusable should be recorded + * error - record errors which are deemed fatal for a particular request + fatal errors + * warn - record problems which are non fatal + errors + fatal errors + * info - record information about the general running of the application + warn + error + fatal errors + * debug - record information which is more verbose than info + info + warn + error + fatal errors + * trace - record very detailed logging + debug + info + warn + error + fatal errors + * off - turn off all logging (doesn't affect metrics or audit) + */ + level: "info", + /** Whether or not to include metric events in the log output */ + metrics: false, + /** Whether or not to include audit events in the log output */ + audit: false + } + }, + + /** Context Storage + * The following property can be used to enable context storage. The configuration + * provided here will enable file-based context that flushes to disk every 30 seconds. + * Refer to the documentation for further options: https://nodered.org/docs/api/context/ + */ + //contextStorage: { + // default: { + // module:"localfilesystem" + // }, + //}, + + /** `global.keys()` returns a list of all properties set in global context. + * This allows them to be displayed in the Context Sidebar within the editor. + * In some circumstances it is not desirable to expose them to the editor. The + * following property can be used to hide any property set in `functionGlobalContext` + * from being list by `global.keys()`. + * By default, the property is set to false to avoid accidental exposure of + * their values. Setting this to true will cause the keys to be listed. + */ + exportGlobalContextKeys: false, + + /** Configure how the runtime will handle external npm modules. + * This covers: + * - whether the editor will allow new node modules to be installed + * - whether nodes, such as the Function node are allowed to have their + * own dynamically configured dependencies. + * The allow/denyList options can be used to limit what modules the runtime + * will install/load. It can use '*' as a wildcard that matches anything. + */ + externalModules: { + // autoInstall: false, /** Whether the runtime will attempt to automatically install missing modules */ + // autoInstallRetry: 30, /** Interval, in seconds, between reinstall attempts */ + // palette: { /** Configuration for the Palette Manager */ + // allowInstall: true, /** Enable the Palette Manager in the editor */ + // allowUpload: true, /** Allow module tgz files to be uploaded and installed */ + // allowList: [], + // denyList: [] + // }, + // modules: { /** Configuration for node-specified modules */ + // allowInstall: true, + // allowList: [], + // denyList: [] + // } + }, + + +/******************************************************************************* + * Editor Settings + * - disableEditor + * - editorTheme + ******************************************************************************/ + + /** The following property can be used to disable the editor. The admin API + * is not affected by this option. To disable both the editor and the admin + * API, use either the httpRoot or httpAdminRoot properties + */ + //disableEditor: false, + + /** Customising the editor + * See https://nodered.org/docs/user-guide/runtime/configuration#editor-themes + * for all available options. + */ + editorTheme: { + /** The following property can be used to set a custom theme for the editor. + * See https://github.com/node-red-contrib-themes/theme-collection for + * a collection of themes to chose from. + */ + //theme: "", + palette: { + /** The following property can be used to order the categories in the editor + * palette. If a node's category is not in the list, the category will get + * added to the end of the palette. + * If not set, the following default order is used: + */ + //categories: ['subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'], + }, + projects: { + /** To enable the Projects feature, set this value to true */ + enabled: false, + workflow: { + /** Set the default projects workflow mode. + * - manual - you must manually commit changes + * - auto - changes are automatically committed + * This can be overridden per-user from the 'Git config' + * section of 'User Settings' within the editor + */ + mode: "manual" + } + }, + codeEditor: { + /** Select the text editor component used by the editor. + * Defaults to "ace", but can be set to "ace" or "monaco" + */ + lib: "ace", + options: { + /** The follow options only apply if the editor is set to "monaco" + * + * theme - must match the file name of a theme in + * packages/node_modules/@node-red/editor-client/src/vendor/monaco/dist/theme + * e.g. "tomorrow-night", "upstream-sunburst", "github", "my-theme" + */ + theme: "vs", + /** other overrides can be set e.g. fontSize, fontFamily, fontLigatures etc. + * for the full list, see https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandaloneeditorconstructionoptions.html + */ + //fontSize: 14, + //fontFamily: "Cascadia Code, Fira Code, Consolas, 'Courier New', monospace", + //fontLigatures: true, + } + } + }, + +/******************************************************************************* + * Node Settings + * - fileWorkingDirectory + * - functionGlobalContext + * - functionExternalModules + * - nodeMessageBufferMaxLength + * - ui (for use with Node-RED Dashboard) + * - debugUseColors + * - debugMaxLength + * - execMaxBufferSize + * - httpRequestTimeout + * - mqttReconnectTime + * - serialReconnectTime + * - socketReconnectTime + * - socketTimeout + * - tcpMsgQueueSize + * - inboundWebSocketTimeout + * - tlsConfigDisableLocalFiles + * - webSocketNodeVerifyClient + ******************************************************************************/ + + /** The working directory to handle relative file paths from within the File nodes + * defaults to the working directory of the Node-RED process. + */ + //fileWorkingDirectory: "", + + /** Allow the Function node to load additional npm modules directly */ + functionExternalModules: true, + + /** The following property can be used to set predefined values in Global Context. + * This allows extra node modules to be made available with in Function node. + * For example, the following: + * functionGlobalContext: { os:require('os') } + * will allow the `os` module to be accessed in a Function node using: + * global.get("os") + */ + functionGlobalContext: { + // os:require('os'), + }, + + /** The maximum number of messages nodes will buffer internally as part of their + * operation. This applies across a range of nodes that operate on message sequences. + * defaults to no limit. A value of 0 also means no limit is applied. + */ + //nodeMessageBufferMaxLength: 0, + + /** If you installed the optional node-red-dashboard you can set it's path + * relative to httpNodeRoot + * Other optional properties include + * readOnly:{boolean}, + * middleware:{function or array}, (req,res,next) - http middleware + * ioMiddleware:{function or array}, (socket,next) - socket.io middleware + */ + //ui: { path: "ui" }, + + /** Colourise the console output of the debug node */ + //debugUseColors: true, + + /** The maximum length, in characters, of any message sent to the debug sidebar tab */ + debugMaxLength: 1000, + + /** Maximum buffer size for the exec node. Defaults to 10Mb */ + //execMaxBufferSize: 10000000, + + /** Timeout in milliseconds for HTTP request connections. Defaults to 120s */ + //httpRequestTimeout: 120000, + + /** Retry time in milliseconds for MQTT connections */ + mqttReconnectTime: 15000, + + /** Retry time in milliseconds for Serial port connections */ + serialReconnectTime: 15000, + + /** Retry time in milliseconds for TCP socket connections */ + //socketReconnectTime: 10000, + + /** Timeout in milliseconds for TCP server socket connections. Defaults to no timeout */ + //socketTimeout: 120000, + + /** Maximum number of messages to wait in queue while attempting to connect to TCP socket + * defaults to 1000 + */ + //tcpMsgQueueSize: 2000, + + /** Timeout in milliseconds for inbound WebSocket connections that do not + * match any configured node. Defaults to 5000 + */ + //inboundWebSocketTimeout: 5000, + + /** To disable the option for using local files for storing keys and + * certificates in the TLS configuration node, set this to true. + */ + //tlsConfigDisableLocalFiles: true, + + /** The following property can be used to verify websocket connection attempts. + * This allows, for example, the HTTP request headers to be checked to ensure + * they include valid authentication information. + */ + //webSocketNodeVerifyClient: function(info) { + // /** 'info' has three properties: + // * - origin : the value in the Origin header + // * - req : the HTTP request + // * - secure : true if req.connection.authorized or req.connection.encrypted is set + // * + // * The function should return true if the connection should be accepted, false otherwise. + // * + // * Alternatively, if this function is defined to accept a second argument, callback, + // * it can be used to verify the client asynchronously. + // * The callback takes three arguments: + // * - result : boolean, whether to accept the connection or not + // * - code : if result is false, the HTTP error status to return + // * - reason: if result is false, the HTTP reason string to return + // */ + //}, +} diff --git a/node-red/dfwebos-app.yml b/node-red/dfwebos-app.yml new file mode 100644 index 0000000..b377a69 --- /dev/null +++ b/node-red/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1 +id: node-red +category: automation +name: "Node-RED (Bitcoin)" +version: "4.1.8" +tagline: Соедините Интернет вещей +description: >- + Node-RED — это инструмент визуального программирования для подключения оборудования. + устройства, API и онлайн-сервисы новыми и интересными способами. + + + Он предоставляет редактор на основе браузера, который позволяет легко объединять потоки, используя широкий спектр узлов в палитре, которые можно развернуть в среде выполнения одним щелчком мыши. Встроенная библиотека позволяет сохранять полезные функции, шаблоны или потоки для повторного использования. + + + Потоки, созданные в Node-RED, хранятся с помощью JSON, который можно легко импортировать и экспортировать для совместного использования с другими. Онлайн-библиотека потоков позволяет вам поделиться своими лучшими потоками со всем миром. + + + Примечание. Если вы хотите, чтобы ваши узлы «HTTP In» были доступны без аутентификации, добавьте к URL-адресу «/public/». Например. /публичный/сделай что-нибудь + + + Внимание: Node-RED (Bitcoin) на DFWebOS способен напрямую подключаться к Bitcoin Core, LND и Electrum, в связи с этим следует соблюдать осторожность при установке сторонних узлов Node-RED. +developer: OpenJS Foundation +website: https://nodered.org +dependencies: + - bitcoin + - electrs + - lightning +repo: https://github.com/node-red/node-red +support: https://nodered.org/about/community/slack/ +port: 1880 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +releaseNotes: >- + Этот выпуск включает улучшения редактора и новые функции: + - Разрешить плагинам темы переопределять настройки и добавлять пользовательские параметры меню. + - Разрешить скрытие раздела боковой панели справки Node-RED. + - Исправлена навигация по отфильтрованным древовидным спискам с помощью клавиш со стрелками. + - Исправлено сообщение журнала «подключено к...» в узлах TCP с использованием TLS. + - Добавлены действия «показать первую вкладку» и «показать последнюю вкладку» для навигации по вкладкам. + - Исправлена кодировка названия ветки в запросах на удаление. + - Добавлены значки на вкладки функциональных узлов, содержащие код. + - Обновлена зависимость tar + + + Полные примечания к выпуску можно найти по адресу https://github.com/node-red/node-red/releases. +defaultUsername: dfwebos +defaultPassword: moneyprintergobrrr +torOnly: false +submitter: Oren Zomer +submission: https://github.com/getumbrel/umbrel/pull/958 diff --git a/node-red/docker-compose.yml b/node-red/docker-compose.yml new file mode 100644 index 0000000..4b8d2c8 --- /dev/null +++ b/node-red/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: node-red_web_1 + APP_PORT: 1880 + # Используется, чтобы разрешить публичное раскрытие потоков (HTTP In). + PROXY_AUTH_WHITELIST: "/public/*" + + web: + image: nodered/node-red:4.1.8@sha256:a5cb1dcdf90a7148b02b9dba4acfe6bd98c7bf3bff1e845dcdecfd7af3a95a29 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + PORT: 1880 + BITCOIN_NETWORK: $APP_BITCOIN_NETWORK + BITCOIN_IP: $APP_BITCOIN_NODE_IP + BITCOIN_RPC_PORT: $APP_BITCOIN_RPC_PORT + BITCOIN_RPC_USER: $APP_BITCOIN_RPC_USER + BITCOIN_RPC_PASS: $APP_BITCOIN_RPC_PASS + LND_IP: $APP_LIGHTNING_NODE_IP + LND_GRPC_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + ELECTRUM_IP: $APP_ELECTRS_NODE_IP + ELECTRUM_PORT: $APP_ELECTRS_NODE_PORT diff --git a/nolooking/dfwebos-app.yml b/nolooking/dfwebos-app.yml new file mode 100644 index 0000000..049dfa2 --- /dev/null +++ b/nolooking/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1 +id: nolooking +category: bitcoin +name: nolooking +version: "0.2.2-alpha" +tagline: Откройте все свои каналы за одну транзакцию +description: >- + Noooking использует Pay-to-Endpoint (payjoin) для согласования открытия канала для вашего Lightning-узла, инициируемого любым кошельком, поддерживающим BIP78. + + + Вы можете открыть несколько каналов Lightning за один платеж, улучшая конфиденциальность, экономя на комиссиях за транзакции и времени ожидания. + + + Прочтите статью о Lightning Powered PayJoin: https://chaincase.app/words/lightning-payjoin, чтобы узнать обо всех преимуществах! + + + Обратите внимание, что noooking все еще находится на ранней стадии разработки. Используя noooking, вы несете всю ответственность за любую потерю средств или другие претензии, которые могут возникнуть. Мы быстро совершенствуем этот продукт, поэтому отзывы и вклад очень приветствуются. +releaseNotes: >- + - Рекомендовать исходящие узлы для открытия каналов. + + - Отображать ошибки соединения в приложении. +developer: nolooking +website: https://nolooking.chaincase.app +dependencies: + - lightning +repo: https://github.com/chaincase-app/nolooking +support: https://github.com/chaincase-app/nolooking/issues +port: 4444 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "/" +defaultUsername: "" +defaultPassword: "" +submitter: nolooking +submission: https://github.com/getumbrel/dfwebos-apps/pull/229 diff --git a/nolooking/docker-compose.yml b/nolooking/docker-compose.yml new file mode 100644 index 0000000..1d415e0 --- /dev/null +++ b/nolooking/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: nolooking_server_1 + APP_PORT: 4444 + PROXY_AUTH_WHITELIST: "/pj" + + server: + image: chaincase/nolooking:v0.2.2-alpha@sha256:e4a95443a05b44659f55a20c592142d59a4d8f54830a71f4c3d22a3a6bf88801 + restart: on-failure + stop_grace_period: 1m + init: true + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + LND_DATA_DIR: $APP_LIGHTNING_NODE_DATA_DIR + LND_HOST: $APP_LIGHTNING_NODE_IP + LND_GRPC_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + MACAROON_FILE: /lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/admin.macaroon + TLS_FILE: /lnd/tls.cert + DEVICE_DOMAIN_NAME: $DEVICE_DOMAIN_NAME + APP_PASSWORD: $APP_PASSWORD + APP_HIDDEN_SERVICE: $APP_HIDDEN_SERVICE diff --git a/nostr-relay/data/relay-proxy/.gitkeep b/nostr-relay/data/relay-proxy/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nostr-relay/data/relay/config.toml b/nostr-relay/data/relay/config.toml new file mode 100644 index 0000000..2fbba07 --- /dev/null +++ b/nostr-relay/data/relay/config.toml @@ -0,0 +1,154 @@ +# Конфигурация Nostr-rs-реле + +[info] +# Рекламируемый URL для веб-сокета Nostr. +# URL-адрес_реле = "wss://nostr.example.com/" + +# Ретрансляция информации для клиентов. Введите здесь свое уникальное имя сервера. +name = "DFWebOS Nostr Relay" + +# Описание +description = "A Nostr Relay running on DFWebOS" + +# Открытый ключ административного контакта +#pubkey = "0c2d168a4ae8ca58c9f1ab237b5df682599c6c7ab74307ea8b05684b60405d41" + +# Административный контакт URI +#контакт = "mailto:contact@example.com" + +[diagnostics] +# Включить трассировку tokio (для использования с tokio-console) +#tracing = false + +[database] +# Ядро базы данных (sqlite/postgres). По умолчанию используется sqlite. +# Поддержка postgres в настоящее время является экспериментальной. +#engine = "sqlite" + +# Каталог для файлов SQLite. По умолчанию используется текущий каталог. Может +# также указывается (и переопределяется) с помощью команды "--db dirname" +# линейный вариант. +#data_directory = "." + +# Используйте базу данных в памяти вместо 'nostr.db'. +# Требуется движок sqlite. +# Осторожность; это не выдержит перезапуска процесса! +#in_memory = false + +# Настройки пула подключений к базе данных для подписчиков: + +# Минимальное количество подключений считывателя SQLite +#min_conn = 4 + +# Максимальное количество подключений считывателя SQLite. Рекомендую установить это +# приблизительное количество ядер. +#max_conn = 8 + +# Строка подключения к базе данных. Требуется для postgres; не используется для +# sqlite. +#connection = "postgresql://postgres:nostr@localhost:7500/nostr" + +[network] +# Привязать к этому сетевому адресу +address = "0.0.0.0" + +# Слушайте этот порт +port = 8080 + +# Если он присутствует, прочитайте этот заголовок HTTP для регистрации адресов клиента IP. +# Примеры распространенных прокси Cloudflare: +#удаленный_ip_header = "x-forwarded-for" +#remote_ip_header = "cf-connecting-ip" + +# Интервал пинга Websocket в секундах, по умолчанию 5 минут. +#ping_interval = 300 + +[options] +# Отклонять события с метками времени, превышающими это количество секунд в +# будущее. Рекомендуется отклонять все, что превышает 30 минут. +# с текущего времени, но по умолчанию разрешена любая дата. +reject_future_seconds = 1800 + +[limits] +# Ограничение количества событий, создаваемых в секунду, в среднем за одну минуту. Должно быть +# целое число. Если не установлено (или установлено значение 0), ограничения нет. Примечание: +# это касается сервера в целом, а не каждого соединения. +# +# Ограничение создания событий настоятельно рекомендуется, если ваше реле +# публика! +# +#messages_per_sec = 5 + +# Ограничить количество подписок клиентов, создаваемых в секунду, в среднем за одну +# минута. Должно быть целое число. Если не установлено (или установлено значение 0), по умолчанию используется значение +# безлимитный. Настоятельно рекомендуется установить низкое значение, например +# 10, чтобы обеспечить справедливое обслуживание. +#subscriptions_per_min = 0 + +# НЕВЫПОЛНЕНО... +# Ограничьте количество одновременных подключений к базе данных, которые может иметь клиент. +# Это не позволяет одному клиенту запускать слишком много дорогостоящих +# запросы к базе данных. Должно быть целое число. Если не установлено (или установлено в 0), +# по умолчанию — неограниченно (с учетом ограничений подписки). +#db_conns_per_client = 0 + +# Ограничьте потоки блокировки, используемые для подключений к базе данных. По умолчанию 16. +#max_blocking_threads = 16 + +# Ограничьте максимальный размер сообщения EVENT. По умолчанию 128 KB. +# Установите значение 0 для неограниченного доступа. +#max_event_bytes = 131072 + +# Максимальное сообщение WebSocket в байтах. По умолчанию 128 KB. +#max_ws_message_bytes = 131072 + +# Максимальный размер кадра WebSocket в байтах. По умолчанию 128 KB. +#max_ws_frame_bytes = 131072 + +# Размер широковещательного буфера, в количестве событий. Это предотвращает медленное +# читателей от потребления памяти. +#broadcast_buffer = 16384 + +# Размер буфера сохранения событий, в количестве событий. Это обеспечивает +# противодавление отправителям, если запись происходит медленно. +#event_persist_buffer = 4096 + +# Черный список видов событий. События такого типа будут отброшены. +#event_kind_blacklist = [ +# 70202, +#] + +[authorization] +# Адреса открытых ключей в этом массиве занесены в белый список для публикации событий. +# Будут приняты только действительные события этих авторов, если переменная +# установлен. +#pubkey_whitelist = [ +# "35d26e4690cbe1a898af61cc3515661eb5fa763b57bd0b42e45099c8b32fd50f", +# "887645fef0ce0c3c1218d2f5d8e6132a19304cdc57cd20281d082f38cfea0072", +#] + +[verified_users] +# NIP-05 проверка пользователей. Может быть "enabled", чтобы потребовать NIP-05 +# метаданные для авторов событий, "passive" для выполнения проверки, но +# никогда не блокируйте публикацию или "disabled" ничего не делать. +#mode = "disabled" + +# Доменные имена, которым будет запрещено публиковать события. +#domain_blacklist = ["wellorder.net"] + +# Доменные имена, которым разрешено публиковать события. Если определено, только +# события NIP-05 проверенных авторов в этих доменах сохраняются. +#домен_белый список = ["example.com"] + +# Рассмотрим открытый ключ "verified", если у нас есть успешная проверка. +# из домена NIP-05 в течение этого времени. Обратите внимание: если +# домен предоставляет успешный ответ, в котором отсутствует учетная запись, +# проверка немедленно отменяется. +#verify_expiration = "1 week" + +# Как долго ждать между попытками проверки конкретного автора. +#verify_update_frequency = "24 hours" + +# Сколько последовательных неудачных проверок прежде, чем мы откажемся от проверки +# этот автор. +#max_consecutive_failures = 20 diff --git a/nostr-relay/data/relay/db/.gitkeep b/nostr-relay/data/relay/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/nostr-relay/dfwebos-app.yml b/nostr-relay/dfwebos-app.yml new file mode 100644 index 0000000..f697bd4 --- /dev/null +++ b/nostr-relay/dfwebos-app.yml @@ -0,0 +1,88 @@ +manifestVersion: 1 +id: nostr-relay +category: social +name: Nostr Relay +version: "1.2.0" +tagline: Резервное копирование всей вашей активности Nostr с помощью частного реле. +description: > + Представляем Nostr Relay — официальное приложение от DFWebOS. + + + Шаг 1. Подключите клиент Nostr (например, Damus, Amethyst) к частному реле для бесперебойного резервного копирования всей активности Nostr. В Damus добавьте URL-адрес своего реле через Меню > Реле. + + + Совет: установите Tailscale на ваш DFWebOS и ваши устройства, чтобы обеспечить бесперебойное соединение между вашими клиентами и вашим ретранслятором, даже когда вы находитесь вдали от домашней сети. Включите MagicDNS Tailscale и используйте ws://dfwebos:4848 в качестве URL-адреса ретрансляции. + + + Шаг 2. Нажмите значок глобуса вверху, чтобы выполнить резервное копирование прошлой активности Nostr с ваших общедоступных ретрансляторов и обеспечить бесперебойное резервное копирование в будущем, даже если соединение между вашим частным ретранслятором и клиентом Nostr будет нарушено. + + + Вот и все! Ваша прошлая и будущая активность Nostr теперь будет сохранена на вашем частном ретрансляторе. + + + Nostr Relay основан на проекте nostr-rs-relay с открытым исходным кодом — реализации реле Nostr на Rust. В настоящее время он поддерживает весь протокол ретрансляции, включая NIP-01, NIP-02, NIP-03, NIP-05, NIP-09, NIP-11, NIP-12, NIP-15, NIP-16, NIP-20, NIP-22, NIP-26, NIP-28 и NIP-33. +releaseNotes: >- + 🎉 Виджеты доступны для DFWebOS 1.0. + + + В этом обновлении представлены два новых виджета для Nostr Relay, позволяющие сразу увидеть ваши последние заметки и последние типы событий прямо с главного экрана вашего DFWebOS: + + + - Последние заметки: виджет, отображающий последние заметки, синхронизированные с вашим реле Nostr. + + + - Последние события: виджет, который показывает последние типы событий, синхронизированные с вашим реле Nostr, включая публикации, реакции, обновления профиля и многое другое. + + + После обновления до DFWebOS 1.0 вы можете добавлять виджеты, щелкнув правой кнопкой мыши на главном экране и выбрав «Редактировать виджеты» или нажав «Виджеты» в Dock. +developer: DFWebOS +website: https://dfwebos.com +dependencies: [] +repo: https://github.com/getumbrel/umbrel-nostr-relay +support: https://community.getumbrel.com +port: 4848 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +widgets: + - id: "latest-kind1" + type: "list" + refresh: "5s" + endpoint: "relay-proxy:80/relay-proxy/widgets/latest-kind1" + link: "" + example: + type: "list" + link: "" + items: + - text: "one-click app restarts, arriving in DFWebOS 1.0" + subtext: "01:11 Mar 02, 2024" + - text: "woop! glad it arrived before christmas! welcome aboard 🫡" + subtext: "03:07 Dec 28, 2023" + - text: "Congrats! Can’t wait for you to get your hands on it 🫶" + subtext: "11:40 Nov 24, 2023" + - id: "latest-events" + type: "list-emoji" + refresh: "5s" + endpoint: "relay-proxy:80/relay-proxy/widgets/latest-events" + link: "" + example: + type: "list-emoji" + link: "" + count: "503" + items: + - emoji: "💭" + text: "Post" + - emoji: "🔏" + text: "Encrypted DM" + - emoji: "🤙" + text: "Reaction" + - emoji: "🤙" + text: "Reaction" + - emoji: "📝" + text: "Profile Update" +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/398 diff --git a/nostr-relay/docker-compose.yml b/nostr-relay/docker-compose.yml new file mode 100644 index 0000000..44a796a --- /dev/null +++ b/nostr-relay/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: nostr-relay_web_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + web: + image: getumbrel/umbrel-nostr-relay:v1.1.0@sha256:21b67ab2e9d30b20e785497f19534e8e21b6da1bfe69e3ae5afe91b759f20488 + user: "1000:1000" + restart: on-failure + environment: + RELAY_HOST: "nostr-relay_relay_1" + RELAY_PORT: "8080" + RELAY_PROXY_HOST: "nostr-relay_relay-proxy_1" + RELAY_PROXY_PORT: "80" + + relay: + image: getumbrel/nostr-rs-relay:0.8.1@sha256:a6c857aecd4964bf058ec5c3c0fea95e0d87ed0cc789f2140f96de108e5515ec + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/relay/config.toml:/app/config.toml + - ${APP_DATA_DIR}/data/relay/db:/app/db + + relay-proxy: + image: getumbrel/umbrel-nostr-relay-proxy:v1.1.0@sha256:6b335f4488f813475bb7c9d3bb6282fda081808e2d5447404fc8a1ffcc1279dc + user: "1000:1000" + restart: on-failure + environment: + RELAY_HOST: "nostr-relay_relay_1" + RELAY_PORT: "8080" + volumes: + - ${APP_DATA_DIR}/data/relay-proxy:/app/data + depends_on: + - relay diff --git a/nostr-relay/hooks/pre-start b/nostr-relay/hooks/pre-start new file mode 100755 index 0000000..4ea7e35 --- /dev/null +++ b/nostr-relay/hooks/pre-start @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" +RELAY_PROXY_DATA_DIR="${APP_DATA_DIR}/relay-proxy" + +[ ! -d "${RELAY_PROXY_DATA_DIR}" ] && mkdir -p "${RELAY_PROXY_DATA_DIR}" && chown 1000:1000 "${RELAY_PROXY_DATA_DIR}" diff --git a/nostrudel/dfwebos-app.yml b/nostrudel/dfwebos-app.yml new file mode 100644 index 0000000..562ea89 --- /dev/null +++ b/nostrudel/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: nostrudel +category: social +name: noStrudel +version: "0.46.1" +tagline: Песочница для изучения ностр +description: >- + noStrumel — это веб-клиент nostr, предназначенный для изучения сети nostr. + + Основное внимание уделяется опытным пользователям или любым другим пользователям, которые хотят изучить внутреннюю работу nostr. +releaseNotes: | + ### Незначительные изменения + + - Добавлена возможность индивидуального сервиса обмена (njump.me) + - Добавлен компонент чтения статей с использованием собственного веб-TTS API. + - Показать избранные реле в режиме обнаружения. + - Добавить ретрансляционный канал в представление обнаружения. + - Переработана навигация по профилю пользователя. + + ### Изменения патча + + - Исправлена ошибка, из-за которой изображения ссылок на открытый график не были размыты. + - Исправлена ошибка, из-за которой учетные записи ncryptsec не запрашивали пароль для расшифровки. +developer: hzrd149 +website: https://github.com/hzrd149/nostrudel +dependencies: [] +repo: https://github.com/hzrd149/nostrudel +support: https://github.com/hzrd149/nostrudel/issues +port: 3149 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: hzrd149 +submission: https://github.com/getumbrel/dfwebos-apps/pull/901 diff --git a/nostrudel/docker-compose.yml b/nostrudel/docker-compose.yml new file mode 100644 index 0000000..7e04d27 --- /dev/null +++ b/nostrudel/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: nostrudel_web_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + cors: + image: ghcr.io/hzrd149/docker-cors-anywhere:0.4.5@sha256:641f5ea3265acbc339a03a72b79cd942c4bedab9b1c8b3fc13e5f3f087f649e6 + environment: + CORSANYWHERE_REQUIRE_HEADERS: "host" + web: + image: ghcr.io/hzrd149/nostrudel:0.46.1@sha256:c89738d354beeef4c41a3b73d483ee8a5ba03950691d0966a7310ed10fc980ef + restart: on-failure + stop_grace_period: 1m + init: true + depends_on: + - cors + environment: + CORS_PROXY: cors:8080 diff --git a/ntfy/data/cache/.gitkeep b/ntfy/data/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ntfy/data/data/.gitkeep b/ntfy/data/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ntfy/data/lib/.gitkeep b/ntfy/data/lib/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ntfy/dfwebos-app.yml b/ntfy/dfwebos-app.yml new file mode 100644 index 0000000..0962693 --- /dev/null +++ b/ntfy/dfwebos-app.yml @@ -0,0 +1,64 @@ +manifestVersion: 1 +id: ntfy +name: ntfy +tagline: Отправляйте уведомления на свой телефон или рабочий стол с помощью скриптов с любого компьютера и/или с помощью REST API. +category: automation +version: "2.22.0" +port: 13119 +description: >- + ntfy (произносится как уведомление) — это простая служба уведомлений pub-sub на основе HTTP. Он позволяет отправлять уведомления на + ваш телефон или рабочий стол с помощью сценариев с любого компьютера и/или с помощью REST API. + + + ℹ️ Уведомления iOS + + Ограничения Apple требуют наличия общедоступного сервера для мгновенных уведомлений на iOS. Мы используем https://ntfy.sh для опроса + запросы по умолчанию. При этом ваши уведомления не отправляются через эту службу, а вместо этого только предлагает вашему устройству iOS + загрузите уведомление из вашего локального экземпляра ntfy. Опытные пользователи могут при желании удалить переменную среды «NTFY_UPSTREAM_BASE_URL» из файла создания Docker; однако это отключит мгновенные уведомления на устройствах iOS. + + + 🔔 Отправляйте push-уведомления из вашего приложения или скрипта. + + Публикация сообщений может осуществляться через PUT или POST. Темы создаются «на лету» путем подписки или публикации на них. + Если вы используете ntfy без регистрации, тема по сути представляет собой пароль, поэтому выберите что-то, что нелегко угадать. + + + 📱 Получайте уведомления на свой телефон + + Подпишитесь на тему и получайте уведомления с различными приоритетами, вложениями, кнопками действий, тегами и смайликами. + и даже для автоматизации. + + + 💻 Получайте уведомления на свой компьютер + + Вы также можете использовать веб-приложение, чтобы подписаться на темы. Если вы это сделаете, уведомления будут отображаться как уведомления на рабочем столе. + Просто введите название темы и нажмите кнопку «Подписаться». Браузер будет поддерживать соединение открытым и прослушивать + входящие уведомления. + + + ⚙️ Интеграция с вашими любимыми инструментами + + Публикация сообщений — это всего лишь HTTP-запрос, поэтому практически все на свете может интегрироваться с ntfy. Сотни + интеграций, проектов или скриптов уже поддерживают ntfy. +developer: ntfy LLC +website: https://ntfy.sh/ +submitter: Sharknoon +submission: https://github.com/getumbrel/dfwebos-apps/pull/ +repo: https://github.com/binwiederhier/ntfy +support: https://github.com/binwiederhier/ntfy/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Исправления ошибок и улучшения безопасности: + - Исправлена уязвимость безопасности в конечной точке веб-push для предотвращения потенциальной подделки запросов на стороне сервера. + - Исправлена проблема, из-за которой в веб-приложении нельзя было установить бессрочный срок действия токенов доступа. + - Исправлен сбой веб-приложения на странице учетной записи для токенов без времени последнего доступа. + + + Полные примечания к выпуску можно найти по адресу https://github.com/binwiederhier/ntfy/releases. +dependencies: [] +path: "" +defaultUsername: dfwebos +deterministicPassword: true diff --git a/ntfy/docker-compose.yml b/ntfy/docker-compose.yml new file mode 100644 index 0000000..d03a498 --- /dev/null +++ b/ntfy/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: ntfy_app_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + app: + image: binwiederhier/ntfy:v2.22.0@sha256:d8b3408c75d5ae78e03339af6103e7e6195e56573eea6f1ad34bb4dc4f44f340 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + entrypoint: [ "/bin/sh", "/entrypoint.sh" ] + volumes: + - ${APP_DATA_DIR}/entrypoint.sh:/entrypoint.sh + - ${APP_DATA_DIR}/data/cache:/var/cache/ntfy + - ${APP_DATA_DIR}/data/data:/etc/ntfy + - ${APP_DATA_DIR}/data/lib:/var/lib/ntfy + environment: + NTFY_BASE_URL: http://${DEVICE_DOMAIN_NAME}:${APP_PROXY_PORT} + NTFY_UPSTREAM_BASE_URL: https://ntfy.sh + NTFY_CACHE_FILE: /var/cache/ntfy/cache.db + NTFY_ENABLE_LOGIN: "true" + NTFY_AUTH_FILE: /var/lib/ntfy/user.db + NTFY_AUTH_DEFAULT_ACCESS: deny-all + NTFY_PASSWORD: ${APP_PASSWORD} diff --git a/ntfy/entrypoint.sh b/ntfy/entrypoint.sh new file mode 100644 index 0000000..e888f2c --- /dev/null +++ b/ntfy/entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/sh +ntfy serve & +sleep 2 +NTFY_PASSWORD=${NTFY_PASSWORD} ntfy user add --role=admin DFWebOS || true +wait \ No newline at end of file diff --git a/nutstash-wallet/dfwebos-app.yml b/nutstash-wallet/dfwebos-app.yml new file mode 100644 index 0000000..ccfd540 --- /dev/null +++ b/nutstash-wallet/dfwebos-app.yml @@ -0,0 +1,30 @@ +manifestVersion: 1 +id: nutstash-wallet +category: bitcoin +name: Nutstash Wallet +version: "0.1.10" +tagline: "Nutstash — кошелек Cashu для вашего браузера" +description: >- + Что такое Кашу? + + «Cashu — это бесплатная система электронных денег Chaumian с открытым исходным кодом, созданная для Bitcoin. Cashu предлагает почти идеальную конфиденциальность для пользователей кастодиальных приложений Bitcoin. Никто не должен знать, кто вы, сколько у вас средств и с кем вы совершаете транзакции». - Cashu.space + + + Это приложение находится на ранней стадии разработки и, скорее всего, содержит ошибки. Однако он обрабатывает реальные саты, поэтому обязательно используйте только те суммы, которые достаточно малы, чтобы их можно было потерять. +releaseNotes: >- + - Первоначальный выпуск в магазине приложений DFWebOS. +developer: gandlafbtc +website: https://nutstash.app/ +dependencies: [] +repo: https://github.com/gandlafbtc/nutstash-wallet +support: https://t.me/+DRy-rSe5wQtlYTk1 +port: 4173 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: gandlafbtc +submission: https://github.com/getumbrel/dfwebos-apps/pull/459 diff --git a/nutstash-wallet/docker-compose.yml b/nutstash-wallet/docker-compose.yml new file mode 100644 index 0000000..1f346a7 --- /dev/null +++ b/nutstash-wallet/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: nutstash-wallet_web_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/gandlafbtc/nutstash-wallet:0.1.10@sha256:8a585c4a6545e68e9a1c8fcf2a0a15ef401ad040accf925234451fe1b838d180 + restart: on-failure + stop_grace_period: 1m + diff --git a/oak-node/data/.gitkeep b/oak-node/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/oak-node/dfwebos-app.yml b/oak-node/dfwebos-app.yml new file mode 100644 index 0000000..39d889a --- /dev/null +++ b/oak-node/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: oak-node +category: bitcoin +name: Oak Node +version: "0.3.8" +tagline: Делайте больше с вашим узлом LND +description: >- + Oak Node позволяет планировать повторяющиеся советы вашим любимым проектам или создателям контента. Все, что им нужно, это адрес Lightning. + + + Вы на Nostr? У бота Nostr от Oak Node есть всякие вкусности. Поддержка НВК? Конечно. Способ отправлять сообщения своему боту из любой точки мира + и заставить его отправлять или получать спутники для вас? Да, оно там. Возможно даже... способ сделать заметки о Дамусе? Включено + Также ознакомьтесь с модулем советов бота Shadowy LN. + + + Хотите получить доступ к своему кошельку LN со своего телефона без использования Tor? Электронный бот позволяет вам проверить свой баланс, + создавать и оплачивать счета прямо со своего телефона. Хорошо работает, даже если ваш телефон принимает данные медленно или плохо. +releaseNotes: >- + В этом обновлении добавлен темный режим и улучшена поддержка NWC. +developer: Carlos +website: https://oak-node.net +dependencies: + - lightning +repo: https://oak-node.net +support: https://oak-node.net/forum +port: 8100 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: ok300 +submission: https://github.com/getumbrel/dfwebos-apps/pull/60 \ No newline at end of file diff --git a/oak-node/docker-compose.yml b/oak-node/docker-compose.yml new file mode 100644 index 0000000..7769acf --- /dev/null +++ b/oak-node/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: oak-node_web_1 + APP_PORT: 8100 + + web: + image: oak-node.net/oak:v0.3.8@sha256:226e4b91f753babbf166893dfa044ed80eafd00a13e75033c374bd11824ef961 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - $APP_LIGHTNING_NODE_DATA_DIR:/lnd-dir:ro + - ${APP_DATA_DIR}/data:/data + - ${APP_DATA_DIR}/log:/oak/log + environment: + ROCKET_PORT: 8100 + ROCKET_ADDRESS: 0.0.0.0 + OAK_DATA_DIR: /data + OAK_LND_REST_API_URL: https://$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_REST_PORT + OAK_LND_MACAROON_PATH: /lnd-dir/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon + OAK_LND_CERT_PATH: /lnd-dir/tls.cert + OAK_ONION_SOCKS5_HOST: $TOR_PROXY_IP + OAK_ONION_SOCKS5_PORT: $TOR_PROXY_PORT diff --git a/oak-node/log/.gitkeep b/oak-node/log/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/obsidian/data/config/.gitkeep b/obsidian/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/obsidian/dfwebos-app.yml b/obsidian/dfwebos-app.yml new file mode 100644 index 0000000..a4432a9 --- /dev/null +++ b/obsidian/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: obsidian +category: files +name: Obsidian +version: "1.8.10" +tagline: Частное и гибкое приложение для письма, которое адаптируется к вашему образу мышления. +description: >- + **Ваши мысли принадлежат вам.** + + Obsidian хранит заметки на вашем устройстве, поэтому вы можете быстро получить к ним доступ даже в автономном режиме. Никто другой не может их прочитать, даже мы. + + + **Ваш разум уникален.** + + С помощью тысяч плагинов и тем вы можете адаптировать Obsidian под свой образ мышления. + + + **Ваши знания должны длиться долго.** + + Obsidian использует открытые, непатентованные файлы, поэтому вы никогда не будете заблокированы и сможете сохранить свои данные в течение длительного времени. +releaseNotes: >- + В этом выпуске Obsidian исправлена ошибка: + - Исправлены проблемы с нумерацией в списках с пробелами в начале или внутри блочных кавычек. + + Полные примечания к выпуску доступны по адресу https://obsidian.md/changelog/. +developer: Obsidian +website: https://obsidian.md/ +dependencies: [] +repo: https://github.com/linuxserver/docker-obsidian +support: https://github.com/linuxserver/docker-obsidian/issues +port: 3435 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/1921 diff --git a/obsidian/docker-compose.yml b/obsidian/docker-compose.yml new file mode 100644 index 0000000..e86e453 --- /dev/null +++ b/obsidian/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: obsidian_server_1 + APP_PORT: 3000 + + server: + image: linuxserver/obsidian:1.8.10@sha256:b85e75e572e75f5e00062fb564102eaad8e19970938ee8ec7bae0a96566c1400 + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + shm_size: "1gb" diff --git a/octoprint/dfwebos-app.yml b/octoprint/dfwebos-app.yml new file mode 100644 index 0000000..bd05913 --- /dev/null +++ b/octoprint/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1 +id: octoprint +category: files +name: OctoPrint +version: "1.11.7" +tagline: Быстрый веб-интерфейс для вашего 3D-принтера +description: >- + OctoPrint предоставляет быстрый веб-интерфейс для управления потребительскими 3D-принтерами. + Мощная система плагинов OctoPrint позволяет расширить его функциональность с помощью замечательных плагинов от сообщества. + + + Подключите свой 3D-принтер к DFWebOS, чтобы контролировать и контролировать каждый аспект работы вашего 3D-принтера и заданий печати прямо из браузера. +developer: OctoPrint +website: https://octoprint.org/ +repo: https://github.com/OctoPrint/OctoPrint +support: https://community.octoprint.org/ +port: 5003 +submitter: mateosilguero +releaseNotes: >- + Основные исправления ошибок в этом выпуске: + - Добавлен собственный анализатор для пользовательского агента веб-просмотра Prusa Slicer, исправляющий ошибку загрузки интерфейс. + - Исправлен автоотчет об активной позиции с использованием правильной возможности. + - Исправлены флажки, не отображаемые для необработанных таймлапсов. + - Исправлено поведение ответа отсутствующих подгрупп в управлении доступом API. + - Исправлены файлы cookie сеанса, которые не подавлялись, когда механизм входа в систему использует ключ API. + - Исправлено преобразование часового пояса в заголовке Last-Modified. + - Исправлена справка и вывод для пользовательских команд активации/деактивации CLI. + - Исправлена ошибка, из-за которой вкладка очистки диспетчера плагинов всегда оставалась пустой. + + + Полные примечания к выпуску можно найти по адресу https://github.com/OctoPrint/OctoPrint/releases. +submission: https://github.com/getumbrel/dfwebos-apps/pull/449 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/octoprint/docker-compose.yml b/octoprint/docker-compose.yml new file mode 100644 index 0000000..f3fbbdf --- /dev/null +++ b/octoprint/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: octoprint_web_1 + APP_PORT: 5000 + PROXY_AUTH_ADD: "false" + + web: + image: octoprint/octoprint:1.11.7@sha256:49bea4ebfd0cefa9289f058574e7eda6d2de201f1b74309e0c10019e5ec58f04 + privileged: true + volumes: + - ${APP_DATA_DIR}/data:/octoprint + - /dev:/dev + restart: on-failure diff --git a/ollama/data/.gitkeep b/ollama/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ollama/dfwebos-app.yml b/ollama/dfwebos-app.yml new file mode 100644 index 0000000..76ecbe0 --- /dev/null +++ b/ollama/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: ollama +name: Ollama +tagline: Самостоятельные модели ИИ с открытым исходным кодом, такие как DeepSeek-R1, Llama и другие. +category: ai +version: "0.21.2" +port: 11434 +description: >- + Ollama позволяет загружать и запускать расширенные модели ИИ непосредственно на вашем оборудовании. Самостоятельное размещение моделей ИИ обеспечивает полный контроль над вашими данными и защищает вашу конфиденциальность. + + + ⚠️ Прежде чем запускать модель, убедитесь, что на вашем устройстве достаточно свободной оперативной памяти для ее поддержки. Попытка запустить модель, объем которой превышает доступную память, может привести к сбою устройства или зависанию устройства. Всегда проверяйте требования модели перед ее загрузкой или запуском. + + + **Начиная:** + + Самый простой способ начать работу с Ollama — установить приложение Open WebUI из магазина приложений DFWebOS. Открытый веб-интерфейс автоматически подключится к вашей настройке Ollama, что позволит вам легко управлять загрузкой моделей и общаться с моделями ИИ. + + + **Расширенная настройка:** + + Если вы хотите подключить Ollama к другим приложениям или устройствам, выполните следующие действия: + - Приложения, работающие на DFWebOS: используйте ollama_ollama_1 в качестве хоста и 11434 в качестве порта при настройке других приложений для подключения к Ollama. Например, базовый URL-адрес API будет выглядеть так: http://ollama_ollama_1:11434.. + - Пользовательские интеграции: подключайте Ollama к сторонним приложениям или своему собственному коду, используя локальный домен DFWebOS (например, http://dfwebos.local:11434) или IP-адрес вашего устройства, который вы можете найти на странице настроек DFWebOS (например, http://192.168.4.74:11434).) +backupIgnore: + - data/* +developer: Ollama +website: https://ollama.com/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/2114 +repo: https://github.com/ollama/ollama +support: https://github.com/ollama/ollama/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: >- + Основные моменты этого выпуска: + - Повышена надежность процесса регистрации запуска ollama. + - Рекомендуемые модели при запуске ollama теперь отображаются в последовательном фиксированном порядке. + - запуск ollama теперь объединяет плагин веб-поиска Ollama с OpenClaw. + + + Полные примечания к выпуску доступны по адресу https://github.com/ollama/ollama/releases. +path: "" diff --git a/ollama/docker-compose.yml b/ollama/docker-compose.yml new file mode 100644 index 0000000..8f0b4a4 --- /dev/null +++ b/ollama/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: ollama_ollama_1 + APP_PORT: 11434 + PROXY_AUTH_ADD: "false" + + ollama: + image: ollama/ollama:0.21.2@sha256:2038a264392af4d21f7f14e1568e8dd9aa0f2bd0f31d7d9a59a8cca1e9829663 + environment: + OLLAMA_ORIGINS: "*" + OLLAMA_CONTEXT_LENGTH: 8192 + volumes: + - ${APP_DATA_DIR}/data:/root/.ollama + restart: on-failure diff --git a/ollama/exports.sh b/ollama/exports.sh new file mode 100644 index 0000000..9a1816d --- /dev/null +++ b/ollama/exports.sh @@ -0,0 +1 @@ +export APP_OLLAMA_URL="http://ollama_ollama_1:11434" diff --git a/omnitools/dfwebos-app.yml b/omnitools/dfwebos-app.yml new file mode 100644 index 0000000..f0e6124 --- /dev/null +++ b/omnitools/dfwebos-app.yml @@ -0,0 +1,65 @@ +manifestVersion: 1 +id: omnitools +name: OmniTools +tagline: Универсальная коллекция мощных веб-инструментов для повседневных задач. +category: files +version: "0.6.0" +port: 8678 +description: >- + 🛠️ OmniTools — это универсальное веб-приложение «все в одном», предлагающее обширную коллекцию из более чем 80 практичных утилит, предназначенных для упрощения повседневных цифровых задач. Он действует как швейцарский нож для вашего браузера, позволяя вам выполнять широкий спектр преобразований и манипуляций с форматами файлов, не полагаясь на внешние серверы или загрузку в облако. + + + С помощью OmniTools вы можете легко редактировать изображения, удаляя фон, изменяя размер или конвертируя форматы, манипулируя PDF-файлами путем объединения документов или аннотирования, обрезать и изменять видео, а также преобразовывать текст с помощью различных параметров форматирования и преобразования. Он также включает в себя мощные помощники по работе с данными, такие как программы просмотра и конвертеры CSV и JSON, инструменты анализа XML и удобные утилиты для генерации QR-кодов. + + + Помимо обработки файлов, OmniTools предоставляет полезные калькуляторы и преобразователи единиц даты, времени и математических операций, что делает его настоящим многофункциональным помощником в цифровых рабочих процессах. Каждая функция предназначена для эффективной и конфиденциальной работы в вашем браузере, гарантируя, что ваши данные никогда не выйдут из-под вашего контроля. + + + Являетесь ли вы творческим профессионалом, которому требуется быстрое редактирование изображений, разработчиком, работающим с форматами данных, или просто человеком, который хочет упростить общие задачи, связанные с файлами, OmniTools предлагает легкую, удобную для пользователя среду, которая объединяет широкий спектр функций в одном удобном месте. Основное внимание в нем уделяется обеспечению конфиденциальности и простоте использования, что позволяет вам делать больше с меньшими хлопотами. +developer: Ibrahima Gaye Coulibaly +website: https://omnitools.app/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3187 +repo: https://github.com/iib0011/omni-tools +support: https://github.com/iib0011/omni-tools/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Новые функции в этом выпуске включают в себя: + + - Генератор паролей + - URL-кодирование и декодирование + - Детектор скрытых персонажей + - Сравнение JSON + - Объединить видео + - Генераторы случайных портов и чисел + - Преобразование Unix в дату + + Переводы теперь доступны на нескольких языках, включая испанский, французский, немецкий, китайский, японский, хинди, голландский, португальский и русский. + + + Новая функция закладок позволяет вам сохранять ваши любимые инструменты для быстрого доступа, и она сохраняется в течение всего сеанса. + + + Приложение теперь включает параметры фильтрации, позволяющие обычным пользователям и разработчикам легко находить подходящие инструменты. + + + Дополнительные улучшения: + + - Редактор изображений с функциями обрезки, поворота, фильтров, водяных знаков и аннотаций. + - Редактор PDF для добавления текста, изображений, подписей и флажков. + - Преобразование видео в GIF + - Извлечение звука, изменение скорости, обрезка и объединение + - Объяснитель Crontab и проверка високосного года + - Инструмент цензуры текста + - XML Beautifier и валидатор + + Полные примечания к выпуску можно найти на сайте https://github.com/iib0011/omni-tools/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/omnitools/docker-compose.yml b/omnitools/docker-compose.yml new file mode 100644 index 0000000..c1e62a0 --- /dev/null +++ b/omnitools/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: omnitools_app_1 + APP_PORT: 80 + + app: + image: iib0011/omni-tools:0.6.0@sha256:3f35a17d8d81caa33c7caec0198eb561dee212a5f48d8303d8f7b182c930fb71 + # без рута не работает + #user: "1000:1000" + security_opt: + - no-new-privileges:true + restart: on-failure diff --git a/onlyoffice-nextcloud/data/cache/.gitkeep b/onlyoffice-nextcloud/data/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/onlyoffice-nextcloud/data/certs/.gitkeep b/onlyoffice-nextcloud/data/certs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/onlyoffice-nextcloud/data/db/.gitkeep b/onlyoffice-nextcloud/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/onlyoffice-nextcloud/data/logs/.gitkeep b/onlyoffice-nextcloud/data/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/onlyoffice-nextcloud/dfwebos-app.yml b/onlyoffice-nextcloud/dfwebos-app.yml new file mode 100644 index 0000000..2627352 --- /dev/null +++ b/onlyoffice-nextcloud/dfwebos-app.yml @@ -0,0 +1,34 @@ +manifestVersion: 1 +id: onlyoffice-nextcloud +category: files +name: ONLYOFFICE Docs +version: "9.3.1" +tagline: Онлайн-офис для Nextcloud +description: >- + Пакет онлайн-офиса для Nextcloud, который позволяет создавать, редактировать и совместно работать над текстовыми документами, электронными таблицами и презентациями в режиме реального времени. + + + Просто установите ONLYOFFICE Docs и следуйте инструкциям в приложении, чтобы подключить его к Nextcloud, работающему на вашем DFWebOS. +releaseNotes: >- + Этот выпуск включает исправления ошибок и улучшения стабильности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/ONLYOFFICE/DocumentServer/blob/master/CHANGELOG.md#931. +developer: Ascensio System SIA +website: https://www.onlyoffice.com/ +dependencies: + - nextcloud +repo: https://github.com/ONLYOFFICE/DocumentServer +support: https://forum.onlyoffice.com/ +port: 3014 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: a4004 +submission: https://github.com/getumbrel/dfwebos-apps/pull/1288 diff --git a/onlyoffice-nextcloud/docker-compose.yml b/onlyoffice-nextcloud/docker-compose.yml new file mode 100644 index 0000000..be28752 --- /dev/null +++ b/onlyoffice-nextcloud/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3.9' +services: + app_proxy: + environment: + APP_HOST: onlyoffice-nextcloud_web_1 + APP_PORT: 3000 + + web: + image: a4004/onlyoffice-nextcloud-web:1.0.4@sha256:774bd9bda641e6be49286921637840efba050fdfd022934dfd9ee9b6ec8d0a63 + restart: on-failure + environment: + - DOCS_ADDRESS=http://$DEVICE_DOMAIN_NAME:$DOCSERVER_PORT + - DOCS_INTERNAL_ADDRESS=http://onlyoffice-nextcloud_documentserver_1 + - NEXTCLOUD_INTERNAL_ADDRESS=http://nextcloud_web_1 + - NEXTCLOUD_WEB_URL=http://$DEVICE_DOMAIN_NAME:$APP_NEXTCLOUD_PORT + + documentserver: + image: onlyoffice/documentserver:9.3.1@sha256:e0a74be8c96fa91a9f55855e86ffb6d4d247d4c8d19dfaef7f441890a1bdbfd3 + restart: on-failure + stop_grace_period: 1m + ports: + - "${DOCSERVER_PORT}:80" + environment: + - JWT_ENABLED=false + - ONLYOFFICE_HTTPS_HSTS_ENABLED=false + - USE_UNAUTHORIZED_STORAGE=true + - ALLOW_PRIVATE_IP_ADDRESS=true + - ALLOW_META_IP_ADDRESS=true + volumes: + - ${APP_DATA_DIR}/data/logs:/var/log/onlyoffice + - ${APP_DATA_DIR}/data/certs:/var/www/onlyoffice/Data + - ${APP_DATA_DIR}/data/cache:/var/lib/onlyoffice + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql diff --git a/onlyoffice-nextcloud/exports.sh b/onlyoffice-nextcloud/exports.sh new file mode 100644 index 0000000..e5e1038 --- /dev/null +++ b/onlyoffice-nextcloud/exports.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +export DOCSERVER_PORT=5672 \ No newline at end of file diff --git a/open-webui/data/open-webui/.gitkeep b/open-webui/data/open-webui/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/open-webui/dfwebos-app.yml b/open-webui/dfwebos-app.yml new file mode 100644 index 0000000..2c4989b --- /dev/null +++ b/open-webui/dfwebos-app.yml @@ -0,0 +1,60 @@ +manifestVersion: 1 +id: open-webui +name: Open WebUI +tagline: Общайтесь с моделями Ollama, такими как DeepSeek-R1 и LLama, или используйте ключ OpenAI API. +category: ai +version: "0.9.2" +port: 2876 +description: >- + Открытый веб-интерфейс позволяет вам общаться с продвинутыми моделями ИИ, работающими локально на вашем устройстве, или подключаться к онлайн-моделям с помощью ключа API. + + + **Начало работы с местными моделями ИИ:** + + + 🦙 Установите Ollama: Начните с установки приложения Ollama из магазина приложений DFWebOS. Ollama позволяет загружать и запускать большие языковые модели, такие как Llama 3 и DeepSeek-R1, прямо на вашем устройстве. + + + ⬇️ Загрузите модель. В приложении Open WebUI введите название нужной модели в строке поиска и нажмите «Извлечь с Ollama.com». Полный список моделей доступен на https://ollama.com/.. + + + 🤖 Пример — запуск DeepSeek-R1 1.5B: Чтобы использовать модель DeepSeek-R1 с 1,5 миллиардами параметров, введите deepseek-r1:1.5b в строке поиска и начните загрузку. Когда все будет готово, вы сможете общаться с моделью прямо в Open WebUI. + + + ⚠️ Внимание: перед запуском модели убедитесь, что на вашем устройстве достаточно свободной оперативной памяти для ее поддержки. Попытка запустить модель, объем которой превышает доступную память, может привести к сбою устройства или зависанию устройства. Всегда проверяйте требования модели перед ее загрузкой или запуском. +developer: Open WebUI +website: https://openwebui.com/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/1977 +repo: https://github.com/open-webui/open-webui +support: https://github.com/open-webui/open-webui/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: + - ollama +releaseNotes: >- + Ключевые моменты этого выпуска включают в себя: + - Добавлен PaddleOCR-vl в качестве опции механизма извлечения содержимого документа. + - Добавлена поддержка Firecrawl v2 API с повышенной надежностью и логикой повторных попыток. + - Добавлена настраиваемая длительность напоминаний о событиях календаря. + - Добавлена поддержка пользовательского заголовка ключа API через переменную среды CUSTOM_API_KEY_HEADER. + - Добавлен значок +N на кнопку «Источники», когда доступно более трех источников. + - Улучшена производительность списка моделей за счет удаления больших данных изображений из ответов с разбивкой на страницы. + - Улучшена скорость загрузки страницы благодаря более ранней предварительной загрузке изображения-заставки. + - Исправлены прерванные вызовы инструмента MCP, которые больше не вызывали скачков процессора. + - Исправлены навыки из сохраненных чатов, которые теперь корректно вводятся в системную подсказку. + - Исправлены изображения Docker ARM64, которые ранее создавали поврежденные зависимости Python. + - Исправлены конфликты расширений редактора форматированного текста, приводившие к нестабильности редактора. + - Исправлен резерв обнаружения OAuth для лучшей совместимости с большим количеством серверов MCP. + - Исправлена отмененная генерация чата, теперь правильно очищаются восходящие соединения. + - Исправлены конечные точки изображения профиля модели для предотвращения уязвимостей обхода пути. + - Исправлено отображение сообщений в браузере для устранения артефактов при прокрутке в длинных разговорах. + - Обновления перевода для финского, корейского, португальского (Бразилия) и голландского языков. + + + Полные примечания к выпуску можно найти по адресу https://github.com/open-webui/open-webui/releases. +path: "" diff --git a/open-webui/docker-compose.yml b/open-webui/docker-compose.yml new file mode 100644 index 0000000..de58f90 --- /dev/null +++ b/open-webui/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: open-webui_web_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/open-webui/open-webui:v0.9.2@sha256:a7e4796ae894d1e2a0c1824860ade472f35c507608a01c3581377b5c19b0ed49 + volumes: + - ${APP_DATA_DIR}/data/open-webui:/app/backend/data + environment: + # Экспортировано из приложения ollama, которое в настоящее время является обязательной зависимостью. + # Это необходимо будет изменить, как только будут поддерживаться дополнительные зависимости. + OLLAMA_BASE_URL: $APP_OLLAMA_URL + restart: on-failure diff --git a/openclaw/data/linuxbrew/.gitkeep b/openclaw/data/linuxbrew/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/openclaw/dfwebos-app.yml b/openclaw/dfwebos-app.yml new file mode 100644 index 0000000..e8b64cf --- /dev/null +++ b/openclaw/dfwebos-app.yml @@ -0,0 +1,65 @@ +manifestVersion: 1.1 +id: openclaw +name: OpenClaw +tagline: ИИ, который действительно что-то делает +category: ai +version: "2026.4.14" +port: 18789 +path: "" +description: >- + Очищает ваш почтовый ящик, отправляет электронные письма, управляет календарем, регистрирует вас на рейсы. + Все из WhatsApp, Telegram или любого другого чат-приложения, которое вы уже используете. + + + Приложение OpenClaw на DFWebOS обеспечивает простую настройку. Просто введите свой ключ API и вперед. + Безголовый браузер настроен сразу из коробки, поэтому ваш новый помощник ИИ может немедленно взаимодействовать со всем Интернетом. + + + OpenClaw работает внутри песочницы приложения DFWebOS. Он имеет полную свободу установки программного обеспечения в своей собственной среде. + в то время как все ваши существующие приложения и данные остаются надежно защищенными. + + + OpenClaw также работает через прокси-сервер приложения DFWebOS, поэтому только вы можете безопасно получить доступ к своему экземпляру OpenClaw. + + + ## Что он делает + - **Работает локально** - Anthropic, OpenAI или локальные модели. По умолчанию конфиденциально — ваши данные остаются вашими. На твоем зонтике. + - **Любое приложение для чата**. Общайтесь с ним в WhatsApp, Telegram, Discord, Slack, Signal или iMessage. Работает в личных сообщениях и групповых чатах. + - **Постоянная память**. Запоминает вас и становится только вашим. Ваши предпочтения, ваш контекст, ваш ИИ. + - **Управление браузером**. Он может просматривать веб-страницы, заполнять формы и извлекать данные с любого сайта. + - **Доступ к изолированной системе**. Чтение и запись файлов, запуск команд оболочки, выполнение сценариев в собственной изолированной программной среде. Ваши существующие данные и приложения полностью защищены. + - **Навыки и плагины**. Расширьте возможности сообщества, используя навыки сообщества, или создайте свои собственные. Он даже может написать свой собственный. +developer: OpenClaw +website: https://openclaw.ai +dependencies: [] +repo: https://github.com/openclaw/openclaw +support: https://github.com/openclaw/openclaw/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Что нового в OpenClaw (v2026.4.12 → v2026.4.14): + - Добавлена поддержка прямой совместимости для GPT-5.4-pro в поставщике Кодекса. + - Темы форума Telegram теперь отображают удобочитаемые названия тем в контексте агента. + - Исправлен слишком ранний таймаут запуска Олламы из-за неправильных настроек таймаута потока. + - Исправлен поставщик Кодекса, удаляющий все пользовательские модели от каждого поставщика в models.json. + - Исправлено изображение и инструменты PDF, отклоняющие действительные модели зрения Олламы. + - Исправлены интерактивные триггеры Slack, которые потенциально могли обходить настроенные списки разрешенных. + - Исправлено разрешение локального пути вложения, которое не открывалось, а не закрывалось из-за ошибок. + - Модель ИИ заблокирована от включения опасных флагов безопасности с помощью инструмента исправления конфигурации. + - Исправлены запросы изображений Google Gemini, возвращающие 404 из-за неправильной обработки суффикса URL. + - Исправлена ошибка, из-за которой при завершении потоковой передачи Ollama сообщалось о поддельном количестве токенов, что приводило к преждевременному уплотнению. + - Исправлены поставщики встраивания памяти с префиксами, отличными от OpenAI, которые завершались сбоем из-за неизвестной ошибки поставщика. + - Исправлена политика SSRF браузера, блокирующая обычную навигацию по имени хоста и локальное управление CDP. + - Исправлено зависание Control интерфейс при вредоносной уценке из-за уязвимости ReDoS. + - Исправлены настройки режима наблюдателя, при которых политика запрета отправки блокировала обработку входящих сообщений. + - Исправлена запись зашифрованного мультимедиа в WhatsApp, вызывающая временные сбои при отправке изображений. + - Исправлена ошибка, из-за которой Heartbeat, cron и exec перезаписывали метаданные маршрутизации общего сеанса. + - Исправлен адаптер встраивания памяти Ollama и добавлены ключи кэша с поддержкой конечных точек.- Исправлены ответы голосовых заметок, которые автоматически исчезали из-за проблем с обработкой временных файлов. + - Исправлена ошибка, из-за которой голосовые заметки AAC не транскрибировались из-за неправильного сопоставления типов MIME. + - Исправлены встроенные прогоны GPT-5.4, не выполнявшие проверку запроса из-за неправильного сопоставления усилий по рассуждению. + - Множество дополнительных исправлений безопасности, стабильности и совместимости по каналам, агентам и поставщикам. + - И многое другое. Полная информация на https://github.com/openclaw/openclaw/releases. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/4649 diff --git a/openclaw/docker-compose.yml b/openclaw/docker-compose.yml new file mode 100644 index 0000000..8970f3b --- /dev/null +++ b/openclaw/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: openclaw_gateway_1 + APP_PORT: 18789 + + gateway: + image: ghcr.io/getumbrel/openclaw-umbrel:2026.4.14@sha256:90be9c46cae1902c520196677f127c773305ad80de523b077e7f75ee0fdb48e5 + user: "1000:1000" + init: true + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_DATA_DIR}/data/linuxbrew:/home/linuxbrew + environment: + APP_SEED: ${APP_SEED} diff --git a/openclaw/hooks/pre-start b/openclaw/hooks/pre-start new file mode 100755 index 0000000..0e13cfa --- /dev/null +++ b/openclaw/hooks/pre-start @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euo pipefail + +# OpenClaw использует профиль браузера на основе Chromium в данных приложения. +# После некорректного завершения работы или перезапуска приложения одноэлементные файлы Chromium могут остаться +# и заблокировать следующий запуск браузера. Мы удаляем эти устаревшие файлы здесь. + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="${APP_DIR}/data" + +FILES_TO_REMOVE=( + "${APP_DATA_DIR}/.openclaw/browser/openclaw/user-data/SingletonLock" + "${APP_DATA_DIR}/.openclaw/browser/openclaw/user-data/SingletonCookie" + "${APP_DATA_DIR}/.openclaw/browser/openclaw/user-data/SingletonSocket" + "${APP_DATA_DIR}/.openclaw/browser/openclaw/user-data/Default/SingletonLock" + "${APP_DATA_DIR}/.openclaw/browser/openclaw/user-data/Default/SingletonCookie" + "${APP_DATA_DIR}/.openclaw/browser/openclaw/user-data/Default/SingletonSocket" +) + +removed_count=0 + +for file in "${FILES_TO_REMOVE[@]}"; do + if [[ -e "${file}" || -L "${file}" ]]; then + rm -f "${file}" + echo "OpenClaw: Removed stale Chromium singleton file: ${file}" + ((removed_count+=1)) + fi +done + +if [[ "${removed_count}" -eq 0 ]]; then + echo "OpenClaw: No stale Chromium singleton files found." +fi + +exit 0 diff --git a/opencode/data/opencode/.gitkeep b/opencode/data/opencode/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/opencode/data/opencode/projects/.gitkeep b/opencode/data/opencode/projects/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/opencode/dfwebos-app.yml b/opencode/dfwebos-app.yml new file mode 100644 index 0000000..b99d343 --- /dev/null +++ b/opencode/dfwebos-app.yml @@ -0,0 +1,71 @@ +manifestVersion: 1 +id: opencode +name: OpenCode +tagline: Агент кодирования ИИ с открытым исходным кодом +category: ai +version: "1.14.28" +port: 4096 +description: >- + OpenCode — это агент кодирования ИИ с открытым исходным кодом, предназначенный для улучшения вашей разработки. + рабочий процесс в средах терминала, IDE и рабочего стола. Используйте его, чтобы поговорить о + код, генерировать изменения и выполнять сложные многосессионные рабочие процессы + ваши проекты. + + + Ключевые функции включают поддержку нескольких поставщиков моделей ИИ (включая Claude, + GPT-4 и локальные модели), интеллектуальные контекстно-зависимые предложения кода через LSP. + интеграция и способность выполнять сложные задачи рефакторинга. OpenCode может + помочь вам написать новые функции, отладить проблемы, выполнить рефакторинг кода и объяснить сложные + кодовые базы на естественном языке. + + + Благодаря гибкой архитектуре вы можете использовать предпочитаемые модели ИИ, одновременно + сохранение полного контроля над вашим кодом и данными. Агент понимает ваше + структуру проекта, зависимости и шаблоны кодирования, чтобы обеспечить актуальные и + действенные предложения. +developer: Anomaly +website: https://opencode.ai/ +repo: https://github.com/anomalyco/opencode +support: https://github.com/anomalyco/opencode/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + В этом выпуске представлены новые функции, исправления и улучшения. + + + Основные улучшения: + - Исправлена проблема с сбоем обновления открытого кода при установке булочек. + - Добавлена настраиваемая оболочка по умолчанию для терминалов и команд оболочки агента. + - Исправлен анализ конфигурации для сохранения порядка правил разрешений. + - Исправлена обработка вывода рассуждений OpenRouter DeepSeek. + - Добавлена поддержка выбора редактора Zed для контекста редактора. + - Исправлена конфигурация разрешений, сохраняющая порядок правил с полным IntelliSense для ключей разрешений инструмента. + - Запросы на разрешение LSP теперь включают такие сведения о запросе, как операция, файл и положение курсора. + — Добавлена поддержка Roslyn LSP для файлов сценариев Razor, .cshtml и C#. + - Исправлены сообщения помощника DeepSeek, поэтому рассуждения всегда включены. + - Добавлены экспериментальные конечные точки HTTP API для вывода списка файлов, чтения содержимого файлов и проверки статуса файла проекта. + — Соблюдаются пользовательские настройки реестра .npmrc при проверке версий пакетов. + + + Улучшения TUI: + - Добавлена поддержка выбора редактора Zed для контекста редактора. + - Показывать подсказку /connect, если ни одна модель не настроена. + - Восстановлен тайм-аут всплывающего уведомления по умолчанию, если не указана пользовательская продолжительность. + - Скрытые проверки подключения к провайдеру до завершения регистрации. + + + Улучшения рабочего стола: + - Добавлены настраиваемые настройки оболочки по умолчанию. + - Исправлены представления сеансов, которые не зависали в устаревшем состоянии при переключении между сеансами. + + + Полные примечания к выпуску можно найти по адресу https://github.com/anomalyco/opencode/releases. +dependencies: [] +submitter: besoeasy +submission: https://github.com/getumbrel/dfwebos-apps/pull/4718 +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/opencode/docker-compose.yml b/opencode/docker-compose.yml new file mode 100644 index 0000000..f258d1a --- /dev/null +++ b/opencode/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: opencode_app_1 + APP_PORT: 4096 + + app: + image: ghcr.io/anomalyco/opencode:1.14.28@sha256:f4c8e5149659dab845efaf3ea3a1b1bc0dd562ab9e887bf13185cb46ec54ca5f + command: ["web", "--hostname", "0.0.0.0", "--port", "4096"] + restart: on-failure + user: "1000:1000" + environment: + HOME: /home/opencode + volumes: + - ${APP_DATA_DIR}/data/opencode:/home/opencode/ diff --git a/openhands/data/docker/.gitkeep b/openhands/data/docker/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/openhands/data/docker/.gitkeep @@ -0,0 +1 @@ + diff --git a/openhands/data/openhands/.gitkeep b/openhands/data/openhands/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/openhands/data/openhands/.gitkeep @@ -0,0 +1 @@ + diff --git a/openhands/data/workspace/.gitkeep b/openhands/data/workspace/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/openhands/data/workspace/.gitkeep @@ -0,0 +1 @@ + diff --git a/openhands/dfwebos-app.yml b/openhands/dfwebos-app.yml new file mode 100644 index 0000000..94d5055 --- /dev/null +++ b/openhands/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: openhands +name: OpenHands +tagline: Локальный агент ИИ для написания и улучшения кода. +category: ai +version: "1.6.0" +port: 3993 +description: >- + 👐 OpenHands — это первый локальный помощник разработки ИИ, который помогает разработчикам автоматизировать повторяющиеся задачи программирования и сконцентрироваться на более значимой работе. Он полностью работает на вашем собственном сервере DFWebOS и уважает вашу конфиденциальность, сохраняя все операции в автономном режиме и под вашим контролем. OpenHands самостоятельно понимает, редактирует и улучшает код, используя интеллектуальные программные агенты, которые анализируют ваши репозитории, выполняют команды, работают с файлами и следуют инструкциям, написанным на естественном языке. + + + Имея полный доступ к вашей локальной базе кода и инструментам разработки, OpenHands становится мощным помощником в ваших программных проектах. Если вы хотите провести рефакторинг существующего кода, исправить ошибки или разработать новые функции, помощник может предложить и применить изменения, всегда держа вас в курсе. Его современный веб-интерфейс обеспечивает удобство работы со встроенным редактором кода и терминалом, которые работают непосредственно на вашем оборудовании без каких-либо внешних зависимостей. + + + Внедрение OpenHands в DFWebOS дает разработчикам полностью автономного помощника ИИ, который не зависит от облачных сервисов. Это отличное решение для людей, заботящихся о конфиденциальности, разработчиков-любителей и профессионалов, которые хотят изучить будущее разработки программного обеспечения с помощью ИИ. + + + ⚠️ OpenHands необходимо загрузить изображение при запуске первого сеанса, это занимает несколько минут. Пожалуйста, будьте терпеливы. +developer: All Hands AI, Inc +website: https://www.all-hands.dev/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2527 +repo: https://github.com/All-Hands-AI/OpenHands +support: https://github.com/All-Hands-AI/OpenHands/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + В этом выпуске появилось несколько новых функций и улучшений: + - Добавлена поддержка хуков + - Добавлен каталанский язык + - Добавлена команда /clear для создания нового разговора, который наследует текущую песочницу и конфигурацию при сбросе истории чата. + - Добавлена кнопка копирования в блоки кода. + - Добавлена поддержка включения/отключения глобальных навыков по умолчанию. + - В меню команд косой черты добавлена команда /new. + - Исправлена проблема, из-за которой разговоры иногда не сохранялись. + - Исправлена ошибка в Экспорте беседы, из-за которой события дублировались. + - Множество исправлений уязвимостей безопасности посредством обновлений зависимостей. + + + Полные примечания к выпуску можно найти по адресу https://github.com/All-Hands-ИИ/OpenHands/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/openhands/docker-compose.yml b/openhands/docker-compose.yml new file mode 100644 index 0000000..dd79aa5 --- /dev/null +++ b/openhands/docker-compose.yml @@ -0,0 +1,51 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: openhands_web_1 + APP_PORT: 3000 + + docker: + image: docker:28.0.4-dind@sha256:ddb0033088b4fab74881ade341a582e3c6c8021b82377703ba1a6106bd3ded44 + privileged: true + network_mode: host + stop_grace_period: 1m + restart: on-failure + environment: + DOCKER_ENSURE_BRIDGE: "dind0:10.32.0.1/16" + entrypoint: /entrypoint.sh + command: > + dockerd + --bridge dind0 + --data-root /data/data + --exec-root /data/exec + --host unix:///data/docker.sock + --pidfile /data/docker.pid + volumes: + - ${APP_DATA_DIR}/entrypoint.sh:/entrypoint.sh + - ${APP_DATA_DIR}/data/docker:/data + + web: + image: ghcr.io/openhands/openhands:1.6.0@sha256:5c0dc26f467bf8e47a6e76308edb7a30af4084b17e23a3460b5467008b12111b + stdin_open: true + tty: true + pull_policy: always + healthcheck: + test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/3000' || exit 1 + interval: 10s + timeout: 5s + retries: 3 + start_period: 90s + environment: + - SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.openhands.dev/openhands/runtime:0.62-nikolaik@sha256:95fc4d8e753f41d34cd564e78d3d64217c5d22296ea1cb7bf92614c8198de8f5 + - WORKSPACE_MOUNT_PATH=/opt/workspace_base + - LOG_ALL_EVENTS=true + volumes: + - ${APP_DATA_DIR}/data/docker:/var/run:rw + - ${APP_DATA_DIR}/data/openhands:/.openhands-state:rw + - ${APP_DATA_DIR}/data/workspace:/opt/workspace_base:rw + extra_hosts: + - host.docker.internal:host-gateway + - ${APP_DOMAIN}:host-gateway + restart: on-failure diff --git a/openhands/entrypoint.sh b/openhands/entrypoint.sh new file mode 100755 index 0000000..71d910f --- /dev/null +++ b/openhands/entrypoint.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# Этот хак можно удалить, если https://github.com/docker-library/docker/pull/444 будет объединен. + +# Удалите pid-файл docker, если он существует, чтобы обеспечить запуск Docker после неудачного завершения работы. +pidfile="/var/run/docker.pid" +if [[ -f "${pidfile}" ]] +then + rm -f "${pidfile}" +fi + +# Используйте nftables в качестве бэкэнда для iptables +for command in iptables iptables-restore iptables-restore-translate iptables-save iptables-translate +do + ln -sf /sbin/xtables-nft-multi /sbin/$command +done + +# Убедитесь, что мост с указанным именем существует. +ensure_bridge_exists() { + local name="${1}" + local ip_range="${2}" + + # Проверьте, существует ли мост уже + if ip link show "${name}" &>/dev/null + then + echo "Bridge '${name}' already exists. Skipping creation." + ip addr show "${name}" + return + fi + + echo "Bridge '${name}' does not exist. Creating..." + ip link add "${name}" type bridge + ip addr add "${ip_range}" dev "${name}" + ip link set "${name}" up + + echo "Bridge '${name}' is now up with IP range '${ip_range}'." + ip addr show "${name}" +} + +if [[ "${DOCKER_ENSURE_BRIDGE}" != "" ]] +then + bridge="${DOCKER_ENSURE_BRIDGE%%:*}" + ip_range="${DOCKER_ENSURE_BRIDGE#*:}" + ensure_bridge_exists "${bridge}" "${ip_range}" +fi + +exec dockerd-entrypoint.sh $@ diff --git a/openreader/data/docstore/.gitkeep b/openreader/data/docstore/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/openreader/data/docstore/.gitkeep @@ -0,0 +1 @@ + diff --git a/openreader/dfwebos-app.yml b/openreader/dfwebos-app.yml new file mode 100644 index 0000000..51fcb63 --- /dev/null +++ b/openreader/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: openreader +name: OpenReader +tagline: Программа для чтения документов с возможностью преобразования текста в речь +category: ai +version: "2.2.0" +port: 3391 +description: >- + OpenReader WebUI — это веб-программа для чтения документов, которая объединяет функцию преобразования текста в речь (TTS), позволяя пользователям прослушивать текст из различных форматов документов, включая PDF и EPUB. Разработанный для повышения доступности и удобства чтения, он обеспечивает синхронизированное выделение текста, гарантируя, что прочитанная в данный момент часть документа будет визуально выделена, когда речевой механизм озвучивает содержимое. Это делает его особенно полезным для людей с нарушениями зрения, трудностями с чтением или для тех, кто просто предпочитает слуховой стиль обучения. + + + Приложение создано с учетом совместимости и поддерживает любой OpenИИ-совместимый бэкэнд TTS, такой как Kokoro-FastAPI и Orpheus-FastAPI. Это позволяет пользователям выбирать предпочтительный механизм синтеза речи, обеспечивая гибкость в выборе голоса, точность произношения и общее качество чтения. Используя эти серверные части, OpenReader WebUI может генерировать естественно звучащую речь, делая чтение длинных форм более увлекательным и снижая когнитивную нагрузку, связанную с традиционным чтением. + + + Пользовательский интерфейс интуитивно понятен и легок, обеспечивая удобство работы без лишней сложности. Пользователи могут загружать документы непосредственно через веб-интерфейс, контролировать скорость воспроизведения, приостанавливать и возобновлять повествование, а также эффективно перемещаться по документу. Программное обеспечение предназначено для разнообразной аудитории, включая студентов, специалистов и людей с ограниченными возможностями, обеспечивая более доступность материалов для чтения для всех. + + + Кроме того, OpenReader WebUI доступен как проект с открытым исходным кодом, что позволяет разработчикам вносить свой вклад в его улучшение и расширять его возможности. Публичная демо-версия доступна в Интернете, что позволяет пользователям тестировать ее функции без необходимости установки, что упрощает оценку ее функциональности перед настройкой локального экземпляра. OpenReader WebUI, уделяя особое внимание удобству использования и доступности, представляет собой современный подход к чтению документов, устраняя разрыв между текстом и речью в удобной для пользователя форме. + + + ⚠️ Это приложение работает только в браузерах на базе Chromium (например, Chrome, Edge, Brave). +developer: Richard Roberson +website: https://openreader.richardr.dev/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2499 +repo: https://github.com/richardr1126/OpenReader-WebUI +support: https://github.com/richardr1126/OpenReader-WebUI/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Некоторые из ключевых моментов этого выпуска включают в себя: + - Добавлен поставщик репликации TTS с поддержкой пользовательских моделей репликации. + - Улучшены внутренние функции генерации TTS с лучшим разрешением голоса и проверкой настроек. + - Улучшено управление воспроизведением TTS с более надежной обработкой паузы и возобновления. + - Обновлена формулировка библиотеки документов с «Локальные документы» на «Ваши документы» для более четкой навигации. + + + Полные примечания к выпуску можно найти по адресу https://github.com/richardr1126/openreader/releases. +dependencies: + - kokoro +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/openreader/docker-compose.yml b/openreader/docker-compose.yml new file mode 100644 index 0000000..88a3eaf --- /dev/null +++ b/openreader/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: openreader_web_1 + APP_PORT: 3003 + + web: + image: ghcr.io/richardr1126/openreader-webui:2.2.0@sha256:245e6b8914cff79cc4c1cea5251446b18199fcabb6e865f543f186a44f071baa + user: "1000:1000" + environment: + - API_BASE=http://kokoro_web_1:8880/v1 #Set the TTS API_BASE URL and/or API_KEY as the default for all devices. These values can also be overridden in the UI. + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/docstore:/app/docstore diff --git a/openresty-manager/data/acme/.gitkeep b/openresty-manager/data/acme/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/openresty-manager/data/acme/.gitkeep @@ -0,0 +1 @@ + diff --git a/openresty-manager/data/conf/.gitkeep b/openresty-manager/data/conf/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/openresty-manager/data/conf/.gitkeep @@ -0,0 +1 @@ + diff --git a/openresty-manager/data/data/.gitkeep b/openresty-manager/data/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/openresty-manager/data/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/openresty-manager/data/logs/.gitkeep b/openresty-manager/data/logs/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/openresty-manager/data/logs/.gitkeep @@ -0,0 +1 @@ + diff --git a/openresty-manager/dfwebos-app.yml b/openresty-manager/dfwebos-app.yml new file mode 100644 index 0000000..8cc6efe --- /dev/null +++ b/openresty-manager/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1.1 +id: openresty-manager +name: OpenResty Manager +tagline: Легко и безопасно раскрывайте свои услуги +category: networking +version: "2.4.2" +port: 34567 +description: >- + Легко и безопасно размещайте свои приложения в Интернете. + + + ⚠️ Будьте осторожны, публикуя приложения в общедоступном Интернете. Убедитесь, что они имеют надлежащую безопасность, например защиту входа в систему, и избегайте раскрытия конфиденциальных приложений без надлежащих мер безопасности. + + + 🔧 OpenResty Manager использует порт 3080 для HTTP (незащищенного) трафика и порт 3443 для HTTPS (защищенного) трафика. + Чтобы сделать ваши приложения доступными из общедоступного Интернета, вам необходимо настроить переадресацию портов на маршрутизаторе. + Перенаправьте внешний порт 80 (HTTP) на внутренний порт 3080 и внешний порт 443 (HTTPS) на внутренний порт 3443. + + + 🔍Особенности: + + - Обеспечьте красивое, мощное и простое в использовании веб-управление интерфейс. + - Бесплатная поддержка SSL как для HTTP-01, так и для DNS-01 или предоставление собственных сертификатов SSL. + - Мощные функции безопасности, такие как контроль доступа, защита от атак типа «отказ в обслуживании», аутентификация личности. + - Упрощение управления хостом, включая удобный терминал интерфейс и файловый менеджер для пользователей. + - Поддержка магазина приложений, что значительно снижает сложность создания веб-сайтов и управления контейнерами. +developer: UUSEC +website: https://om.uusec.com/ +submitter: UUSEC +submission: https://github.com/getumbrel/dfwebos-apps/pull/2779 +repo: https://github.com/Safe3/openresty-manager +support: https://github.com/Safe3/openresty-manager/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Новые функции и улучшения в этом выпуске: + - Разрешено различным пользователям управлять только своими сайтами. + - Исправлены проблемы со сбоями проверки поисковыми системами и автоматическим продлением бесплатных сертификатов. + - Исправлена проблема, из-за которой возникали сбои инициализации SQL. + + + Полные примечания к выпуску: https://github.com/Safe3/openresty-manager/releases. +dependencies: [] +path: "" +defaultUsername: "admin" +defaultPassword: "#Passw0rd" diff --git a/openresty-manager/docker-compose.yml b/openresty-manager/docker-compose.yml new file mode 100644 index 0000000..9dd81f8 --- /dev/null +++ b/openresty-manager/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: openresty-manager_web_1 + APP_PORT: 34567 + + web: + image: uusec/openresty-manager:2.4.2@sha256:008cdf48b77961e04120863991c83fb6fdcfe6b19057281a4e411f283502b26b + hostname: openresty-manager_web_1 + restart: on-failure + ports: + - 3080:80 + - 3443:443 + volumes: + - /etc/localtime:/etc/localtime:ro + - ${APP_DATA_DIR}/data/acme:/opt/om/acme + - ${APP_DATA_DIR}/data/data:/opt/om/data + - ${APP_DATA_DIR}/data/conf:/opt/om/nginx/conf + - ${APP_DATA_DIR}/data/logs:/opt/om/nginx/logs + environment: + - OM_USE_HTTPS=no + - NGINX_RESOLVER=resolver 127.0.0.11 valid=30s ipv6=off local=on; + - PUID=1000 + - PGID=1000 diff --git a/openresty-manager/hooks/pre-start b/openresty-manager/hooks/pre-start new file mode 100755 index 0000000..0174cb2 --- /dev/null +++ b/openresty-manager/hooks/pre-start @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" + +# Убедитесь, что существует новый каталог журналов для приложений, обновляющихся из старой версии, в которой его не было. +LOG_DATA_DIR="${APP_DATA_DIR}/data/logs" +[ ! -d "${LOG_DATA_DIR}" ] && mkdir -p "${LOG_DATA_DIR}" && chown 1000:1000 "${LOG_DATA_DIR}" + +exit 0 diff --git a/ordinals/data/ord/.gitkeep b/ordinals/data/ord/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ordinals/dfwebos-app.yml b/ordinals/dfwebos-app.yml new file mode 100644 index 0000000..4061938 --- /dev/null +++ b/ordinals/dfwebos-app.yml @@ -0,0 +1,41 @@ +manifestVersion: 1 +id: ordinals +category: bitcoin +name: Ordinals +version: "0.27.1" +tagline: Запустите свой собственный индекс, обозреватель блоков и кошелек командной строки для порядковых номеров. +description: > + Запустите свой собственный индекс, обозреватель блоков и кошелек командной строки для порядковых номеров. Приложение автоматически подключается к вашему узлу Bitcoin на DFWebOS для безопасной работы. Просто установите приложение и подождите, пока Порядковые номера проиндексируют надписи и руны. + + + Используйте проводник блоков для просмотра порядковых надписей. Поиск блоков, транзакций, выходов и отдельных сатоши. + + + Продвинутые пользователи могут использовать командную строку для создания кошельков, создания надписей и управления ими и т. д. Будущее обновление DFWebOS позволит вам запускать команды из Терминала непосредственно в интерфейсе DFWebOS! + + + Отказ от ответственности: приложение Ordinals не контролирует, не фильтрует и не модерирует контент, размещенный в блокчейне Bitcoin. Следовательно, при использовании приложения вы можете столкнуться с NSFW (небезопасно для работы), нежелательными или незаконными материалами. +releaseNotes: >- + ⚠️ Это обновление с 0.23.3 до 0.27.1 требует переиндексации ord с нуля из-за изменений схемы базы данных. Переиндексация произойдет автоматически при обновлении приложения и может занять несколько дней в зависимости от вашего оборудования. + + + ⏳ Если ord в настоящее время индексируется, перед обновлением может потребоваться несколько минут, чтобы безопасно завершить работу. Пожалуйста, будьте терпеливы во время этого процесса. + + + Полные примечания к выпуску можно найти по адресу https://github.com/ordinals/ord/releases. +developer: Casey Rodarmor +website: https://ordinals.com/ +dependencies: + - bitcoin +repo: https://github.com/casey/ord +support: https://discord.gg/ordinals +port: 4000 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/458 \ No newline at end of file diff --git a/ordinals/docker-compose.yml b/ordinals/docker-compose.yml new file mode 100644 index 0000000..44b89ab --- /dev/null +++ b/ordinals/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: ordinals_ord_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + ord: + image: nmfretz/ord:0.27.1@sha256:241db02d32ab66012724a680b471460ec4d87076aba102013371223d143ec159 + # Это нужно запускать от имени root + # user: "1000:1000" + restart: on-failure + stop_grace_period: 15m30s + command: "ord server --http" + volumes: + - ${APP_DATA_DIR}/data/ord:/var/lib/ord + - ${APP_BITCOIN_DATA_DIR}:/var/lib/bitcoind:ro + environment: + ORD_DATA_DIR: "/var/lib/ord" + ORD_BITCOIN_DATA_DIR: "/var/lib/bitcoind" + ORD_COOKIE_FILE: "/var/lib/bitcoind/.cookie" + ORD_BITCOIN_RPC_USERNAME: "${APP_BITCOIN_RPC_USER}" + ORD_BITCOIN_RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}" + ORD_BITCOIN_RPC_URL: "${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}" + ORD_CHAIN: "${APP_BITCOIN_NETWORK}" + ORD_INDEX_RUNES: "true" + # TODO: consider index-sats diff --git a/ordinals/hooks/pre-start b/ordinals/hooks/pre-start new file mode 100755 index 0000000..aa77b28 --- /dev/null +++ b/ordinals/hooks/pre-start @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../data)" +ORDINALS_DATA_DIR="${APP_DATA_DIR}/ord" +DESIRED_OWNER="1000:1000" + +set_correct_permissions() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown -R "${DESIRED_OWNER}" "${path}" + fi + fi +} + +# обрабатывать создание правильного каталога данных заказа для версий до 0.15.0 +if [[ -f "${APP_DATA_DIR}/index.redb" ]]; then + rm -f "${APP_DATA_DIR}/index.redb" + mkdir -p "${ORDINALS_DATA_DIR}" + # установите правильные разрешения как для данных, так и для ord + set_correct_permissions "${APP_DATA_DIR}" +fi + +# переиндексировать ord при обновлении основной версии (до сих пор в истории ord это требовалось при каждом обновлении основной версии) +# Примечание по обновлению 0.23: обновление с 0.22.x до 0.23.x не требует переиндексации, см. https://x.com/rodarmor/status/1909286899275251887 +# Примечание по обновлению 0.27.1: обновление с 0.23.x до 0.27.1 требует повторной индексации (версия схемы 30 -> 34) +# для новых установок этот файл будет безвредно создан +if [[ ! -f "${APP_DATA_DIR}/AT_LEAST_0-27-1" ]]; then + # удалить индексную базу данных для всех биткойн-сетей + for file in "${ORDINALS_DATA_DIR}/index.redb" "${ORDINALS_DATA_DIR}/testnet3/index.redb" "${ORDINALS_DATA_DIR}/testnet4/index.redb" "${ORDINALS_DATA_DIR}/regtest/index.redb" "${ORDINALS_DATA_DIR}/signet/index.redb"; do + if [[ -f "${file}" ]]; then + rm -f "${file}" + fi + done + touch "${APP_DATA_DIR}/AT_LEAST_0-27-1" +fi + +# перенести все файлы базы данных кошелька в ord/wallets, ord/testnet3/wallets, ord/regtest/wallets и ord/signet/wallets для версий до 0.18.2: https://github.com/ordinals/ord/releases/tag/0.18.2 +# безымянный кошелек по умолчанию из `ord wallet create` называется ord.redb, но пользователи могут создавать именованные кошельки как .redb +# мы предполагаем, что все файлы .redb, кроме index.redb, являются файлами базы данных кошелька. +# для установок после 0.18.2 будет безвредно создан файл AT_LEAST_0-18-2 + +if [[ ! -f "${APP_DATA_DIR}/AT_LEAST_0-18-2" ]]; then + echo "AT_LEAST_0-18-2 not found, proceeding with wallet database migration if necessary..." + # объявить сетевые каталоги биткойнов + declare -a dirs=("" "/testnet3" "/regtest" "/signet") + for dir in "${dirs[@]}"; do + dir_path="${ORDINALS_DATA_DIR}${dir}" + echo "Checking directory: ${dir_path}" + if [[ -d "${dir_path}" ]]; then + echo "${dir_path} exists." + files_to_move=() # an array to store wallet database files to migrate + + # Перебрать файлы .redb, которые не являются index.redb. + for file in "${dir_path}"/*.redb; do + if [[ -f "${file}" && "$(basename "${file}")" != "index.redb" ]]; then + files_to_move+=("${file}") + echo "Adding ${file} to move list." + fi + done + + # Мы создаем каталог кошельков только в том случае, если есть файлы для перемещения. Это имитирует поведение ord 0.18.2, который создает каталог кошельков только при создании базы данных кошельков. + if [[ ${#files_to_move[@]} -gt 0 ]]; then + mkdir -p "${dir_path}/wallets" + echo "Creating wallets directory in ${dir_path}/wallets" + for file in "${files_to_move[@]}"; do + echo "Moving ${file} to ${dir_path}/wallets/" + mv "${file}" "${dir_path}/wallets/" + done + else + echo "No wallet files to move in ${dir_path}." + fi + else + echo "${dir_path} does not exist, skipping." + fi + done + touch "${APP_DATA_DIR}/AT_LEAST_0-18-2" + echo "Wallet database migration complete, flag file created." +else + echo "Migration flag file already exists, skipping wallet database migration." +fi + diff --git a/outline/data/app/.gitkeep b/outline/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/outline/data/config/config.yaml.template b/outline/data/config/config.yaml.template new file mode 100644 index 0000000..ae84e42 --- /dev/null +++ b/outline/data/config/config.yaml.template @@ -0,0 +1,27 @@ +issuer: http://${DEVICE_DOMAIN_NAME}:8943/dex + +storage: + type: sqlite3 + config: + file: /var/dex/dex.db + +web: + http: 0.0.0.0:5556 + +staticClients: + - id: outline + redirectURIs: + - 'http://${DEVICE_DOMAIN_NAME}:${APP_OUTLINE_PORT}/auth/oidc.callback' + name: 'Outline' + secret: ${APP_SEED} + +oauth2: + skipApprovalScreen: true + +enablePasswordDB: true + +staticPasswords: + - email: "dfwebos@dfwebos.local" + hash: "${PASSWORD_HASH}" + username: "dfwebos" + userID: "08a8684b-db88-4b73-90a9-3cd1661f5466" diff --git a/outline/data/db/.gitkeep b/outline/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/outline/data/dex/.gitkeep b/outline/data/dex/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/outline/data/redis/.gitkeep b/outline/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/outline/dfwebos-app.yml b/outline/dfwebos-app.yml new file mode 100644 index 0000000..5c0d843 --- /dev/null +++ b/outline/dfwebos-app.yml @@ -0,0 +1,67 @@ +manifestVersion: 1.1 +id: outline +name: Outline +tagline: Современная командная база знаний и вики. +category: files +version: "1.7.0" +port: 8942 +description: >- + Outline — это современная, быстрая и удобная для совместной работы база знаний для растущих команд. Он объединяет лучшее из вики, документов и задач в один красивый интерфейс, который действительно захочет использовать ваша команда. + + + Outline помогает командам систематизировать свои знания и совместно работать над документами в режиме реального времени. Благодаря чистому, интуитивно понятному интерфейсу, вдохновленному такими инструментами, как Notion, можно легко создавать, редактировать и делиться документацией. Независимо от того, создаете ли вы вики-сайт компании, документируете процессы или управляете заметками по проекту, Outline предоставляет мощное, но простое решение. + + + Ключевые функции включают совместное редактирование в режиме реального времени, красивый редактор на основе уценки, мощный поиск по всем вашим документам и гибкую организацию с помощью вложенных документов и коллекций. Платформа поддерживает встраивание мультимедийных материалов, подсветку синтаксиса кода и легко интегрируется с существующим рабочим процессом. + + + Outline разработан с учетом конфиденциальности и безопасности. Все данные хранятся локально на вашем сервере, что дает вам полный контроль над базой знаний вашей команды. Платформа включает детальные разрешения, позволяющие вам контролировать, кто может просматривать, редактировать или делиться определенными документами и коллекциями. + + + Эта установка DFWebOS включает Dex в качестве облегченного поставщика аутентификации OIDC, что позволяет легко начать работу без сложной настройки аутентификации. + + + Идеально подходит для команд любого размера, от небольших стартапов до крупных организаций. Outline масштабируется в соответствии с вашими потребностями, сохраняя при этом скорость и простоту. +backupIgnore: + - data/redis/* +developer: Outline +website: https://www.getoutline.com/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/4129 +repo: https://github.com/outline/outline +support: https://github.com/outline/outline/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Новые функции и улучшения в этом выпуске: + - Добавлена подписка по электронной почте на общедоступные документы, чтобы читатели могли следить за обновлениями с помощью уведомлений о различиях. + - Введена переработанная история документов с параллельным сравнением любых двух редакций. + - Добавлена полная поддержка раскладки справа налево (RTL) для таких языков, как иврит и арабский. + - Добавлен поиск в панели команд в общедоступных папках с быстрым доступом к недавно просмотренным документам. + - Блоки длинного кода теперь автоматически сворачиваются, чтобы документы было легче сканировать. + - Ссылки теперь показывают предварительный просмотр при наведении курсора на общие документы. + - Добавлен доступ с клавиатуры к редактированию диаграммы Русалки. + - Добавлены контекстные меню для документирования элементов навигации. + - Сочетания клавиш теперь отображаются в меню, где это возможно. + - При копировании документа теперь сохраняется свойство полной ширины. + - Разрешена замена пользовательских изображений эмодзи. + - Добавлен предварительный просмотр шестнадцатеричных образцов цвета. + - Разрешенные протоколы geo:, Maps: и Magnetic: Link. + - Акции теперь должны создаваться явно; они больше не создаются автоматически + - Расширенные возможности MCP, включая поддержку исправлений, создание вложений и более подробные ответы. + - Исправлена проверка загрузки файлов для локального хранилища. + - Исправлены ошибки входа в систему и дублирование регистрации ключа. + - Исправлены проблемы с макетом слайдов и навигацией в режиме презентации. + - Исправлен триггер упоминания после символов CJK и во время составления IME. + - Исправлена невозможность поиска черновиков без коллекции. + - Различные улучшения доступности, мобильных устройств и производительности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/outline/outline. +dependencies: [] +path: "" +defaultUsername: "dfwebos@dfwebos.local" +deterministicPassword: true diff --git a/outline/docker-compose.yml b/outline/docker-compose.yml new file mode 100644 index 0000000..42fa038 --- /dev/null +++ b/outline/docker-compose.yml @@ -0,0 +1,80 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: outline_web_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + web: + image: outlinewiki/outline:1.7.0@sha256:b13ccd15653513a79eb66283bfa91287f5e3d0944d8cb056d5288b8565992de5 + user: "1000:1000" + restart: on-failure + depends_on: + - db + - redis + - dex + environment: + NODE_ENV: production + SECRET_KEY: ${APP_SEED} + UTILS_SECRET: ${APP_SEED} + DATABASE_URL: postgres://outline:outlinepass@outline_db_1:5432/outline + PGSSLMODE: disable + REDIS_URL: redis://outline_redis_1:6379 + URL: "http://${DEVICE_DOMAIN_NAME}:${APP_OUTLINE_PORT}" + PORT: 3000 + FILE_STORAGE: local + FILE_STORAGE_LOCAL_ROOT_DIR: /var/lib/outline/data + FILE_STORAGE_UPLOAD_MAX_SIZE: 262144000 + OIDC_CLIENT_ID: outline + OIDC_CLIENT_SECRET: ${APP_SEED} + OIDC_AUTH_URI: "http://${DEVICE_DOMAIN_NAME}:8943/dex/auth" + OIDC_TOKEN_URI: "http://outline_dex_1:5556/dex/token" + OIDC_USERINFO_URI: "http://outline_dex_1:5556/dex/userinfo" + OIDC_USERNAME_CLAIM: preferred_username + OIDC_DISPLAY_NAME: Dex + OIDC_SCOPES: "openid profile email" + env_file: + - ${APP_DATA_DIR}/settings.env + volumes: + - ${APP_DATA_DIR}/data/app:/var/lib/outline/data + + db: + image: postgres:17.9-alpine@sha256:778d0b486d6daa02b77434d0358ec57a1b21fd8b6d22ac2eef56a33e816928f6 + user: "1000:1000" + restart: on-failure + environment: + POSTGRES_USER: outline + POSTGRES_PASSWORD: outlinepass + POSTGRES_DB: outline + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-d", "outline", "-U", "outline"] + interval: 30s + timeout: 20s + retries: 3 + + redis: + image: redis:8.4.2-alpine@sha256:812a2556fa70318d980d248a65f62a3bdb72c0882e90d96e50d5c8cf2bed438d + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 30s + retries: 3 + + dex: + image: dexidp/dex:v2.45.1@sha256:8499afd690c437f52301efd2b05b2455da5bd2dfc20332cd697dc9937f808462 + user: "1000:1000" + restart: on-failure + ports: + - 8943:5556 + volumes: + - ${APP_DATA_DIR}/data/config:/etc/dex + - ${APP_DATA_DIR}/data/dex:/var/dex + command: ["dex", "serve", "/etc/dex/config.yaml"] diff --git a/outline/exports.sh b/outline/exports.sh new file mode 100644 index 0000000..731b56f --- /dev/null +++ b/outline/exports.sh @@ -0,0 +1 @@ +export APP_OUTLINE_PORT="8942" diff --git a/outline/hooks/pre-start b/outline/hooks/pre-start new file mode 100755 index 0000000..a3404e7 --- /dev/null +++ b/outline/hooks/pre-start @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Создать конфигурацию Dex из шаблона +APP_OUTLINE_PORT="${APP_OUTLINE_PORT:-8942}" + +# Сгенерировать хэш bcrypt для APP_PASSWORD +# Использование htpasswd из apache2-utils (доступно в большинстве систем) +PASSWORD_HASH=$(docker run --rm alpine:latest sh -c "apk add --no-cache apache2-utils > /dev/null 2>&1 && htpasswd -bnBC 10 '' '${APP_PASSWORD}' | tr -d ':\n'") + +cat "${DFWEBOS_ROOT}/app-data/${APP_ID}/data/config/config.yaml.template" \ + | sed "s/\${DEVICE_DOMAIN_NAME}/${DEVICE_DOMAIN_NAME}/g" \ + | sed "s/\${APP_OUTLINE_PORT}/${APP_OUTLINE_PORT}/g" \ + | sed "s|\${PASSWORD_HASH}|${PASSWORD_HASH}|g" \ + | sed "s|\${APP_SEED}|${APP_SEED}|g" \ + > "${DFWEBOS_ROOT}/app-data/${APP_ID}/data/config/config.yaml" diff --git a/outline/settings.env b/outline/settings.env new file mode 100644 index 0000000..218dbba --- /dev/null +++ b/outline/settings.env @@ -0,0 +1,6 @@ +FORCE_HTTPS="false" +ENABLE_UPDATES="true" +WEB_CONCURRENCY=1 +LOG_LEVEL=info + +# больше переменных env можно найти здесь: https://github.com/outline/outline/blob/main/.env.sample diff --git a/overseerr/data/config/.gitkeep b/overseerr/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/overseerr/dfwebos-app.yml b/overseerr/dfwebos-app.yml new file mode 100644 index 0000000..1f0a788 --- /dev/null +++ b/overseerr/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: overseerr +category: media +name: Overseerr +version: "1.35.0" +tagline: Прекрасное медиа-открытие +description: >- + Overseerr — это инструмент управления запросами и обнаружения мультимедиа, созданный для работы с существующей экосистемой Plex. + + + Overserr регулярно сканирует ваши библиотеки Plex, чтобы знать, какие элементы уже доступны на вашем сервере. + Он также интегрируется с популярными приложениями DVR Radarr и Sonarr и поддерживает мониторинг активности внутри самого Overseerr. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Во время первоначальной настройки вам нужно будет ввести IP-адрес вашего устройства DFWebOS для подключения к Plex (и дополнительным службам, таким как Radarr и Sonarr). + Вы можете узнать IP-адрес вашего устройства, посетив панель администратора вашего маршрутизатора или используя инструмент сканирования IP, например Angry IP Scanner. +releaseNotes: >- + Этот выпуск включает в себя несколько исправлений ошибок и улучшений: + - Улучшена обработка активных подписок WebPush и управление уведомлениями. + - Исправлены крайние случаи, когда удаление не обновляло запросы должным образом. + - Исправлена синхронизация доступности для доступных на данный момент незавершенных медиафайлов. + - Улучшена работа с неполными сезонами и специальными предложениями. + - Обновлен URL-адрес списка наблюдения Plex. + - Исправлена отправка уведомлений для неправильных сценариев статуса. + - Исправлена настройка серии на частично доступный статус. + + + Новые возможности: + - Обновлено до Node 20 для повышения производительности и безопасности. + - Подготовленный путь миграции для будущего перехода Seerr + - Улучшена функциональность значка приложения PWA. + + + Полные примечания к выпуску можно найти по адресу https://github.com/sct/overseerr/releases. +developer: Ryan Cohen +website: https://overseerr.dev/ +dependencies: [] +repo: https://github.com/sct/overseerr +support: https://github.com/sct/overseerr/issues +port: 5055 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/607 diff --git a/overseerr/docker-compose.yml b/overseerr/docker-compose.yml new file mode 100644 index 0000000..55b69c5 --- /dev/null +++ b/overseerr/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: overseerr_server_1 + APP_PORT: 5055 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: linuxserver/overseerr:1.35.0@sha256:53a1b839ffa81f139e1552840772bff8a5d13f5c78a69cce22458b9a6cd0844d + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + restart: on-failure diff --git a/owncloud/data/app/.gitkeep b/owncloud/data/app/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/owncloud/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/owncloud/data/config/.gitkeep b/owncloud/data/config/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/owncloud/data/config/.gitkeep @@ -0,0 +1 @@ + diff --git a/owncloud/data/db/.gitkeep b/owncloud/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/owncloud/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/owncloud/data/redis/.gitkeep b/owncloud/data/redis/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/owncloud/data/redis/.gitkeep @@ -0,0 +1 @@ + diff --git a/owncloud/dfwebos-app.yml b/owncloud/dfwebos-app.yml new file mode 100644 index 0000000..f5afcf4 --- /dev/null +++ b/owncloud/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1 +id: owncloud +name: ownCloud +tagline: Умное облако для ваших файлов +category: files +version: "10.16.0" +port: 8666 +description: >- + ☁️ ownCloud — это комплексное программное приложение, предназначенное для предоставления пользователям персонального облачного хранилища, которое сочетает в себе инструменты управления файлами, совместной работы и организации на одной платформе. Он позволяет пользователям загружать, хранить и систематизировать свои файлы в безопасной централизованной среде, что упрощает отслеживание документов, фотографий, видео и других типов данных. С помощью OwnCloud файлы можно легко синхронизировать на нескольких устройствах, таких как компьютеры, смартфоны и планшеты, гарантируя, что пользователи всегда будут иметь доступ к самым последним версиям, независимо от того, где они находятся и какое устройство используют. + + + Приложение предлагает расширенные возможности обмена, позволяя пользователям обмениваться файлами и папками с коллегами, друзьями или членами семьи. Разрешения на доступ можно точно настроить, чтобы предоставить права только на чтение, редактирование или полный контроль, что помогает поддерживать конфиденциальность и безопасность, одновременно способствуя совместной работе. ownCloud также поддерживает совместную работу над документами в режиме реального времени, позволяя нескольким пользователям эффективно работать вместе, будь то бизнес-проекты, академическая работа или личные задачи. + + + Помимо базового хранения и обмена файлами, ownCloud включает в себя ряд интегрированных функций повышения производительности. Пользователи могут управлять календарями, чтобы отслеживать встречи и события, организовывать контакты для хранения коммуникационной информации, создавать и отслеживать задачи для повышения производительности, а также делать заметки, которые легко доступны с любого устройства. Эти дополнительные инструменты превращают OwnCloud в нечто большее, чем просто хранилище файлов; он становится централизованным центром управления различными аспектами повседневной жизни и работы. + + + Безопасность и контроль — ключевые аспекты ownCloud. Платформа уделяет большое внимание конфиденциальности данных, предлагая варианты шифрования, аутентификацию пользователей и подробную регистрацию доступа и изменений. Это гарантирует, что конфиденциальная информация остается защищенной, а пользователи имеют полную информацию о том, кто получает доступ к их данным и как они используются. + + + В целом ownCloud сочетает в себе удобство облачного хранилища с мощными инструментами для совместной работы и организации, предоставляя пользователям универсальную и безопасную среду для эффективного управления своим цифровым контентом на их собственных условиях. +developer: ownCloud GmbH +website: https://owncloud.com +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3532 +repo: https://github.com/owncloud-docker/server +support: https://github.com/owncloud-docker/server/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Этот выпуск включает улучшения безопасности и несколько усовершенствований: + - Повышенная безопасность для разрешения удаленных услуг. + - Подсказки о политике паролей теперь отображаются в диалоговом окне общего доступа. + - Улучшен поиск текста на китайском и японском языках. + - Улучшена обработка недоступных общих ресурсов. + - Управление группами пользователей только для администратора для повышения безопасности. + - По умолчанию отключена оболочка потока Phar для повышения безопасности. + + + Полные примечания к выпуску можно найти по адресу https://doc.owncloud.com/server_release_notes.html. +dependencies: [] +path: "" +defaultUsername: "admin" +deterministicPassword: true diff --git a/owncloud/docker-compose.yml b/owncloud/docker-compose.yml new file mode 100644 index 0000000..0f8c33c --- /dev/null +++ b/owncloud/docker-compose.yml @@ -0,0 +1,71 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: owncloud_server_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + server: + image: owncloud/server:10.16.0@sha256:62c93574d2bd0f98d17ac1a541f703653822e4572a628dcf993a8e65b2400e97 + # Без рута не работает + #user: "1000:1000" + restart: on-failure + depends_on: + - mariadb + - redis + environment: + - OWNCLOUD_DOMAIN=${DEVICE_DOMAIN_NAME}:8080 + - OWNCLOUD_TRUSTED_DOMAINS=${DEVICE_DOMAIN_NAME},${DEVICE_HOSTNAME},${APP_OWNCLOUD_LOCAL_IPS} + - OWNCLOUD_DB_TYPE=mysql + - OWNCLOUD_DB_NAME=owncloud + - OWNCLOUD_DB_USERNAME=owncloud + - OWNCLOUD_DB_PASSWORD=owncloud + - OWNCLOUD_DB_HOST=owncloud_mariadb_1 + - OWNCLOUD_ADMIN_USERNAME=admin + - OWNCLOUD_ADMIN_PASSWORD=${APP_PASSWORD} + - OWNCLOUD_MYSQL_UTF8MB4=true + - OWNCLOUD_REDIS_ENABLED=true + - OWNCLOUD_REDIS_HOST=owncloud_redis_1 + - OWNCLOUD_LOG_LEVEL=2 + healthcheck: + test: ["CMD", "/usr/bin/healthcheck"] + interval: 30s + timeout: 10s + retries: 5 + volumes: + - ${APP_DATA_DIR}/data/app:/mnt/data + - ${APP_DATA_DIR}/data/config:/var/www/html/config + + mariadb: + image: mariadb:10.11@sha256:24bb6e3d8e46f4581ddcc2b2c22fd78c99c77ac4e3fb7c9aba3a5c4c4d934ca2 + user: "1000:1000" + restart: on-failure + environment: + - MYSQL_ROOT_PASSWORD=owncloud + - MYSQL_USER=owncloud + - MYSQL_PASSWORD=owncloud + - MYSQL_DATABASE=owncloud + - MARIADB_AUTO_UPGRADE=1 + command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"] + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=owncloud"] + interval: 10s + timeout: 5s + retries: 5 + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + + redis: + image: redis:6-alpine@sha256:7fe72c486b910f6b1a9769c937dad5d63648ddee82e056f47417542dd40825bb + user: "1000:1000" + restart: on-failure + command: ["--databases", "1"] + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + volumes: + - ${APP_DATA_DIR}/data/redis:/data diff --git a/owncloud/exports.sh b/owncloud/exports.sh new file mode 100644 index 0000000..adbadc7 --- /dev/null +++ b/owncloud/exports.sh @@ -0,0 +1,2 @@ +local_ips=$(hostname --all-ip-addresses 2> /dev/null | tr ' ' ',') || local_ips="" +export APP_OWNCLOUD_LOCAL_IPS="${local_ips}" diff --git a/palmr/data/.gitkeep b/palmr/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/palmr/dfwebos-app.yml b/palmr/dfwebos-app.yml new file mode 100644 index 0000000..b9a622f --- /dev/null +++ b/palmr/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1.2 +id: palmr +category: files +name: Palmr +version: "3.3.2-beta" +tagline: Передача файлов с открытым исходным кодом +description: >- + ⚠️ Уведомление об удалении: проект Palmr больше не поддерживается и не получает никаких обновлений. Для получения дополнительной информации см. это обновление: https://github.com/kyantech/Palmr/issues/418. + + + 🌴Пальмр. — это платформа для обмена файлами с открытым исходным кодом, ориентированная на конфиденциальность и безопасность. + + + Он позволяет пользователям загружать файлы, управлять ими и обмениваться ими с помощью таких функций, как защита паролем, пользовательские ссылки и + контроль доступа без отслеживания и ограничений. + + + Palmr создан для удобного и безопасного обмена данными. совершенно бесплатно. +developer: kyantech +website: https://palmr.kyantech.com.br/ +dependencies: [] +repo: https://github.com/kyantech/Palmr +support: https://github.com/kyantech/Palmr/issues +port: 8075 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +torOnly: false +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3945 +releaseNotes: >- + Это обновление включает важные исправления ошибок и улучшения безопасности. + + + Ключевые изменения включают в себя: + - 🚨 Обновлен Next.js для устранения критической уязвимости удаленного выполнения кода (CVE-2025-51605). + - Исправлены проблемы с обновлением файлового менеджера после создания и переименования папок. + - Устранены сбои при загрузке больших файлов (более 10 ГБ) на S3-совместимом хранилище. + - Исправлена ошибка загрузки больших файлов в Firefox. + - Устранена ошибка 401 при загрузке обратного общего доступа для файлов размером 100 МБ и более. + - Исправлены проблемы с предварительным просмотром аудио и видео при использовании обратного прокси. + - Исправлено переполнение кнопки 2FA на смартфонах. + + + Полные примечания к выпуску можно найти по адресу https://github.com/kyantech/Palmr/releases. +disabled: true diff --git a/palmr/docker-compose.yml b/palmr/docker-compose.yml new file mode 100644 index 0000000..52aa13a --- /dev/null +++ b/palmr/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: palmr_server_1 + APP_PORT: 5487 + PROXY_AUTH_ADD: "false" + + server: + image: kyantech/palmr:v3.3.2-beta@sha256:043dd6cdbb4d9985b376915020fb26c2037b19876674273eac310ab04cdf16f4 + restart: on-failure + stop_grace_period: 1m + environment: + PALMR_UID: 1000 + PALMR_GID: 1000 + volumes: + - ${APP_DATA_DIR}/data:/app/server diff --git a/paperless/data/data/.gitkeep b/paperless/data/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/paperless/data/media/.gitkeep b/paperless/data/media/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/paperless/data/pgdata/.gitkeep b/paperless/data/pgdata/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/paperless/data/redisdata/.gitkeep b/paperless/data/redisdata/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/paperless/dfwebos-app.yml b/paperless/dfwebos-app.yml new file mode 100644 index 0000000..13ca1f7 --- /dev/null +++ b/paperless/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1 +id: paperless +category: files +name: Paperless-ngx +version: "2.20.15" +tagline: Превратите свои физические документы в онлайн-архив с возможностью поиска. +description: >- + Paperless-ngx — это поддерживаемая сообществом система управления документами с открытым исходным кодом, которая преобразует ваши физические документы в онлайн-архив с возможностью поиска, чтобы вы могли хранить меньше бумаги. + + - Организуйте и индексируйте отсканированные документы с помощью тегов, корреспондентов, типов и т. д. + + - Ваши данные хранятся локально на вашем сервере и никогда не передаются и не передаются каким-либо образом. + + - Выполняет распознавание документов в документах, добавляя текст с возможностью поиска и выбора, даже в документы, отсканированные только с изображениями. + + - Использует движок Tesseract с открытым исходным кодом для распознавания более 100 языков. + + - Документы сохраняются в формате PDF/A, который предназначен для длительного хранения вместе с неизмененными оригиналами. + + - Использует машинное обучение для автоматического добавления тегов, корреспондентов и типов документов в ваши документы. + + - Поддерживает документы PDF, изображения, текстовые файлы, документы Office (эквиваленты Word, Excel, Powerpoint и LibreOffice)1 и многое другое. + + - Безбумажный формат хранит ваши документы на диске. Имена файлов и папок управляются безбумажным способом, и их формат можно свободно настраивать, присваивая разные конфигурации различным документам. +releaseNotes: >- + ⚠️ В этом выпуске устранена проблема безопасности, и его рекомендуется использовать всем пользователям. + + + Исправления ошибок в этом выпуске: + - Исправлен вход и выход из системы для использования только безопасных конечных точек. + - Исправлено неправильное определение области перечисления почтовых учетных записей. + - Исправлено промежуточное событие изменения, когда оператор запроса настраиваемого поля меняет тип. + - Исправлены недопустимые запросы, принимаемые конечной точкой заметок API. + + + Полные примечания к выпуску можно найти по адресу https://github.com/paperless-ngx/paperless-ngx/releases. +backupIgnore: + - data/redisdata/* +developer: Paperless-ngx Community +website: https://docs.paperless-ngx.com/ +dependencies: [] +repo: https://github.com/paperless-ngx/paperless-ngx +support: https://github.com/paperless-ngx/paperless-ngx/discussions +port: 2349 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "admin" +deterministicPassword: true +submitter: highghlow +submission: https://github.com/getumbrel/dfwebos-apps/pull/1047 diff --git a/paperless/docker-compose.yml b/paperless/docker-compose.yml new file mode 100644 index 0000000..4bdfc37 --- /dev/null +++ b/paperless/docker-compose.yml @@ -0,0 +1,62 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: paperless_webserver_1 + APP_PORT: 8000 + PROXY_AUTH_ADD: 'false' + + broker: + image: docker.io/library/redis:7@sha256:d6ecc832969a4827645a083da38345327b3447772fe907e7d4311c79b4e3a06e + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redisdata:/data + + db: + image: docker.io/library/postgres:16@sha256:46aa2ee5d664b275f05d1a963b30fff60fb422b4b594d509765c42db46d48881 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/pgdata:/var/lib/postgresql/data + environment: + POSTGRES_DB: paperless + POSTGRES_USER: paperless + POSTGRES_PASSWORD: paperless + + webserver: + image: ghcr.io/paperless-ngx/paperless-ngx:2.20.15@sha256:6c86cad803970ea782683a8e80e7403444c5bf3cf70de63b4d3c8e87500db92f + restart: on-failure + depends_on: + - db + - broker + - gotenberg + - tika + volumes: + - ${APP_DATA_DIR}/data/data:/usr/src/paperless/data + - ${APP_DATA_DIR}/data/media:/usr/src/paperless/media + # TODO: move these inside the paperless app data dir once DFWebOS supports navigating to it via the UI + - ${DFWEBOS_ROOT}/data/storage/paperless/export:/usr/src/paperless/export + - ${DFWEBOS_ROOT}/data/storage/paperless/consume:/usr/src/paperless/consume + environment: + PAPERLESS_REDIS: redis://paperless_broker_1:6379 + PAPERLESS_DBHOST: paperless_db_1 + PAPERLESS_TIKA_ENABLED: 1 + PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://paperless_gotenberg_1:3000 + PAPERLESS_TIKA_ENDPOINT: http://paperless_tika_1:9998 + PAPERLESS_ADMIN_USER: admin + PAPERLESS_ADMIN_PASSWORD: $APP_PASSWORD + + gotenberg: + image: docker.io/gotenberg/gotenberg:7.10@sha256:d03b8a04c6e6c5e568b38f57352266dee4674849b71818774025f8f48d869a9a + restart: on-failure + + # Маршрут gotenberg chromium используется для преобразования файлов .eml. Мы не + # хотите разрешить внешний контент, например пиксели отслеживания или даже JavaScript. + command: + - "gotenberg" + - "--chromium-disable-javascript=true" + - "--chromium-allow-list=file:///tmp/.*" + + tika: + image: apache/tika:3.2.3.0@sha256:c0154cb95587cde64be74f35ada1a2bd7892219f3f0ac3c9dc6cab34046b3573 + restart: on-failure diff --git a/paperless/exports.sh b/paperless/exports.sh new file mode 100755 index 0000000..3793640 --- /dev/null +++ b/paperless/exports.sh @@ -0,0 +1,32 @@ +# Убедитесь, что каталоги безбумажного потребления и экспорта созданы с правильными разрешениями. +DFWEBOS_DATA_DIR="${DFWEBOS_ROOT}/data" +DFWEBOS_DATA_STORAGE_DIR="${DFWEBOS_DATA_DIR}/storage" +DFWEBOS_DATA_STORAGE_PAPERLESS_DIR="${DFWEBOS_DATA_STORAGE_DIR}/paperless" +DFWEBOS_DATA_STORAGE_PAPERLESS_CONSUME_DIR="${DFWEBOS_DATA_STORAGE_PAPERLESS_DIR}/consume" +DFWEBOS_DATA_STORAGE_PAPERLESS_EXPORT_DIR="${DFWEBOS_DATA_STORAGE_PAPERLESS_DIR}/export" +DESIRED_OWNER="1000:1000" + +if [[ ! -d "${DFWEBOS_DATA_STORAGE_PAPERLESS_CONSUME_DIR}" ]]; then + mkdir -p "${DFWEBOS_DATA_STORAGE_PAPERLESS_CONSUME_DIR}" +fi + +if [[ ! -d "${DFWEBOS_DATA_STORAGE_PAPERLESS_EXPORT_DIR}" ]]; then + mkdir -p "${DFWEBOS_DATA_STORAGE_PAPERLESS_EXPORT_DIR}" +fi + +set_paperless_correct_permissions() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +set_paperless_correct_permissions "${DFWEBOS_DATA_STORAGE_DIR}" +set_paperless_correct_permissions "${DFWEBOS_DATA_STORAGE_PAPERLESS_DIR}" +set_paperless_correct_permissions "${DFWEBOS_DATA_STORAGE_PAPERLESS_CONSUME_DIR}" +set_paperless_correct_permissions "${DFWEBOS_DATA_STORAGE_PAPERLESS_EXPORT_DIR}" diff --git a/papra/data/.gitkeep b/papra/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/papra/dfwebos-app.yml b/papra/dfwebos-app.yml new file mode 100644 index 0000000..4183514 --- /dev/null +++ b/papra/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1 +id: papra +name: Papra +tagline: Минималистичная платформа для архивирования документов +category: files +version: "26.0.0" +description: >- + Papra — это минималистичная платформа для управления документами и архивирования. Он спроектирован так, чтобы быть простым в использовании и доступным для каждого. + + + Papra — это платформа для долгосрочного хранения и управления документами, подобная цифровому архиву ваших документов. + + + Забудьте о чеке на подарок, который вы купили своему другу в прошлом году, или о гарантии на свой новый телефон. С Papra вы можете легко хранить, забывать и восстанавливать свои документы, когда они вам понадобятся. +developer: Papra +website: https://papra.app +submitter: Kanishk Pachauri +repo: https://github.com/papra-hq/papra +submission: https://github.com/getumbrel/dfwebos-apps/pull/3949 +support: https://github.com/papra-hq/papra/issues +port: 8112 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Это обновление содержит различные новые функции и улучшения: + - Добавлена поддержка двухфакторной аутентификации. + - Страницу документов теперь можно использовать с расширенными поисковыми запросами. + - Улучшена скорость поиска за счет использования идентификаторов документов и организаций в индексе. + - Автоматическое назначение роли администратора первому зарегистрировавшемуся пользователю. + - Добавлена опция «Показать больше результатов» в быстрый поиск, когда не отображается больше документов. + - Добавлена информация о странице и модальное окно с информацией о версии. + + + Полные примечания к выпуску можно найти по адресу https://github.com/papra-hq/papra/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/papra/docker-compose.yml b/papra/docker-compose.yml new file mode 100644 index 0000000..8e3b07c --- /dev/null +++ b/papra/docker-compose.yml @@ -0,0 +1,16 @@ +services: + app_proxy: + environment: + APP_HOST: papra_server_1 + APP_PORT: 1221 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: ghcr.io/papra-hq/papra:26.0.0-rootless@sha256:e41d2237a59b072063e4059a85492cb11fe4aefb706851becbbce88c7c2ae072 + user: 1000:1000 + restart: on-failure + environment: + - AUTH_SECRET=${APP_SEED} + - APP_BASE_URL=http://${DEVICE_DOMAIN_NAME}:8112 + volumes: + - ${APP_DATA_DIR}/data:/app/app-data diff --git a/passky-client/dfwebos-app.yml b/passky-client/dfwebos-app.yml new file mode 100644 index 0000000..b387a74 --- /dev/null +++ b/passky-client/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: passky-client +category: files +name: Passky Client +version: "8.1.1" +tagline: Простой, современный, легкий, с открытым исходным кодом и безопасный менеджер паролей +description: >- + С Passky вы можете легко и безопасно хранить все свои пароли в одном месте. + + + Попрощайтесь с необходимостью запоминать несколько сложных паролей: с Passky все, что вам нужно, — это один мастер-пароль для доступа ко всем вашим учетным записям. + + + Passky использует передовую технологию шифрования для обеспечения безопасности и надежности ваших паролей, поэтому вы можете быть спокойны, зная, что ваша конфиденциальная информация защищена. + + + Кроме того, Passky прост в использовании и доступен на всех ваших устройствах, поэтому вы можете получить доступ к своим паролям, где бы вы ни находились. Попробуйте Passky сегодня и возьмите под контроль свою онлайн-безопасность! +developer: Rabbit Company LLC +website: https://passky.org +dependencies: [] +repo: https://github.com/Rabbit-Company/Passky-Website +support: https://passky.org/contact +port: 5052 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Rabbit Company LLC +submission: https://github.com/getumbrel/dfwebos-apps/pull/385 +releaseNotes: "" \ No newline at end of file diff --git a/passky-client/docker-compose.yml b/passky-client/docker-compose.yml new file mode 100644 index 0000000..498332a --- /dev/null +++ b/passky-client/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: passky-client_web_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + web: + image: rabbitcompany/passky-client:8.1.1@sha256:9c144ceb22920c60dc659c8635f48a92be4bffdb7dc768aba0d26a9a42c3005d + restart: on-failure + stop_grace_period: 1m diff --git a/passky-server/data/passky/.gitkeep b/passky-server/data/passky/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/passky-server/dfwebos-app.yml b/passky-server/dfwebos-app.yml new file mode 100644 index 0000000..559adef --- /dev/null +++ b/passky-server/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1 +id: passky-server +category: files +name: Passky Server +version: "8.1.8" +tagline: Простой, современный, легкий, с открытым исходным кодом и безопасный менеджер паролей +description: >- + С Passky вы можете легко и безопасно хранить все свои пароли в одном месте. + + + Попрощайтесь с необходимостью запоминать несколько сложных паролей: с Passky все, что вам нужно, — это один мастер-пароль для доступа ко всем вашим учетным записям. + + + Passky использует передовую технологию шифрования для обеспечения безопасности и надежности ваших паролей, поэтому вы можете быть спокойны, зная, что ваша конфиденциальная информация защищена. + + + Кроме того, Passky прост в использовании и доступен на всех ваших устройствах, поэтому вы можете получить доступ к своим паролям, где бы вы ни находились. Попробуйте Passky сегодня и возьмите под контроль свою онлайн-безопасность! +developer: Rabbit Company LLC +website: https://passky.org +dependencies: [] +repo: https://github.com/Rabbit-Company/Passky-Server +support: https://passky.org/contact +port: 5050 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: admin +deterministicPassword: true +releaseNotes: > + Этот выпуск включает улучшения в проверке электронной почты. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Rabbit-Company/Passky-Server/releases. +submitter: Rabbit Company LLC +submission: https://github.com/getumbrel/dfwebos-apps/pull/384 \ No newline at end of file diff --git a/passky-server/docker-compose.yml b/passky-server/docker-compose.yml new file mode 100644 index 0000000..f956cf7 --- /dev/null +++ b/passky-server/docker-compose.yml @@ -0,0 +1,63 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: passky-server_server_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + server: + image: rabbitcompany/passky-server:8.1.8@sha256:e9bf7b9ecdf4904f1e3893b5968e98cbb61d4984bca1482081df2f59df05fca6 + restart: on-failure + stop_grace_period: 1m + environment: + SERVER_LOCATION: "US" + SERVER_CORES: 1 + ADMIN_USERNAME: "admin" + ADMIN_PASSWORD: "${APP_PASSWORD}" + CF_TURNSTILE_SITE_KEY: "1x00000000000000000000AA" + CF_TURNSTILE_SECRET_KEY: "1x0000000000000000000000000000000AA" + DATABASE_ENGINE: sqlite + DATABASE_FILE: passky + MYSQL_HOST: "" + MYSQL_PORT: 3306 + MYSQL_DATABASE: "passky" + MYSQL_USER: "passky" + MYSQL_PASSWORD: "" + MYSQL_SSL: "false" + MYSQL_SSL_CA: "/etc/ssl/certs/ca-certificates.crt" + MYSQL_CACHE_MODE: 0 + REDIS_HOST: "127.0.0.1" + REDIS_PORT: 6379 + REDIS_PASSWORD: "" + REDIS_LOCAL_HOST: "127.0.0.1" + REDIS_LOCAL_PORT: 6379 + REDIS_LOCAL_PASSWORD: "" + MAIL_ENABLED: "false" + ACCOUNT_MAX: 100 + ACCOUNT_MAX_PASSWORDS: 1000 + ACCOUNT_PREMIUM: -1 + YUBI_CLOUD: "https://api.yubico.com/wsapi/2.0/verify" + YUBI_ID: 67857 + LIMITER_ENABLED: "true" + LIMITER_GET_INFO: -1 + LIMITER_GET_STATS: -1 + LIMITER_GET_TOKEN: 3 + LIMITER_GET_PASSWORDS: 2 + LIMITER_SAVE_PASSWORD: 2 + LIMITER_EDIT_PASSWORD: 2 + LIMITER_DELETE_PASSWORD: 2 + LIMITER_DELETE_PASSWORDS: 10 + LIMITER_CREATE_ACCOUNT: 10 + LIMITER_DELETE_ACCOUNT: 10 + LIMITER_IMPORT_PASSWORDS: 10 + LIMITER_FORGOT_USERNAME: 60 + LIMITER_ENABLE_2FA: 10 + LIMITER_DISABLE_2FA: 10 + LIMITER_ADD_YUBIKEY: 10 + LIMITER_REMOVE_YUBIKEY: 10 + LIMITER_UPGRADE_ACCOUNT: 10 + LIMITER_GET_REPORT: -1 + volumes: + - ${APP_DATA_DIR}/data/passky:/var/www/html/databases \ No newline at end of file diff --git a/pastefy/data/db/.gitkeep b/pastefy/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/pastefy/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/pastefy/dfwebos-app.yml b/pastefy/dfwebos-app.yml new file mode 100644 index 0000000..cab04ae --- /dev/null +++ b/pastefy/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1 +id: pastefy +name: Pastefy +tagline: Простая вставка для удобного обмена +category: developer +version: "7.1.6" +port: 9900 +description: >- + Pastefy — это удобная онлайн-платформа, позволяющая быстро и безопасно хранить и обмениваться текстом, кодом и другими заметками. Pastefy идеально подходит для разработчиков, креативщиков и всех, кому необходимо обмениваться идеями в режиме реального времени. Он предлагает простой способ сохранять и делиться контентом без необходимости пересылать файлы туда и обратно. + + + Одним щелчком мыши вы можете вставить свой текст или код и получить ссылку, чтобы легко поделиться им. Для дополнительной безопасности Pastefy также предлагает возможность создавать частные вставки, предоставляя вам полный контроль над тем, кто имеет доступ к вашей информации. + + + Делитесь ли вы фрагментами кода с коллегой, отслеживаете заметки или просто быстро сохраняете что-то на будущее, Pastefy делает обмен информацией быстрее, проще и безопаснее. + + + ⚠️ Если вы не сделаете свои вставки общедоступными или не сохраните ссылку, к ним нельзя будет получить доступ после очистки локального хранилища браузера или использования другого браузера. +developer: InteraApps +website: https://pastefy.app/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2159 +repo: https://github.com/interaapps/pastefy +support: https://github.com/interaapps/pastefy/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Это обновление содержит исправления ошибок и улучшения производительности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/interaapps/pastefy/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/pastefy/docker-compose.yml b/pastefy/docker-compose.yml new file mode 100644 index 0000000..7d8fc2e --- /dev/null +++ b/pastefy/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: pastefy_app_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + db: + image: mariadb:11.4.5@sha256:5dfb3093333fa0ea53194ddef0a2bfa21d3b1e1353bd228b22610cd6fc0c04da + user: "1000:1000" + environment: + MYSQL_ROOT_PASSWORD: "tyooe" + MYSQL_DATABASE: "pastefy" + MYSQL_USER: "pastefy" + MYSQL_PASSWORD: "tyooe" + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql:rw + restart: on-failure + + app: + image: interaapps/pastefy:7.1.6@sha256:353ce246ccf24ab1dec42e3c387744b47925065c207699f0bf1ce8e560619ca9 + user: "1000:1000" + environment: + HTTP_SERVER_CORS: "*" + DATABASE_DRIVER: "mysql" + DATABASE_NAME: "pastefy" + DATABASE_USER: "pastefy" + DATABASE_PASSWORD: "tyooe" + DATABASE_HOST: "pastefy_db_1" + DATABASE_PORT: "3306" + SERVER_NAME: "http://${DEVICE_DOMAIN_NAME}:9900" + # OAUTH2_PROVIDER_CLIENT_ID: + # OAUTH2_PROVIDER_CLIENT_SECRET: + restart: on-failure + depends_on: + - db diff --git a/peerswap/data/.gitkeep b/peerswap/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/peerswap/dfwebos-app.yml b/peerswap/dfwebos-app.yml new file mode 100644 index 0000000..b1c4ae0 --- /dev/null +++ b/peerswap/dfwebos-app.yml @@ -0,0 +1,28 @@ +manifestVersion: 1 +id: peerswap +category: bitcoin +name: PeerSwap +version: "5.0.2" +tagline: Сбалансируйте свои каналы Lightning с помощью Liquid BTC +description: PeerSwap позволяет узлам сети Lightning балансировать свои каналы, облегчая атомарный обмен с прямыми узлами. PeerSwap усиливает децентрализацию сети Lightning, позволяя всем узлам быть собственным провайдером обмена. Отсутствие централизованного координатора, стороннего сборщика арендной платы и балансировка каналов с наименьшими затратами означает, что небольшие узлы могут лучше конкурировать с крупными узлами. Включает в себя функцию AutoFees канала, Liquid Peg-in и отправку BTC с возможностью выбора монет и повышения комиссии. +developer: PeerSwap Project +website: https://peerswap.dev +dependencies: + - lightning + - elements + - bitcoin +repo: https://github.com/Impa10r/peerswap-web +support: https://discord.com/invite/wpNv3PG8G2 +port: 1984 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +submitter: Impa10r +submission: https://github.com/getumbrel/dfwebos-apps/pull/932 +releaseNotes: >- + Это обновление содержит незначительные улучшения и исправления ошибок. + + + Полный список изменений: https://github.com/Impa10r/peerswap-web/blob/main/CHANGELOG.md \ No newline at end of file diff --git a/peerswap/docker-compose.yml b/peerswap/docker-compose.yml new file mode 100644 index 0000000..1737a27 --- /dev/null +++ b/peerswap/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: peerswap_web_1 + APP_PORT: 1984 + + web: + image: ghcr.io/impa10r/peerswap-web:v5.0.2@sha256:1fe2ea9207699ea0d2ebe6b645baa150bbc99448cb2a05ed75c82b55e57a9fee + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + # Приложение + USER: peerswap + NETWORK: $APP_BITCOIN_NETWORK + NO_HTTPS: "true" + # ЛНД + LND_HOST: ${APP_LIGHTNING_NODE_IP}:${APP_LIGHTNING_NODE_GRPC_PORT} + LND_MACAROONPATH: /home/peerswap/.lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/admin.macaroon + # Элементы RPC + ELEMENTS_USER: elements + ELEMENTS_PORT: $APP_ELEMENTS_NODE_RPC_PORT + ELEMENTS_HOST: http://elements_node_1 + ELEMENTS_WALLET: peerswap + ELEMENTS_FOLDER: /home/elements/.elements + ELEMENTS_FOLDER_MAPPED: /home/peerswap/.elements + # Биткойн RPC + BITCOIN_HOST: $APP_BITCOIN_NODE_IP + BITCOIN_PORT: $APP_BITCOIN_RPC_PORT + BITCOIN_USER: $APP_BITCOIN_RPC_USER + BITCOIN_PASS: $APP_BITCOIN_RPC_PASS + volumes: + - ${APP_DATA_DIR}/data:/home/peerswap/.peerswap + - ${APP_LIGHTNING_NODE_DATA_DIR}:/home/peerswap/.lnd:ro + - ${ELEMENTS_DATA_DIR}:/home/peerswap/.elements:ro + - /etc/localtime:/etc/localtime:ro diff --git a/peerswap/exports.sh b/peerswap/exports.sh new file mode 100644 index 0000000..52858fa --- /dev/null +++ b/peerswap/exports.sh @@ -0,0 +1 @@ +export ELEMENTS_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/elements/data" \ No newline at end of file diff --git a/penpot/data/assets/.gitkeep b/penpot/data/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/penpot/data/postgres/.gitkeep b/penpot/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/penpot/dfwebos-app.yml b/penpot/dfwebos-app.yml new file mode 100644 index 0000000..44329e0 --- /dev/null +++ b/penpot/dfwebos-app.yml @@ -0,0 +1,34 @@ +manifestVersion: 1 +id: penpot +category: developer +name: Penpot +version: "2.14.4" +tagline: Платформа для дизайна и прототипирования +description: >- + Penpot — это новаторская платформа с открытым исходным кодом для проектирования и прототипирования, созданная специально для продуктовых команд. + Не ограниченный операционными системами, Penpot использует гибкость веб-платформ и совместимость. + открытых стандартов, в частности SVG. Penpot приглашает дизайнеров всего мира влюбиться в открытый исходный код + в то же время вызывая у разработчиков интерес к процессу проектирования. +releaseNotes: >- + Это обновление включает исправления ошибок: + - Исправлена проверка электронной почты. + - Исправлен черный список электронной почты. + - Исправлены ошибки, вызванные состоянием гонки размонтирования. + + + Полные примечания к выпуску можно найти по адресу https://github.com/penpot/penpot/releases. +developer: Penpot +website: https://penpot.app/ +dependencies: [] +repo: https://github.com/penpot/penpot +support: https://github.com/penpot/penpot/discussions +port: 9001 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/605 diff --git a/penpot/docker-compose.yml b/penpot/docker-compose.yml new file mode 100644 index 0000000..8ba8a44 --- /dev/null +++ b/penpot/docker-compose.yml @@ -0,0 +1,74 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: penpot_penpot-frontend_1 + APP_PORT: 8080 + # Можно рассмотреть возможность отключения аутентификации вообще. Penpot имеет собственную систему авторизации. + PROXY_AUTH_WHITELIST: "/api/*" + + penpot-frontend: + image: penpotapp/frontend:2.14.4@sha256:aecf5131c59a4cd25cebd97af1c8835eef6e25eb74cb2bf349b481a0afae4428 + volumes: + - ${APP_DATA_DIR}/data/assets:/opt/data/assets + environment: + - PENPOT_FLAGS=enable-registration enable-login-with-password + depends_on: + - penpot-backend + - penpot-exporter + restart: on-failure + + penpot-backend: + image: penpotapp/backend:2.14.4@sha256:6e2798b2c3ccd6730415db5f28030460d05fa8c01301b3b72ba3dc66af9e3c58 + # пользователь 1000:1000, чтобы избежать проблем с разрешениями при импорте библиотек и шаблонов. + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/assets:/opt/data/assets + environment: + - PENPOT_FLAGS=enable-registration enable-login-with-password disable-email-verification disable-smtp enable-prepl-server disable-secure-session-cookies + - PENPOT_DATABASE_URI=postgresql://penpot-postgres/penpot + - PENPOT_DATABASE_USERNAME=penpot + - PENPOT_DATABASE_PASSWORD=penpot + - PENPOT_REDIS_URI=redis://penpot_penpot-valkey_1/0 + - PENPOT_ASSETS_STORAGE_BACKEND=assets-fs + - PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets + - PENPOT_TELEMETRY_ENABLED=false + # PENPOT_PUBLIC_URI необходимо установить для отображения миниатюр во внешнем интерфейсе. + - PENPOT_PUBLIC_URI=http://${DEVICE_DOMAIN_NAME}:${APP_PENPOT_UI_PORT} + depends_on: + - penpot-postgres + - penpot-valkey + restart: on-failure + + penpot-exporter: + image: penpotapp/exporter:2.14.4@sha256:c5112cf3b54edf8911945042562d6f0be99ca047f1bc22573315e676a65030b5 + user: "1000:1000" + environment: + - PENPOT_PUBLIC_URI=http://penpot-frontend + - PENPOT_REDIS_URI=redis://penpot_penpot-valkey_1/0 + restart: on-failure + + penpot-postgres: + image: postgres:15@sha256:546445ad21cb5893c0997080b831ee45945e798c4359270e16413c8bd93575db + user: "1000:1000" + stop_signal: SIGINT + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + environment: + - POSTGRES_INITDB_ARGS=--data-checksums + - POSTGRES_DB=penpot + - POSTGRES_USER=penpot + - POSTGRES_PASSWORD=penpot + restart: on-failure + + penpot-valkey: + image: valkey/valkey:8.1.3@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11 + user: "1000:1000" + restart: on-failure + healthcheck: + test: ["CMD-SHELL", "valkey-cli ping | grep PONG"] + interval: 1s + timeout: 3s + retries: 5 + start_period: 3s diff --git a/penpot/exports.sh b/penpot/exports.sh new file mode 100644 index 0000000..a4eca2b --- /dev/null +++ b/penpot/exports.sh @@ -0,0 +1 @@ +export APP_PENPOT_UI_PORT="9001" diff --git a/perplexica/data/app_data/.gitkeep b/perplexica/data/app_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/perplexica/data/app_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/perplexica/data/uploads/.gitkeep b/perplexica/data/uploads/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/perplexica/data/uploads/.gitkeep @@ -0,0 +1 @@ + diff --git a/perplexica/dfwebos-app.yml b/perplexica/dfwebos-app.yml new file mode 100644 index 0000000..c60c5db --- /dev/null +++ b/perplexica/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: perplexica +name: Vane +tagline: Автоответчик на базе ИИ +category: ai +version: "1.12.2" +port: 3444 +description: >- + 🤖 Vane — это интеллектуальная система поиска и ответов на вопросы на базе ИИ, которая меняет способы обнаружения и понимания информации. Вместо предоставления длинного списка ссылок он обрабатывает данные из нескольких источников, интерпретирует значение каждого запроса и генерирует четкие, структурированные и диалоговые ответы. Каждый ответ призван быть информативным и контекстуально релевантным, помогая пользователям понять сложные темы без необходимости просматривать бесконечные страницы результатов поиска. + + + Что делает Vane уникальным, так это его способность понимать намерения, а не просто ключевые слова. Когда пользователь задает вопрос, он анализирует не только буквальные термины, но и основную цель запроса. Это позволяет ему давать ответы, которые кажутся продуманными, связными и естественными. Он синтезирует знания с разных точек зрения, объединяет проверенную информацию и представляет ее таким образом, что это похоже на беседу с экспертом, а не на использование традиционной поисковой системы. + + + Вейн может исследовать практически любую тему: от технических объяснений и фактических исследований до творческих мозговых штурмов и образовательных обзоров. Это помогает пользователям задавать более глубокие вопросы, улучшать свое понимание и легко находить новые идеи. Сочетая интеллектуальное мышление и свободное владение естественным языком, Вейн превращает онлайн-исследование в приятный, увлекательный и познавательный опыт, который адаптируется к любопытству каждого пользователя. +developer: Kushagra Srivastava +website: https://github.com/ItzCrazyKns/Vane +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3970 +repo: https://github.com/ItzCrazyKns/Vane +support: https://github.com/ItzCrazyKns/Vane/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Перплексика теперь Вейн! + + + Это небольшой выпуск, включающий улучшения режима глубокого исследования и различные исправления: + - Исправлены ошибки двойной конверсии истории, чтобы обеспечить более плавное генерирование предложений. + - Добавлена проверка и таймауты для предотвращения зависания поисковых запросов. + - Улучшена обработка выполнения виджета; ошибки больше не приводят к сбою всего исследовательского процесса. + - Устранены ошибки времени сборки путем устранения отсутствующих зависимостей пакета. + - Исправлены крайние случаи, связанные с форматами поисковых запросов, не относящимися к массивам. + - Интегрирован serverUtils и обновлена обратная геолокация API для большей точности. + - Улучшена обработка ошибок для рабочих процессов загрузки файлов. + - Добавлен парсер на основе Chromium для лучшей совместимости с современными веб-страницами. + - Реализована новая оптимизированная функция выполнения поиска. + - Использование встроенных средств для фильтрации результатов поиска, предотвращения переполнения контекстного окна и повышения релевантности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/ItzCrazyKns/Vane/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/perplexica/docker-compose.yml b/perplexica/docker-compose.yml new file mode 100644 index 0000000..f15e1db --- /dev/null +++ b/perplexica/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: perplexica_web_1 + APP_PORT: 3000 + + web: + image: itzcrazykns1337/vane:v1.12.2@sha256:61f2bbf3386ff3df08911fb3de0e1893b04702a4d49ef13fbadbda937b47ab7c + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/app_data:/home/perplexica/data + - ${APP_DATA_DIR}/data/uploads:/home/perplexica/uploads diff --git a/photoprism/database/.gitkeep b/photoprism/database/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/photoprism/dfwebos-app.yml b/photoprism/dfwebos-app.yml new file mode 100644 index 0000000..94d4a6f --- /dev/null +++ b/photoprism/dfwebos-app.yml @@ -0,0 +1,66 @@ +manifestVersion: 1 +id: photoprism +category: files +name: PhotoPrism +version: "260305-fad9d5395" +tagline: Разместите свою фото- и видеотеку самостоятельно +description: >- + PhotoPrism® — это частное приложение для просмотра, организации и + поделитесь своей коллекцией фотографий. Он использует новейшие технологии для маркировки + и находите изображения автоматически, не мешая вам. Попрощаться с + решения, которые заставят вас загрузить свои визуальные воспоминания в облако! + + + - Наш интуитивно понятный пользовательский интерфейс позволяет легко просматривать и систематизировать вашу коллекцию фотографий — будь то на телефоне, планшете или настольном компьютере. + + + - Индексируйте все, не беспокоясь о дубликатах или преобразовании RAW в JPEG. + + + - Автоматическая классификация изображений на основе Google TensorFlow. Кроме того, наш индексатор определяет цвета, цветность, яркость, качество, панорамную проекцию, тип местоположения и многие другие свойства. + + + - Включает четыре карты мира в высоком разрешении, чтобы увидеть, где вы были, и заново открыть для себя давно забытые снимки. + + + - Клиенты WebDAV, такие как Microsoft Windows Explorer или Apple Finder, могут подключаться напрямую к PhotoPrism, чтобы вы могли открывать, редактировать и удалять файлы со своего компьютера или телефона, как если бы они были локальными. Вы также можете легко синхронизировать свои изображения с помощью PhotoSync. + + + - Поскольку PhotoPrism создан как прогрессивное веб-приложение, оно предоставляет возможности, аналогичные приложению, и вы можете установить его на главный экран. В разработке также находится нативное приложение, поддерживаемое сообществом. +developer: PhotoPrism +website: https://photoprism.app +dependencies: [] +repo: https://github.com/photoprism/photoprism +support: https://gitter.im/browseyourlife/community +port: 8087 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "admin" +deterministicPassword: true +torOnly: false +releaseNotes: >- + В этом выпуске службы основное внимание уделяется усилению безопасности, улучшениям совместимости и исправлениям ошибок. + + + Ключевые особенности и улучшения: + - Добавлена поддержка конфигурации Ollama через переменные среды OLLAMA_BASE_URL и OLLAMA_API_KEY. + - Улучшено создание подписей Олламы с улучшенной обработкой резервных копий для моделей рассуждений. + - Исправлены объединенные фотографии, неправильно сохраняющие тип изображения после объединения видеофайлов. + - Исправлена обработка координат GPS вблизи границ карты в Местах. + - Исправлены подпапки эмодзи, конфликтующие с альбомами родительских папок. + - Исправлены конфликты путей к папкам и альбомам, вызванные усеченными фрагментами. + - Скрытые результаты теперь отображают причины ошибок файла в представлениях «Карточка» и «Список». + - Улучшены заголовки ответов WebDAV для лучшей совместимости. + - Добавлены параметры конфигурации усиления безопасности HTTP. + - Улучшена производительность исключения маршрутов Gzip. + - Исправлены проблемы при хостинге на общем домене. + - Улучшена совместимость с поставщиком удостоверений Google OIDC. + - Обновлены переводы на французский, немецкий, латышский и румынский языки. + + + Полные примечания к выпуску можно найти по адресу: https://github.com/photoprism/photoprism/releases/. +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/bf4c6f127f1fcf4dbe8eea55729502dfb34278e9 diff --git a/photoprism/docker-compose.yml b/photoprism/docker-compose.yml new file mode 100644 index 0000000..398c7d0 --- /dev/null +++ b/photoprism/docker-compose.yml @@ -0,0 +1,48 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: photoprism_web_1 + APP_PORT: 8087 + # Эти конечные точки защищены базовой аутентификацией HTTP от Photoprism. + # Подробности здесь: https://docs.photoprism.app/user-guide/sync/webdav/#server-url + PROXY_AUTH_WHITELIST: "/originals/*,/import/*" + + web: + image: photoprism/photoprism:260305@sha256:5229f68bce0293320547f35c733de584d7c2d5725a0efbddb68d7a118a8fc21c + user: "1000:1000" + restart: on-failure + stop_grace_period: "1m" + volumes: + - "${APP_DATA_DIR}/originals:/photoprism/originals" + - "${APP_DATA_DIR}/storage:/photoprism/storage" + environment: + PHOTOPRISM_ADMIN_PASSWORD: "${APP_PASSWORD}" + PHOTOPRISM_ORIGINALS_LIMIT: 10000 + PHOTOPRISM_HTTP_COMPRESSION: "gzip" + PHOTOPRISM_HTTP_PORT: 8087 + PHOTOPRISM_DATABASE_DRIVER: "mysql" + PHOTOPRISM_DATABASE_SERVER: "photoprism_db_1:3306" + PHOTOPRISM_DATABASE_NAME: "photoprism" + PHOTOPRISM_DATABASE_USER: "photoprism" + PHOTOPRISM_DATABASE_PASSWORD: "photoprism" + PHOTOPRISM_SITE_URL: "http://${APP_DOMAIN}:8087/" + PHOTOPRISM_SITE_TITLE: "PhotoPrism" + PHOTOPRISM_SITE_CAPTION: "Digital Asset Management" + PHOTOPRISM_SITE_DESCRIPTION: "" + PHOTOPRISM_SITE_AUTHOR: "" + + db: + image: mariadb:10.5.12@sha256:dfcba5641bdbfd7cbf5b07eeed707e6a3672f46823695a0d3aba2e49bbd9b1dd + user: "1000:1000" + restart: on-failure + stop_grace_period: "1m" + command: mysqld --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=50 + volumes: + - "${APP_DATA_DIR}/database:/var/lib/mysql" + environment: + MYSQL_ROOT_PASSWORD: "photoprism" + MYSQL_DATABASE: "photoprism" + MYSQL_USER: "photoprism" + MYSQL_PASSWORD: "photoprism" diff --git a/photoprism/originals/.gitkeep b/photoprism/originals/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/photoprism/storage/.gitkeep b/photoprism/storage/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/pi-hole/data/dnsmasq/.gitkeep b/pi-hole/data/dnsmasq/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pi-hole/data/pihole/.gitkeep b/pi-hole/data/pihole/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pi-hole/dfwebos-app.yml b/pi-hole/dfwebos-app.yml new file mode 100644 index 0000000..2e630b3 --- /dev/null +++ b/pi-hole/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1.1 +id: pi-hole +category: networking +name: Pi-hole +version: "2026.04.1" +tagline: Блокируйте рекламу во всей вашей сети +description: >- + Вместо плагинов браузера или другого программного обеспечения на каждом компьютере + установите Pi-hole® на свой DFWebOS, и вся ваша сеть будет защищена. + Блокировка на уровне сети позволяет блокировать рекламу в нетрадиционных местах, таких как + как мобильные приложения и смарт-телевизоры, независимо от оборудования или ОС. Поскольку + рекламные объявления блокируются до их загрузки, производительность сети снижается. + улучшится и почувствует себя быстрее. + + + Помимо блокировки рекламы, Pi-hole® имеет информативный веб-интерфейс, который показывает статистику по всем запрашиваемым доменам в вашей сети. Pi-hole® отлично работает с существующим DHCP-сервером, но вы можете использовать Pi-hole®, чтобы централизованно управлять сетью. + + + Pi-hole® и логотип Pi-hole® являются зарегистрированными торговыми марками Pi-hole. DFWebOS не спонсируется, не одобряется и не связан с Pi-hole®. +developer: Pi-hole® +website: https://pi-hole.net +dependencies: [] +repo: https://github.com/pi-hole/docker-pi-hole +support: https://discourse.pi-hole.net +port: 8082 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "/admin/" +defaultUsername: "" +deterministicPassword: true +torOnly: false +releaseNotes: >- + ⚠️ Если вы настроили свой маршрутизатор на использование Pi-hole в качестве единственного DNS-сервера, DFWebOS может не суметь разрешить доменные имена во время обновления, что не позволит ему загрузить файлы обновления. + Чтобы избежать проблем, перед обновлением временно установите резервный DNS-сервер (например, 1.1.1.1) на маршрутизаторе или настройте постоянный резервный DNS, чтобы предотвратить проблемы в будущем. + + + Этот выпуск включает исправления ошибок и улучшения стабильности: + - 🚨 Исправлены две уязвимости безопасности в FTL (GHSA-6w8x-p785-6pm4 и GHSA-9cqv-839p-gpq2). + - Исправлены проблемы с потокобезопасностью, которые могли привести к сбоям при одновременной загрузке API. + - Исправлено редкое состояние гонки в обработчиках API. + - Исправлена проблема с поиском устройства, когда разрешение имен на основе MAC отключено. + - Улучшена поддержка доменов punycode, отклоненных IDNA2008. + - Улучшена диагностика выключения + - Исправлены права владения для каталогов. + - Исправлена обработка разрешений для файлов, связанных с гравитацией. + + + Полные примечания к выпуску можно найти по адресу https://github.com/pi-hole/docker-pi-hole/releases/tag/2026.04.1. +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/9ca55a25e043dcd50d5cb92c6ec756d368bb4794 diff --git a/pi-hole/docker-compose.yml b/pi-hole/docker-compose.yml new file mode 100644 index 0000000..9faf43b --- /dev/null +++ b/pi-hole/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + server: + image: pihole/pihole:2026.04.1@sha256:1c32c36b862a12762656b6471c854cebc01fe945639ba3a893611337c2c95e99 + # Pi-hole в настоящее время не поддерживает работу без полномочий root + # https://github.com/pi-hole/docker-pi-hole/issues/685 + # user: "1000:1000" + restart: on-failure + network_mode: host + volumes: + - ${APP_DATA_DIR}/data/pihole:/etc/pihole/ + - ${APP_DATA_DIR}/data/dnsmasq:/etc/dnsmasq.d/ + environment: + - FTLCONF_webserver_api_password=${APP_PASSWORD} + - FTLCONF_webserver_port=8082,[::]:8082 + # Прослушивать все интерфейсы, разрешить все источники + - FTLCONF_dns_listeningMode=all + cap_add: + - NET_ADMIN diff --git a/pi-hole/hooks/pre-install b/pi-hole/hooks/pre-install new file mode 100755 index 0000000..eed51f8 --- /dev/null +++ b/pi-hole/hooks/pre-install @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +RESOLVED_SERVICE_NAME="systemd-resolved" +RESOLVED_CONF_FILE="/etc/systemd/resolved.conf" + +# Проверьте, запущена ли служба 'systemd-resolved' +if ! systemctl is-active --quiet "${RESOLVED_SERVICE_NAME}.service"; then + echo "Service '${RESOLVED_SERVICE_NAME}' is not running" + exit +fi + +# Проверьте, запущен ли прослушиватель-заглушка DNS. +if cat "${RESOLVED_CONF_FILE}" | grep --quiet "^DNSStubListener=no$"; then + echo "DNSStubListener already turned off" + exit +fi + +echo "Turning off the DNS Stub Listener" + +# Отключите DNSStubListener в файле конфигурации. +sed -r -i.orig 's/#?DNSStubListener=yes/DNSStubListener=no/g' "${RESOLVED_CONF_FILE}" + +# Удалите активный resolv.conf, который имел бы +# localhost (прослушиватель DNS systemd-resolved) в качестве преобразователя DNS +rm -f /etc/resolv.conf + +# Создайте символическую ссылку между восходящим resolv.conf systemd-resolved. +# и resolv.conf OS +ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf + +echo "Restart service '${RESOLVED_SERVICE_NAME}'" +systemctl restart "${RESOLVED_SERVICE_NAME}" \ No newline at end of file diff --git a/picsur/data/db/.gitkeep b/picsur/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/picsur/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/picsur/dfwebos-app.yml b/picsur/dfwebos-app.yml new file mode 100644 index 0000000..4a621c7 --- /dev/null +++ b/picsur/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: picsur +name: Picsur +tagline: Простой в использовании сервис обмена изображениями +category: files +version: "0.5.6" +port: 8286 +description: >- + 🖼️ Picsur — это легкая платформа для самостоятельного размещения изображений, разработанная для простоты и контроля. Он позволяет пользователям загружать, хранить и обмениваться изображениями непосредственно со своего сервера, не полагаясь на сторонние сервисы. Вдохновленный функциональностью таких платформ, как Imgur и Pastebin, Picsur предлагает простой и эффективный интерфейс для пользователей, которым нужен простой способ управления изображениями в Интернете. + + + В отличие от более сложных решений для управления фотографиями, таких как PhotoPrism или Immich, которые включают в себя такие функции, как распознавание лиц, альбомы и сортировку с помощью ИИ, Picsur специально создан для быстрой загрузки и прямого обмена. Он поддерживает широкий спектр форматов изображений, включая распространенные, такие как JPEG, PNG и GIF, а также более новые или менее стандартные типы, такие как QOI и анимированные файлы WebP. После загрузки изображения можно редактировать с помощью основных инструментов, таких как изменение размера, поворот, переворачивание или применение оттенков серого и негативных эффектов. + + + Платформа включает в себя удобный веб-интерфейс, который поддерживает загрузку методом перетаскивания и предоставляет прямые ссылки для мгновенного обмена изображениями. Администраторы могут получить доступ к внутренней панели для управления загруженными файлами и разрешениями пользователей, предлагая полный контроль над работой службы. + + + Поскольку Picsur размещается на собственном хостинге, он обеспечивает максимальную конфиденциальность и независимость от облачных провайдеров. Это делает его идеальным решением для отдельных лиц или небольших групп, желающих размещать изображения конфиденциально, эффективно и с минимальными накладными расходами. +developer: CaramelFur +website: https://picsur.org/upload +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2589 +repo: https://github.com/CaramelFur/Picsur +support: https://github.com/CaramelFur/Picsur/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: "" +dependencies: [] +path: "" +defaultUsername: "admin" +deterministicPassword: true diff --git a/picsur/docker-compose.yml b/picsur/docker-compose.yml new file mode 100644 index 0000000..8398178 --- /dev/null +++ b/picsur/docker-compose.yml @@ -0,0 +1,45 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: picsur_web_1 + APP_PORT: 8286 + PROXY_AUTH_ADD: "false" + + db: + image: postgres:17.4@sha256:fe3f571d128e8efadcd8b2fde0e2b73ebab6dbec33f6bfe69d98c682c7d8f7bd + user: "1000:1000" + mem_limit: 1g + cpu_shares: 1024 + security_opt: + - no-new-privileges:true + healthcheck: + test: ["CMD", "pg_isready", "-q", "-d", "picsur", "-U", "picsuruser"] + timeout: 45s + interval: 10s + retries: 10 + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data:rw + environment: + POSTGRES_DB: picsur + POSTGRES_USER: picsuruser + POSTGRES_PASSWORD: picsurpass + restart: on-failure + + web: + image: ghcr.io/caramelfur/picsur:0.5.6@sha256:209ce21d338cd7d9a1adc838a67695e903149359bf192359819607df1b3c4417 + user: "1000:1000" + environment: + PICSUR_PORT: 8286 + PICSUR_DB_HOST: picsur_db_1 + PICSUR_DB_PORT: 5432 + PICSUR_DB_USERNAME: picsuruser + PICSUR_DB_PASSWORD: picsurpass + PICSUR_DB_DATABASE: picsur + PICSUR_ADMIN_PASSWORD: ${APP_PASSWORD} + PICSUR_MAX_FILE_SIZE: 128000000000 + depends_on: + db: + condition: service_healthy + restart: on-failure diff --git a/pinchflat/data/config/.gitkeep b/pinchflat/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pinchflat/dfwebos-app.yml b/pinchflat/dfwebos-app.yml new file mode 100644 index 0000000..2de8b81 --- /dev/null +++ b/pinchflat/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: pinchflat +category: media +name: Pinchflat +version: "2025.6.6" +tagline: Автоматизированное решение для резервного копирования медиа-источников в Интернете. +description: >- + Pinchflat — это самостоятельное приложение для загрузки контента YouTube, созданного с помощью yt-dlp. Он спроектирован так, чтобы быть легким, автономным и простым в использовании. Вы устанавливаете правила загрузки контента с каналов или плейлистов YouTube, а он сделает все остальное, периодически проверяя наличие нового контента. Он идеально подходит для людей, которые хотят загружать контент для использования с приложением медиацентра (Plex, Jellyfin, Kodi) или для тех, кто хочет архивировать мультимедиа! + + + Хотя вы можете загружать отдельные видео, Pinch Flat лучше всего подходит для загрузки контента с каналов или плейлистов. Он также не предназначен для использования контента внутри приложения — Pinchflat загружает контент на диск, где вы затем можете просмотреть его с помощью приложения медиацентра или VLC. + + + ## Особенности + - Автономный - всего один контейнер Docker без внешних зависимостей. + - Мощная система именования, позволяющая хранить контент там, где и как вы хотите. + - Простой в использовании веб-интерфейс с предустановками, позволяющими сразу начать работу. + - Первоклассная поддержка приложений медиацентра, таких как Plex, Jellyfin и Kodi ([docs](https://github.com/kieraneglin/pinchflat/wiki/Frequently-Asked-Questions#how-do-i-get-media-into-plexjellyfinkodi)) + - Поддержка подачи RSS-каналов в ваше любимое приложение для подкастов ([docs](https://github.com/kieraneglin/pinchflat/wiki/Podcast-RSS-Feeds)) + - Автоматически загружает новый контент из каналов и плейлистов + - Использует новый подход для более быстрой загрузки нового контента, чем другие приложения. + - Поддерживает загрузку аудиоконтента + - Пользовательские правила для обработки короткометражек YouTube и прямых трансляций. + - Поддержка уведомлений + - Позволяет автоматически повторно загружать новые медиафайлы по истечении установленного периода. + – Это может помочь улучшить качество загрузки нового контента или улучшить теги SponsorBlock. + - При необходимости автоматическое удаление старого контента ([docs](https://github.com/kieraneglin/pinchflat/wiki/Automatically-Delete-Media)) + - Расширенные параметры, такие как установка дат окончания и фильтрация по названию ([docs](https://github.com/kieraneglin/pinchflat/wiki/Frequently-Asked-Questions#i-only-want-certain-videos-from-a-source---how-can-i-only-download-those)) + - Надежная автоматическая работа- Может передавать файлы cookie в YouTube для загрузки ваших личных плейлистов ([docs](https://github.com/kieraneglin/pinchflat/wiki/YouTube-Cookies)) + - Интеграция спонсорского блока + - [Дополнительно] позволяет настраивать параметры `yt-dlp` ([docs](https://github.com/kieraneglin/pinchflat/wiki/%5BAdvanced%5D-Custom-yt%E2%80%90dlp-options)) + - [Дополнительно] поддерживает запуск пользовательских сценариев после загрузки/удаления мультимедиа (альфа - [документы](https://github.com/kieraneglin/pinchflat/wiki/%5BAdvanced%5D-Custom-lifecycle-scripts)) +developer: Kieran Eglin +website: https://github.com/kieraneglin/pinchflat +dependencies: [] +repo: https://github.com/kieraneglin/pinchflat +support: https://github.com/kieraneglin/pinchflat/issues +port: 8945 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: "" +torOnly: false +permissions: + - STORAGE_DOWNLOADS +submitter: only1thor +submission: "https://github.com/getumbrel/dfwebos-apps/pull/3032" + diff --git a/pinchflat/docker-compose.yml b/pinchflat/docker-compose.yml new file mode 100644 index 0000000..e03d884 --- /dev/null +++ b/pinchflat/docker-compose.yml @@ -0,0 +1,14 @@ +services: + app_proxy: + environment: + APP_HOST: pinchflat_web_1 + APP_PORT: 8945 + + web: + image: ghcr.io/kieraneglin/pinchflat:v2025.6.6@sha256:4e975edf58f0861a5cbfe8fc6aac4851ff5a02dfc3f05ffeea4982e3084a5a4a + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads diff --git a/pingvin-share/data/backend/.gitkeep b/pingvin-share/data/backend/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pingvin-share/data/images/.gitkeep b/pingvin-share/data/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pingvin-share/dfwebos-app.yml b/pingvin-share/dfwebos-app.yml new file mode 100644 index 0000000..7794393 --- /dev/null +++ b/pingvin-share/dfwebos-app.yml @@ -0,0 +1,44 @@ +manifestVersion: 1.1 +id: pingvin-share +category: files +name: Pingvin Share +version: "1.13.0" +tagline: Самостоятельная платформа для обмена файлами +description: >- + Pingvin Share — это автономная платформа для обмена файлами и альтернатива WeTransfer. + + + 🛠️ Чтобы использовать Pingvin Share по назначению, вам может потребоваться предоставить доступ к нему в общедоступном Интернете. Самый простой способ сделать это — загрузить приложение Cloudflare Tunnel из магазина приложений DFWebOS и открыть доступ к Pingvin Share (работающему на порту 6453), используя свой собственный домен. + + + ✨ Особенности + - Делитесь файлами по ссылке + - Неограниченный размер файла (ограничен только дисковым пространством) + - Установить дату истечения срока действия акций + - Защищайте общий доступ с помощью лимитов посетителей и паролей. + - Получатели электронной почты + - Обратные акции + - Аутентификация OIDC и LDAP +developer: Elias Schneider +website: https://stonith404.github.io/pingvin-share/introduction +repo: https://github.com/stonith404/pingvin-share +support: https://github.com/stonith404/pingvin-share/issues +dependencies: [] +port: 6453 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Ключевые изменения в этом выпуске: + - Добавлена возможность использовать кеш Redis вместо кеша памяти. + - Добавлена возможность указать путь к файлу конфигурации. + + + Полные примечания к выпуску доступны по адресу https://github.com/stonith404/pingvin-share/releases. +torOnly: false +submitter: maltekiefer +submission: https://github.com/getumbrel/dfwebos-apps/pull/1229 diff --git a/pingvin-share/docker-compose.yml b/pingvin-share/docker-compose.yml new file mode 100644 index 0000000..f9f4b20 --- /dev/null +++ b/pingvin-share/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: pingvin-share_web_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + web: + image: stonith404/pingvin-share:v1.13.0@sha256:6bf2bcd3043ee68cb61264f0857511ccf7f212fdb984382b7f2d491635184ad6 + user: "1000:1000" + restart: on-failure + volumes: + - "${APP_DATA_DIR}/data/backend:/opt/app/backend/data" + - "${APP_DATA_DIR}/data/images:/opt/app/frontend/public/img" diff --git a/pingvin-share/hooks/pre-start b/pingvin-share/hooks/pre-start new file mode 100755 index 0000000..1b0c79a --- /dev/null +++ b/pingvin-share/hooks/pre-start @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Версия 1.7.0 позволяла контейнеру pingvin работать без полномочий root: https://github.com/stonith404/pingvin-share/releases/tag/v1.7.0 +# Раньше Pingvin запускался от имени пользователя root, поэтому теперь мы рекурсивно устанавливаем владельца каталога данных на 1000:1000, чтобы у пользователей версий до 1.7.0 не было неработающего приложения. +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" + +# Рекурсивно установить право собственности на все файлы и каталоги под APP_DATA_DIR на 1000:1000. +chown -R 1000:1000 "${APP_DATA_DIR}" \ No newline at end of file diff --git a/plane/config/nginx.conf b/plane/config/nginx.conf new file mode 100644 index 0000000..53d91bd --- /dev/null +++ b/plane/config/nginx.conf @@ -0,0 +1,64 @@ +# Использовать входящий X-Forwarded-Port, если установлено, иначе по умолчанию — 8762. +map $http_x_forwarded_port $final_port { + default $http_x_forwarded_port; + "" 8762; +} + +map $http_x_forwarded_proto $final_proto { + default $http_x_forwarded_proto; + "" $scheme; +} + +server { + listen 8762; + + # FILE_SIZE_LIMIT — байты в Plane env; nginx хочет размеры m/g. + # 52428800 байт ≈ 50м + client_max_body_size 50m; + + port_in_redirect off; + absolute_redirect off; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $final_proto; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Port $final_port; + + location /spaces/ { + proxy_pass http://plane_space_1:3000; + proxy_http_version 1.1; + proxy_set_header Connection ""; + } + + location /god-mode/ { + proxy_pass http://plane_admin_1:3000; + proxy_http_version 1.1; + proxy_set_header Connection ""; + } + + location /live/ { + proxy_pass http://plane_live_1:3000; + proxy_http_version 1.1; + proxy_set_header Connection ""; + } + + location /api/ { + proxy_pass http://plane_api_1:8000; + } + + location /auth/ { + proxy_pass http://plane_api_1:8000; + } + + location /uploads { + proxy_pass http://plane-minio-1:9000; + } + + location / { + proxy_pass http://plane_web_1:3000; + proxy_http_version 1.1; + proxy_set_header Connection ""; + } +} diff --git a/plane/data/db/.gitkeep b/plane/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plane/data/rabbitmq/.gitkeep b/plane/data/rabbitmq/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plane/data/redis/.gitkeep b/plane/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plane/data/uploads/.gitkeep b/plane/data/uploads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plane/dfwebos-app.yml b/plane/dfwebos-app.yml new file mode 100644 index 0000000..c17d59a --- /dev/null +++ b/plane/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1.1 +id: plane +category: files +name: Plane +version: "1.3.0" +tagline: Современное управление проектами для всех команд +description: >- + Meet Plane — инструмент управления проектами с открытым исходным кодом, позволяющий отслеживать проблемы, запускать циклы спринтов и управлять дорожными картами продукта без хаоса, связанного с управлением самим инструментом. 🧘‍♀️ + + + 🌟 Особенности + - Проблемы Эффективно создавайте задачи и управляйте ими с помощью надежного редактора форматированного текста, поддерживающего загрузку файлов. Улучшите организацию и отслеживание, добавляя дочерние свойства и ссылаясь на связанные проблемы. + - Cycles Поддерживайте темп своей команды с помощью Cycles. Легко отслеживайте прогресс с помощью диаграмм сгорания и других полезных инструментов. + - Модули Упрощайте сложные проекты, разделяя их на более мелкие, управляемые модули. + - Представления Настройте свой рабочий процесс, создав фильтры для отображения только наиболее актуальных проблем. Сохраняйте и делитесь этими взглядами с легкостью. + - Страницы Сохраняйте и систематизируйте идеи с помощью Plane Pages с возможностями ИИ и редактором форматированного текста. Форматируйте текст, вставляйте изображения, добавляйте гиперссылки или преобразуйте свои заметки в полезные элементы. + - Аналитика Получите доступ к аналитике в реальном времени по всем данным вашего самолета. Визуализируйте тенденции, устраняйте препятствия и продвигайте свои проекты вперед. + + + Доступ к панели администратора Plane можно получить по адресу `umbrel.local:8762/god-mode`. +developer: Plane Software Inc. +website: http://plane.so/ +repo: https://github.com/makeplane/plane +support: https://github.com/makeplane/plane/issues +dependencies: [] +port: 8762 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: "" +torOnly: false +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/4126 diff --git a/plane/docker-compose.yml b/plane/docker-compose.yml new file mode 100644 index 0000000..ee5593d --- /dev/null +++ b/plane/docker-compose.yml @@ -0,0 +1,222 @@ +version: "3.7" + +x-environment: &env + # ---- Внешние URL и порты ---- + NGINX_PORT: 8762 + LISTEN_HTTP_PORT: 8762 + + # ---- Имя сегмента, используемое внешним интерфейсом для путей /uploads ---- + BUCKET_NAME: uploads + + # ---- API Рабочие ---- + GUNICORN_WORKERS: 2 + + # ---- База данных ---- + POSTGRES_DB: plane + POSTGRES_USER: plane + POSTGRES_PASSWORD: dfwebosplane + DATABASE_URL: postgresql://plane:umbrelplane@plane_db_1:5432/plane + + # ---- Кэш/брокер ---- + REDIS_URL: redis://plane_redis_1:6379/0 + RABBITMQ_DEFAULT_USER: plane + RABBITMQ_DEFAULT_PASS: dfwebosplane + RABBITMQ_DEFAULT_VHOST: plane + CELERY_BROKER_URL: amqp://plane:umbrelplane@plane_rabbitmq_1:5672/plane + + # ---- Объектное хранилище (MinIO; S3-совместимое) ---- + USE_MINIO: 1 + AWS_ACCESS_KEY_ID: dfwebos + AWS_SECRET_ACCESS_KEY: $APP_PASSWORD + AWS_S3_ENDPOINT_URL: http://plane-minio-1:9000 + AWS_S3_BUCKET_NAME: uploads + FILE_SIZE_LIMIT: 52428800 # 50 MB + MINIO_ENDPOINT_SSL: 0 + MINIO_ROOT_USER: dfwebos + MINIO_ROOT_PASSWORD: $APP_PASSWORD + + # ---- Джанго/приложение ---- + SECRET_KEY: $APP_SEED + LIVE_SERVER_SECRET_KEY: $APP_SEED + # необязательно, но часто помогает за прокси + USE_X_FORWARDED_HOST: 1 + SECURE_SSL_REDIRECT: 0 + SESSION_COOKIE_SECURE: 0 + CSRF_COOKIE_SECURE: 0 + +services: + app_proxy: + environment: + APP_HOST: plane_nginx_1 + APP_PORT: 8762 + PROXY_AUTH_ADD: "false" + + nginx: + image: nginx:alpine3.23@sha256:5616878291a2eed594aee8db4dade5878cf7edcb475e59193904b198d9b830de + restart: on-failure + volumes: + - ${APP_DATA_DIR}/config/nginx.conf:/etc/nginx/conf.d/default.conf:ro + depends_on: + - web + + db: + image: postgres:17.9-alpine@sha256:778d0b486d6daa02b77434d0358ec57a1b21fd8b6d22ac2eef56a33e816928f6 + user: "1000:1000" + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] + interval: 10s + timeout: 5s + retries: 10 + + redis: + image: valkey/valkey:7.2.12-alpine@sha256:d0809f1d763f9fc3d77cd27e7c0393b1b0d69b6ad9269f932328b4793a620c78 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data + + rabbitmq: + image: rabbitmq:3.13.7-management-alpine@sha256:0c64ec4fc5596406d755dcca75e8a3b618192cc5fb69f8f0340f06290b1cc08c + user: "1000:1000" + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + volumes: + - ${APP_DATA_DIR}/data/rabbitmq:/var/lib/rabbitmq + + minio: + image: alpine/minio:RELEASE.2025-10-15T17-29-55Z@sha256:cf23643a6cf9ce159c57643ceb88279e431262282428c9e0bf3a7ef1a97e84b4 + user: "1000:1000" + restart: on-failure + command: server /export --console-address ":8763" + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + volumes: + - ${APP_DATA_DIR}/data/uploads:/export + ports: + - "8763:8763" + # не удается подключиться, если имя содержит подчеркивание + container_name: plane-minio-1 + + api: + image: makeplane/plane-backend:v1.3.0@sha256:60fb33fa75b63594c1b0bb62b9e50e05f03bb0e46ef384c9eec177f2fb1aaf02 + user: "1000:1000" + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + rabbitmq: + condition: service_started + + worker: + image: makeplane/plane-backend:v1.3.0@sha256:60fb33fa75b63594c1b0bb62b9e50e05f03bb0e46ef384c9eec177f2fb1aaf02 + user: "1000:1000" + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + depends_on: + api: + condition: service_started + redis: + condition: service_started + rabbitmq: + condition: service_started + command: ["sh","-c","celery -A plane worker --loglevel=info"] + + beat-worker: + image: makeplane/plane-backend:v1.3.0@sha256:60fb33fa75b63594c1b0bb62b9e50e05f03bb0e46ef384c9eec177f2fb1aaf02 + user: "1000:1000" + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + depends_on: + api: + condition: service_started + redis: + condition: service_started + rabbitmq: + condition: service_started + migrator: + condition: service_completed_successfully + command: ["sh","-c","celery -A plane beat --loglevel=info"] + + migrator: + image: makeplane/plane-backend:v1.3.0@sha256:60fb33fa75b63594c1b0bb62b9e50e05f03bb0e46ef384c9eec177f2fb1aaf02 + user: "1000:1000" + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + depends_on: + db: + condition: service_healthy + command: ["sh","-c","python manage.py wait_for_db && python manage.py migrate"] + + web: + image: makeplane/plane-frontend:v1.3.0@sha256:5116ac06c2b5f8cc6b0dfd7638ce787b44302527dd3fa2b3e6889e52c4aff3d1 + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + depends_on: + - api + + live: + image: makeplane/plane-live:v1.3.0@sha256:81ff136509a3069766c27c9f3489db7bfe37af8a8eab8869ee17ab948eeb83c3 + user: "1000:1000" + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + depends_on: + - api + + space: + image: makeplane/plane-space:v1.3.0@sha256:0964d53de83a7f2bcb9418dc157f3ede566a6ddad0774d8d2b10cd931b96fcea + user: "1000:1000" + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + depends_on: + - api + healthcheck: + test: ["CMD-SHELL", "node -e \"require('http').get('http://127.0.0.1:3000/', (r) => process.exit(r.statusCode < 500 ? 0 : 1)).on('error', () => process.exit(1))\""] + interval: 30s + timeout: 5s + start_period: 10s + retries: 3 + + admin: + image: makeplane/plane-admin:v1.3.0@sha256:dd83ae5d61d592d0877e4ddda9eb32a3828f8b51d8efbc307806c34b9a48c0a2 + restart: on-failure + environment: + <<: *env + env_file: + - ${APP_DATA_DIR}/settings.env + depends_on: + - api diff --git a/plane/hooks/pre-start b/plane/hooks/pre-start new file mode 100755 index 0000000..c234326 --- /dev/null +++ b/plane/hooks/pre-start @@ -0,0 +1,101 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот сценарий проверяет файл среды на наличие значений-заполнителей и заменяет их системными переменными. + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="$APP_DIR/data" +DESIRED_OWNER="1000:1000" +ENV_FILE="$APP_DIR/settings.env" + +# Проверьте, существует ли файл +if [ ! -f "$ENV_FILE" ]; then + echo "Error: Environment file not found at $ENV_FILE" + exit 1 +fi + +# Проверьте, установлено ли значение WEB_URL на "changeme". +if grep -Eq '^WEB_URL= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for WEB_URL detected. Setting from DEVICE_DOMAIN_NAME..." + + # Замените заполнитель доменным URL. + sed -i -E 's|^WEB_URL= *changeme$|WEB_URL="http://'"${DEVICE_DOMAIN_NAME}"':8762"|' "$ENV_FILE" + + echo "Updated WEB_URL in $ENV_FILE" +else + echo "WEB_URL is already set. No changes made." +fi + +# Проверьте, установлено ли значение API_BASE_URL на "changeme". +if grep -Eq '^API_BASE_URL= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for API_BASE_URL detected. Setting from DEVICE_DOMAIN_NAME..." + + # Замените заполнитель доменным URL. + sed -i -E 's|^API_BASE_URL= *changeme$|API_BASE_URL="http://'"${DEVICE_DOMAIN_NAME}"':8762"|' "$ENV_FILE" + + echo "Updated API_BASE_URL in $ENV_FILE" +else + echo "API_BASE_URL is already set. No changes made." +fi + +# Проверьте, установлено ли значение APP_DOMAIN на "changeme". +if grep -Eq '^APP_DOMAIN= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for APP_DOMAIN detected. Setting from DEVICE_DOMAIN_NAME..." + + # Замените заполнитель доменом + sed -i -E 's|^APP_DOMAIN= *changeme$|APP_DOMAIN="'"${DEVICE_DOMAIN_NAME}"':8762"|' "$ENV_FILE" + + echo "Updated APP_DOMAIN in $ENV_FILE" +else + echo "APP_DOMAIN is already set. No changes made." +fi + +# Проверьте, установлено ли значение ALLOWED_HOSTS на "changeme". +if grep -Eq '^ALLOWED_HOSTS= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for ALLOWED_HOSTS detected. Setting from DEVICE_DOMAIN_NAME..." + + # Замените заполнитель доменом + sed -i -E 's|^ALLOWED_HOSTS= *changeme$|ALLOWED_HOSTS="'"${DEVICE_DOMAIN_NAME}"'"|' "$ENV_FILE" + + echo "Updated ALLOWED_HOSTS in $ENV_FILE" +else + echo "ALLOWED_HOSTS is already set. No changes made." +fi + +# Проверьте, установлено ли значение CORS_ALLOWED_ORIGINS на "changeme". +if grep -Eq '^CORS_ALLOWED_ORIGINS= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for CORS_ALLOWED_ORIGINS detected. Setting from DEVICE_DOMAIN_NAME..." + + # Замените заполнитель источником на основе домена. + sed -i -E 's|^CORS_ALLOWED_ORIGINS= *changeme$|CORS_ALLOWED_ORIGINS="http://'"${DEVICE_DOMAIN_NAME}"':8762,http://'"${DEVICE_DOMAIN_NAME}"'"|' "$ENV_FILE" + + echo "Updated CORS_ALLOWED_ORIGINS in $ENV_FILE" +else + echo "CORS_ALLOWED_ORIGINS is already set. No changes made." +fi + +# Проверьте, установлено ли значение CSRF_TRUSTED_ORIGINS на "changeme". +if grep -Eq '^CSRF_TRUSTED_ORIGINS= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for CSRF_TRUSTED_ORIGINS detected. Setting from DEVICE_DOMAIN_NAME..." + + # Замените заполнитель источником на основе домена. + sed -i -E 's|^CSRF_TRUSTED_ORIGINS= *changeme$|CSRF_TRUSTED_ORIGINS="http://'"${DEVICE_DOMAIN_NAME}"':8762,http://'"${DEVICE_DOMAIN_NAME}"'"|' "$ENV_FILE" + + echo "Updated CSRF_TRUSTED_ORIGINS in $ENV_FILE" +else + echo "CSRF_TRUSTED_ORIGINS is already set. No changes made." +fi + +# Проверьте, установлено ли значение NGINX_HOST на "changeme". +if grep -Eq '^NGINX_HOST= *changeme$' "$ENV_FILE"; then + echo "Placeholder value for NGINX_HOST detected. Setting from DEVICE_DOMAIN_NAME..." + + # Замените заполнитель доменом + sed -i -E 's|^NGINX_HOST= *changeme$|NGINX_HOST="'"${DEVICE_DOMAIN_NAME}"'"|' "$ENV_FILE" + + echo "Updated NGINX_HOST in $ENV_FILE" +else + echo "NGINX_HOST is already set. No changes made." +fi + +exit 0 diff --git a/plane/settings.env b/plane/settings.env new file mode 100644 index 0000000..0fa6ab1 --- /dev/null +++ b/plane/settings.env @@ -0,0 +1,10 @@ +WEB_URL=changeme +API_BASE_URL=changeme +APP_DOMAIN=changeme +ALLOWED_HOSTS=changeme +CORS_ALLOWED_ORIGINS=changeme +CSRF_TRUSTED_ORIGINS=changeme +NGINX_HOST=changeme +APP_PROTOCOL=http +ENABLE_SIGNUP=0 +DEBUG=0 diff --git a/plausible/clickhouse/clickhouse-config.xml b/plausible/clickhouse/clickhouse-config.xml new file mode 100644 index 0000000..0dfaa70 --- /dev/null +++ b/plausible/clickhouse/clickhouse-config.xml @@ -0,0 +1,23 @@ + + + warning + true + + + + + + + + + + + + + + diff --git a/plausible/clickhouse/clickhouse-user-config.xml b/plausible/clickhouse/clickhouse-user-config.xml new file mode 100644 index 0000000..56cf1cd --- /dev/null +++ b/plausible/clickhouse/clickhouse-user-config.xml @@ -0,0 +1,8 @@ + + + + 0 + 0 + + + diff --git a/plausible/db-data/.gitkeep b/plausible/db-data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plausible/dfwebos-app.yml b/plausible/dfwebos-app.yml new file mode 100644 index 0000000..8aed1ae --- /dev/null +++ b/plausible/dfwebos-app.yml @@ -0,0 +1,40 @@ +manifestVersion: 1 +id: plausible +category: developer +name: Plausible Analytics +version: "3.2.0" +tagline: Простая в использовании и безопасная для конфиденциальности альтернатива Google Analytics. +description: >- + Plausible — это интуитивно понятный, легкий веб-аналитик с открытым исходным кодом. + Никаких файлов cookie и полное соответствие GDPR, CCPA и PECR. + + + ⚙️ Возможно, вам придется открыть доступ к Plausible в Интернете, чтобы использовать приложение по назначению на веб-сайтах. + Самый простой способ сделать это — использовать приложение Cloudflare Tunnel из магазина приложений DFWebOS и предоставить Plausible доступ в Интернет, используя свой собственный домен. +releaseNotes: >- + В этом выпуске добавлено несколько новых функций и исправлений: + + + - Общие ссылки теперь могут быть ограничены определенным сегментом данных. + - Разбивка по процентам посетителей теперь отображается во всех отчетах. + - Исправлена ошибка с кэшем конфигурации скриптов трекера, приводившая к ошибкам для некоторых кэшированных скриптов. + - Исправлены настройки нехватки памяти Clickhouse, которые применялись неправильно. + - Исправлена проблема, из-за которой гости сайта и члены команды в роли редактора не могли изменить домен сайта. + + + Полные примечания к выпуску доступны по адресу https://github.com/plausible/analytics/releases. +developer: Plausible Community Edition +website: https://plausible.io/ +repo: https://github.com/plausible/analytics +support: https://github.com/plausible/community-edition/issues +port: 9092 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +dependencies: [] +submitter: ~dibref-labter +submission: https://github.com/getumbrel/dfwebos-apps/pull/1371 diff --git a/plausible/docker-compose.yml b/plausible/docker-compose.yml new file mode 100644 index 0000000..5f4dcc5 --- /dev/null +++ b/plausible/docker-compose.yml @@ -0,0 +1,45 @@ +services: + app_proxy: + environment: + APP_HOST: plausible_plausible_1 + APP_PORT: 8000 + + plausible_db: + # Plausible v2.1.1 тестировался на PostgreSQL версий 15 и 16. + # https://github.com/plausible/analytics/blob/v2.1.1/.github/workflows/elixir.yml#L21-L32 + image: postgres:16-alpine@sha256:492898505cb45f9835acc327e98711eaa9298ed804e0bb36f29e08394229550d + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/db-data:/var/lib/postgresql/data + environment: + - POSTGRES_PASSWORD=postgres + + plausible_events_db: + image: clickhouse/clickhouse-server:24.12-alpine@sha256:cd450891db46cc6ffe313ca2b0fb7dbfb897a6873ca74a724cbe050a2cf62621 + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/event-data:/var/lib/clickhouse + - ${APP_DATA_DIR}/event-logs:/var/log/clickhouse-server + - ${APP_DATA_DIR}/clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro + - ${APP_DATA_DIR}/clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro + ulimits: + nofile: + soft: 262144 + hard: 262144 + environment: + - CLICKHOUSE_SKIP_USER_SETUP=1 + + plausible: + image: ghcr.io/plausible/community-edition:v3.2.0@sha256:3d8af8d4a1be32c3dcc5e8dc01496639d945edd9963827e18abe984dd6bda086 + restart: on-failure + user: "1000:1000" + command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" + depends_on: + - plausible_db + - plausible_events_db + environment: + - BASE_URL=http://${DEVICE_DOMAIN_NAME}:9092 + - SECRET_KEY_BASE=${APP_SEED} + - TOTP_VAULT_KEY=${APP_PLAUSIBLE_VAULT_KEY} diff --git a/plausible/event-data/.gitkeep b/plausible/event-data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plausible/event-logs/.gitkeep b/plausible/event-logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plausible/exports.sh b/plausible/exports.sh new file mode 100644 index 0000000..7be6a99 --- /dev/null +++ b/plausible/exports.sh @@ -0,0 +1,2 @@ +# Строка длиной 32 байта, используемая для шифрования неактивных секретов TOTP с использованием AES256-GCM. Не должно меняться при перезапуске приложения. +export APP_PLAUSIBLE_VAULT_KEY=$(openssl dgst -sha256 -binary <<< "$(derive_entropy "env-${app_entropy_identifier}-APP_VAULT_KEY")" | base64) \ No newline at end of file diff --git a/plex/data/config/.gitkeep b/plex/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plex/data/transcode/.gitkeep b/plex/data/transcode/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/plex/dfwebos-app.yml b/plex/dfwebos-app.yml new file mode 100644 index 0000000..381496d --- /dev/null +++ b/plex/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1 +id: plex +category: media +name: Plex +version: "1.43.0.10492" +tagline: Поток фильмов и телешоу +description: >- + Смотрите фильмы и телешоу, а также более 300 каналов прямого эфира мгновенно и без подписки. Смотрите телепередачи и фильмы в прямом эфире где угодно и с любого устройства с помощью Plex. + + + Plex использует сервер для размещения вашей медиатеки и приложений проигрывателя для воспроизведения мультимедиа. Добавляйте, получайте доступ и делитесь всеми важными для вас развлечениями практически на любом устройстве. + + + ⚠️ Если при попытке доступа к приложению Plex вы столкнулись с ошибкой «не авторизовано», выполните действия, описанные в этом руководстве: https://community.umbrel.com/t/fixing-plexs-not-authorized-error/10523 +developer: Plex +website: https://www.plex.tv/ +dependencies: [] +repo: "" +support: https://www.plex.tv/ +port: 32400 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: /web +defaultUsername: "" +defaultPassword: "" +torOnly: false +permissions: + - STORAGE_DOWNLOADS + - GPU +releaseNotes: >- + Это обновление включает в себя несколько улучшений и исправлений ошибок: + - Добавлена поддержка квадратных изображений и четких изображений логотипов для фильмов и телешоу. + - Добавлена поддержка локальных ресурсов SquareArt и ClearLogo для фильмов и телешоу. + - Обновлен веб-интерфейс до версии 4.156.0. + - Исправлено обнаружение каналов EAC3 7.1 (каналы теперь распознаются правильно) + - Исправлены ошибки транскодирования видео mpeg2 и профиля кодека AAC. + - Исправлены артефакты зеленой рамки при перекодировании в HEVC. + - Исправлены ошибки обработки звука aac_latm и отметки времени в прямых телетрансляциях. + - Исправлены сбои музыкальной библиотеки во время операций сопоставления. + - Исправлено зависание обновления метаданных NFO. + - Исправлено создание миниатюр для повернутых видео. + - Исправлены проблемы с синхронизацией транскодирования субтитров WebVTT. + + + Полные примечания к выпуску доступны по адресу https://www.videohelp.com/software/Plex. +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/commit/60878f278d544b204d8e7c96240c797f43a9b319 diff --git a/plex/docker-compose.yml b/plex/docker-compose.yml new file mode 100644 index 0000000..4a14f1b --- /dev/null +++ b/plex/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.7" + +services: + server: + image: linuxserver/plex:1.43.0@sha256:a27f1ce1e1d14cd3627ed217f042bf8de0f796ed274fb27b2dc971ae22a64b95 + restart: on-failure + hostname: "${DEVICE_HOSTNAME}" + network_mode: host + environment: + - PUID=1000 + - PGID=1000 + - VERSION=docker + # В настоящее время работает в режиме хост-сети, чтобы обеспечить обнаружение UPnP (сервер Plex DLNA) и чтобы Docker не жаловался на использование порта 1900/udp (может быть общим, например, с помощью Home Assistant). + # порты: + # - 32400:32400 + # # Плекс Компаньон + # - 3005:3005/tcp + # # Roku через Plex Companion + # - 8324:8324/tcp + # # Сервер Plex DLNA + # - 32469:32469/tcp + # - 1900:1900/udp + # # Обнаружение сети + # - 32410:32410/udp + # - 32412:32412/udp + # - 32413:32413/udp + # - 32414:32414/udp + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${APP_DATA_DIR}/data/transcode:/transcode + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads diff --git a/plex/exports.sh b/plex/exports.sh new file mode 100644 index 0000000..392d708 --- /dev/null +++ b/plex/exports.sh @@ -0,0 +1,6 @@ +# Поскольку Plex не использует прокси приложения +# Возникла ошибка при генерации Tor HS. +# Этот 'fix' создаст поддельное имя хоста HS. +PLEX_TOR_DIR="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}" +mkdir -p "${PLEX_TOR_DIR}" +touch "${PLEX_TOR_DIR}/hostname" diff --git a/pocketbase/data/data/.gitkeep b/pocketbase/data/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pocketbase/data/hooks/.gitkeep b/pocketbase/data/hooks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pocketbase/data/migrations/initial_superuser.js b/pocketbase/data/migrations/initial_superuser.js new file mode 100644 index 0000000..8d1fce7 --- /dev/null +++ b/pocketbase/data/migrations/initial_superuser.js @@ -0,0 +1,22 @@ +// https://pocketbase.io/docs/js-migrations/#creating-initial-superuser +// pb_migrations/1687801090_initial_superuser.js + +migrate((app) => { + let superusers = app.findCollectionByNameOrId("_superusers") + + let record = new Record(superusers) + + // note: the values can be eventually loaded via $os.getenv(key) + // or from a special local config file + record.set("email", "dfwebos@dfwebos.local") + record.set("password", "dfwebos-pocketbase") + + app.save(record) +}, (app) => { // optional revert operation + try { + let record = app.findAuthRecordByEmail("_superusers", "dfwebos@dfwebos.local") + app.delete(record) + } catch { + // silent errors (probably already deleted) + } +}) diff --git a/pocketbase/data/public/.gitkeep b/pocketbase/data/public/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pocketbase/dfwebos-app.yml b/pocketbase/dfwebos-app.yml new file mode 100644 index 0000000..080c6d5 --- /dev/null +++ b/pocketbase/dfwebos-app.yml @@ -0,0 +1,59 @@ +manifestVersion: 1 +id: pocketbase +name: PocketBase +tagline: Серверная часть с открытым исходным кодом для вашего следующего SaaS- и мобильного приложения в 1 файле +category: developer +version: "0.37.4" +port: 5400 +description: >- + PocketBase — это серверная часть с открытым исходным кодом, состоящая из встроенной базы данных (SQLite) с подписками в реальном времени, встроенным управлением аутентификацией, удобной информационной панелью интерфейс и простым REST в стиле API. + + + ⏱️ База данных в реальном времени + + Встроенная высокопроизводительная база данных с построителем схем, проверкой данных, подписками в реальном времени и простым в использовании API REST. + + + 🪪 Аутентификация + + Управляйте пользователями своего приложения и обрабатывайте электронную почту/пароли и регистрации OAuth2 (Google, Facebook, GitHub, GitLab) без проблем. + + + 💾 Хранилище файлов + + Разумно храните файлы локально или в хранилище S3. Легко прикрепляйте медиафайлы к записям базы данных и создавайте превью на лету. + + + 🧩 Выдвижной + + Используйте как отдельное приложение ИЛИ как платформу, которую вы можете расширить с помощью хуков Go и JavaScript для создания собственного портативного бэкэнда. +developer: PocketBase +website: https://pocketbase.io/ +defaultUsername: "dfwebos@dfwebos.local" +defaultPassword: "dfwebos-pocketbase" +submitter: Sharknoon +submission: https://github.com/getumbrel/dfwebos-apps/pull/1082 +repo: https://github.com/pocketbase/pocketbase +support: https://github.com/pocketbase/pocketbase/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: /_/ +dependencies: [] +releaseNotes: >- + ⚠️ Этот выпуск включает исправление безопасности, связанное с уязвимостью связывания OAuth2, существовавшей до взлома. + + + Этот выпуск включает исправления безопасности и несколько улучшений: + - Исправлена уязвимость привязки OAuth2 перед взломом. + - Добавлена проверка фиктивного пароля bcrypt, чтобы минимизировать атаки по времени перечисления, когда регистрация отключена. + - Исправлен формат сетевого адреса SMTP IPv6. + - Исправлен выбор автозаполнения, который неправильно обновлял базовое входное значение. + - Добавлен контейнер прокрутки списка резервных копий. + - Оптимизирована загрузка модальных данных при записи и предварительном просмотре, чтобы минимизировать скачки макета. + - Обновлены поставщики Bitbucket, GitHub, GitLab и Gitea/Forgejo OAuth2, чтобы отразить недавние изменения API. + + + Полные примечания к выпуску можно найти по адресу https://github.com/pocketbase/pocketbase/releases. \ No newline at end of file diff --git a/pocketbase/docker-compose.yml b/pocketbase/docker-compose.yml new file mode 100644 index 0000000..c655957 --- /dev/null +++ b/pocketbase/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: pocketbase_app_1 + APP_PORT: 8090 + PROXY_AUTH_ADD: "false" + + app: + image: ghcr.io/muchobien/pocketbase:0.37.4@sha256:aed00310ab6d78aca1e00f1c800e198841e5d3a7371d887f3da5f773612da2a5 + # Pocketbase должен запускаться от имени пользователя root + # user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/data:/pb_data + - ${APP_DATA_DIR}/data/public:/pb_public + - ${APP_DATA_DIR}/data/hooks:/pb_hooks + - ${APP_DATA_DIR}/data/migrations:/pb_migrations diff --git a/portainer/default-password b/portainer/default-password new file mode 100644 index 0000000..c616260 --- /dev/null +++ b/portainer/default-password @@ -0,0 +1 @@ +changeme \ No newline at end of file diff --git a/portainer/dfwebos-app.yml b/portainer/dfwebos-app.yml new file mode 100644 index 0000000..5981c0e --- /dev/null +++ b/portainer/dfwebos-app.yml @@ -0,0 +1,71 @@ +manifestVersion: 1.1 +id: portainer +category: developer +name: Portainer +version: "2.39.1" +tagline: Запускайте собственные контейнеры Docker на своем DFWebOS. +description: >- + ⚠️ Обязательно используйте для своих стеков и контейнеров только именованные тома Docker. Данные в томах, подключенных к привязке + будут потеряны при перезапуске или обновлении приложения Portainer. + + + ⚠️ Следите за конфликтами портов между вашими пользовательскими контейнерами Docker и вашими приложениями DFWebOS. + + + Portainer — это идеальное решение для управления Docker, которое упрощает запуск контейнеров Docker и Docker Compose. + настройки на вашем DFWebOS, предоставляя вам полный контроль. + + + Portainer обеспечивает плавное управление контейнерами, позволяя эффективно отслеживать, запускать, останавливать и + изменять контейнеры, сети, тома и образы. Вы также можете развертывать многоконтейнерные приложения с помощью Docker Compose. + с легкостью. + + + 🛠️ Portainer на DFWebOS предназначен для опытных пользователей. Чтобы избежать проблем, следуйте этим рекомендациям: + + + 1. Сохранение данных. Обязательно используйте для своих стеков и контейнеров только тома с именем Docker. Данные в привязке + тома будут потеряны при перезапуске или обновлении приложения Portainer. + + + 2. Управление портами: следите за потенциальными конфликтами портов между вашими пользовательскими контейнерами и сервисными контейнерами umbrelOS. + приложения, которые вы установили из DFWebOS App Store или магазинов приложений сообщества, а также любые приложения, которые вы собираетесь установить в будущем. + + + 3. Политика перезапуска контейнера. Установите для контейнеров политику перезапуска «если не остановлен» или «всегда». Это позволит вашим контейнерам + для автоматического перезапуска при перезапуске или обновлении приложения Portainer. + + + 4. Доступ к контейнерам через Интернет. Получите доступ к своим пользовательским контейнерам в браузере по адресу DFWebOS.local:PORT_NUMBER. Например, для контейнера + с веб-сайтом интерфейс, работающим на порту 4545, перейдите по адресу DFWebOS.local:4545, чтобы получить к нему доступ. +website: https://portainer.io +dependencies: [] +repo: https://github.com/portainer/portainer +support: https://github.com/portainer/portainer/issues +port: 9000 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "admin" +defaultPassword: "changeme" +releaseNotes: >- + Это обновление включает в себя несколько исправлений и улучшений безопасности: + - Исправлена проблема, из-за которой стеки Docker на основе Git из GitLab не проходили проверку для пользователей, не являющихся администраторами. + - Исправлена проблема, из-за которой группы отсутствовали после обновления. + - Исправлена ошибка, из-за которой отображались не все контейнеры сервиса. + - Исправлена проблема, из-за которой пользователи не могли добавлять новые среды в существующую группу с множеством сред. + - Исправлена проблема, из-за которой кнопка «Редактировать приложение» была отключена для пользователей, не являющихся администраторами. + - Исправлена проблема, из-за которой пользователи не могли просматривать свои контейнеры или видели пустую панель мониторинга. + - Исправлена проблема, из-за которой содержимое файла пользовательского шаблона было доступно неавторизованным пользователям. + - Повторно включены реестры образов для FIPS. + - Устранено множество уязвимостей безопасности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/portainer/portainer/releases.. +permissions: + - GPU +developer: Portainer +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/pull/774 diff --git a/portainer/docker-compose.yml b/portainer/docker-compose.yml new file mode 100644 index 0000000..f292d4f --- /dev/null +++ b/portainer/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: portainer_portainer_1 + APP_PORT: 9000 + + docker: + image: docker:27.2.0-dind@sha256:f9f72ad901a78f27be922b2d320bbc263174f12919c1b37e6a01f828fa904565 + privileged: true + network_mode: host + stop_grace_period: 1m + restart: on-failure + environment: + DOCKER_ENSURE_BRIDGE: "dind0:10.32.0.1/16" + entrypoint: /entrypoint.sh + command: > + dockerd + --bridge dind0 + --data-root /data/data + --exec-root /data/exec + --host unix:///data/docker.sock + --pidfile /data/docker.pid + volumes: + - ${APP_DATA_DIR}/entrypoint.sh:/entrypoint.sh + - ${APP_DATA_DIR}/data/docker:/data + + portainer: + image: portainer/portainer-ce:2.39.1@sha256:1ae8e65d50ca5498cb2c33e617495a1e3ef245b0d2392b4a44c70ae09b822891 + command: --host unix:///var/run/docker.sock --admin-password-file=/default-password + restart: on-failure + volumes: + - ${APP_DATA_DIR}/default-password:/default-password + - ${APP_DATA_DIR}/data/portainer:/data + - ${APP_DATA_DIR}/data/docker:/var/run diff --git a/portainer/entrypoint.sh b/portainer/entrypoint.sh new file mode 100755 index 0000000..71d910f --- /dev/null +++ b/portainer/entrypoint.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# Этот хак можно удалить, если https://github.com/docker-library/docker/pull/444 будет объединен. + +# Удалите pid-файл docker, если он существует, чтобы обеспечить запуск Docker после неудачного завершения работы. +pidfile="/var/run/docker.pid" +if [[ -f "${pidfile}" ]] +then + rm -f "${pidfile}" +fi + +# Используйте nftables в качестве бэкэнда для iptables +for command in iptables iptables-restore iptables-restore-translate iptables-save iptables-translate +do + ln -sf /sbin/xtables-nft-multi /sbin/$command +done + +# Убедитесь, что мост с указанным именем существует. +ensure_bridge_exists() { + local name="${1}" + local ip_range="${2}" + + # Проверьте, существует ли мост уже + if ip link show "${name}" &>/dev/null + then + echo "Bridge '${name}' already exists. Skipping creation." + ip addr show "${name}" + return + fi + + echo "Bridge '${name}' does not exist. Creating..." + ip link add "${name}" type bridge + ip addr add "${ip_range}" dev "${name}" + ip link set "${name}" up + + echo "Bridge '${name}' is now up with IP range '${ip_range}'." + ip addr show "${name}" +} + +if [[ "${DOCKER_ENSURE_BRIDGE}" != "" ]] +then + bridge="${DOCKER_ENSURE_BRIDGE%%:*}" + ip_range="${DOCKER_ENSURE_BRIDGE#*:}" + ensure_bridge_exists "${bridge}" "${ip_range}" +fi + +exec dockerd-entrypoint.sh $@ diff --git a/portainer/hooks/pre-start b/portainer/hooks/pre-start new file mode 100755 index 0000000..199a463 --- /dev/null +++ b/portainer/hooks/pre-start @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" + +# Удалите устаревший файл docker.pid, который может вызвать проблемы после перебоев в подаче электроэнергии или сбоев. +rm -f "${APP_DATA_DIR}/docker/docker.pid" diff --git a/poznote/data/.gitkeep b/poznote/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/poznote/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/poznote/dfwebos-app.yml b/poznote/dfwebos-app.yml new file mode 100644 index 0000000..4c52ab2 --- /dev/null +++ b/poznote/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: poznote +name: Poznote +tagline: Мощное приложение для заметок +category: files +version: "6.6.1" +port: 8389 +description: >- + 📝 Poznote — это понятное и целенаправленное приложение, призванное помочь пользователям собирать, структурировать и уточнять информацию в гибком рабочем пространстве. Он сочетает в себе текстовый редактор с форматированием Markdown для поддержки как быстрого наброска, так и длинного письма, позволяя мыслям расти и меняться без каких-либо проблем. + + + Интерфейс обеспечивает гибкую организацию с помощью тегов, поиска и настраиваемых рабочих пространств, поэтому идеи легко найти даже при расширении коллекции. Poznote поддерживает вложения изображений, документов и других файлов, что позволяет хранить связанные материалы вместе в одной заметке. + + + Он включает в себя инструменты для создания контрольных списков, задач и напоминаний, которые интегрируются непосредственно в процесс написания, а не кажутся отдельными модулями. Встроенный инструмент для рисования и построения диаграмм, основанный на интеграции Excalidraw, позволяет пользователям рисовать концепции, создавать диаграммы или визуализировать идеи вместе с текстом. + + + Заметки можно редактировать, восстанавливать из корзины, экспортировать для безопасного хранения или дублировать, чтобы использовать в качестве шаблонов для повторяющихся структур. Poznote стремится создать среду письма, в которой текст, медиа, идеи и задачи сосуществуют естественным образом, предлагая оптимизированный способ управления информацией с ясностью и непрерывностью. +developer: Timothé Poznanski +website: https://poznote.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/4268 +repo: https://github.com/timothepoznanski/poznote +support: https://github.com/timothepoznanski/poznote/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Что нового в этом выпуске: + - Исправлена проблема, из-за которой панель сортировки тегов не отображалась на рабочем столе. + - Удалено живое форматирование Markdown из-за непредвиденных побочных эффектов. + - Исправлена строка поиска при прокрутке + - Улучшена вставка таблицы Markdown с возможностью нажать Enter, чтобы создать новую строку. + - Добавлено отображение вложений и улучшена обработка мультимедиа в общедоступных заметках. + - Добавлена возможность выравнивать текст в столбцах таблицы по левому, правому или центру. + - Добавлена новая страница справки по синтаксису Markdown с живым поиском и фильтрацией. + - Добавлена поддержка JWT носителя OIDC для REST API с автоматической подготовкой пользователей. + - Добавлен селектор для фильтрации заметок по типу в Менеджере заметок. + - Исправлены различные ошибки интерфейс и проблемы с рендерингом Markdown. + + + Полные примечания к выпуску можно найти по адресу https://github.com/timothepoznanski/poznote. +dependencies: [] +path: "" +defaultUsername: "admin_change_me" +defaultPassword: "admin" diff --git a/poznote/docker-compose.yml b/poznote/docker-compose.yml new file mode 100644 index 0000000..693737f --- /dev/null +++ b/poznote/docker-compose.yml @@ -0,0 +1,35 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: poznote_app_1 + APP_PORT: 80 + + app: + image: ghcr.io/timothepoznanski/poznote:6.6.1@sha256:742c2734f2c0e6d2b371c9152db17f7713146ad5bc58038369278c8e2ff918e7 + restart: on-failure + environment: + SQLITE_DATABASE: /var/www/html/data/database/poznote.db + HTTP_WEB_PORT: 80 + volumes: + - ${APP_DATA_DIR}/data:/var/www/html/data + healthcheck: + test: ["CMD", "wget", "--quiet", "--tries=1", "--timeout=5", "-O", "/dev/null", "http://127.0.0.1/api/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s + + mcp: + image: ghcr.io/timothepoznanski/poznote-mcp:6.6.1@sha256:28a79ab9c0464bbbe385422f8c34803e1f82a1109a008b4b834b55f6e7466022 + restart: on-failure + environment: + POZNOTE_API_URL: http://poznote_app_1:80/api/v1 + POZNOTE_DEBUG: ${POZNOTE_DEBUG:-false} + ports: + - "8340:8045" + volumes: + - "${APP_DATA_DIR}/data:/var/www/html/data:ro" + depends_on: + - app diff --git a/privatebin/data/privatebin-data/.gitkeep b/privatebin/data/privatebin-data/.gitkeep new file mode 100644 index 0000000..d3f5a12 --- /dev/null +++ b/privatebin/data/privatebin-data/.gitkeep @@ -0,0 +1 @@ + diff --git a/privatebin/dfwebos-app.yml b/privatebin/dfwebos-app.yml new file mode 100644 index 0000000..0aeba03 --- /dev/null +++ b/privatebin/dfwebos-app.yml @@ -0,0 +1,67 @@ +manifestVersion: 1 +id: privatebin +name: PrivateBin +tagline: Минималистичный онлайн-пастер с открытым исходным кодом. +category: files +version: "2.0.3" +port: 3070 +description: >- + ⚠️ Для работы PrivateBin требуется HTTPS и доступ к общедоступному Интернету. Самый простой способ сделать это — с помощью приложения Cloudflare Tunnel или приложения Nginx Proxy Manager в магазине приложений DFWebOS. + + + PrivateBin — это минималистичный и зашифрованный сервис вставки с открытым исходным кодом. + Он позволяет пользователям безопасно обмениваться текстом или фрагментами кода с помощью сквозного шифрования, гарантируя, что только предполагаемый получатель сможет прочитать содержимое. + Сервер, на котором размещен PrivateBin, не может расшифровать или получить доступ к передаваемым данным, что обеспечивает высокий уровень конфиденциальности. + + + Вот некоторые ключевые особенности PrivateBin: + + + 🔒 Сквозное шифрование: все данные шифруются в браузере перед отправкой на сервер. Сервер никогда не видит незашифрованный контент. + + + 🔥 Срок действия и сжигание после прочтения. Пользователи могут устанавливать срок действия своих вставок или выбрать опцию «сжигание после прочтения», при которой контент самоуничтожается после однократного просмотра. + + + 👤 Отсутствие учетных записей пользователей: PrivateBin не требует регистрации или аутентификации пользователя, что делает его идеальным для анонимного обмена конфиденциальной информацией. + + + 🛡️ Защита паролем: пользователи могут добавить дополнительный уровень безопасности, установив пароль для вставки. + + + 📜 Подсветка синтаксиса: PrivateBin поддерживает подсветку синтаксиса для языков программирования, что делает его полезным для обмена фрагментами кода. + + + 🏠 Самостоятельное размещение: PrivateBin в качестве автономного решения предлагает полный контроль над тем, где хранятся данные, и возможность интегрировать их с различными серверными средами. + + + 🚫 Нет метаданных: в отличие от некоторых других сервисов Pastebin, PrivateBin не хранит IP-адреса или какие-либо идентифицируемые метаданные о пользователях или вставках. + + + Он популярен в сообществах, заботящихся о конфиденциальности, поскольку позволяет безопасно обмениваться фрагментами, не оставляя следов. +developer: PrivateBin Community +website: https://privatebin.info/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/1657 +repo: https://github.com/PrivateBin/PrivateBin +support: https://github.com/PrivateBin/PrivateBin/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + 🚨 В этом выпуске устранены критические проблемы безопасности, включая уязвимости произвольного включения файлов и очистки имен файлов. + + + Ключевые исправления безопасности в этом выпуске: + - Исправлена уязвимость произвольного включения файлов при включенном переключении шаблонов. + - Исправлена проблема с санацией имен файлов, которая могла позволить использовать вредоносные имена файлов для внедрения HTML. + - Исправлена проблема с созданием новых вставок из клонированных при прикреплении файлов JSON. + + + Полные примечания к выпуску можно найти по адресу https://github.com/PrivateBin/PrivateBin/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/privatebin/docker-compose.yml b/privatebin/docker-compose.yml new file mode 100644 index 0000000..63b5924 --- /dev/null +++ b/privatebin/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: privatebin_server_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + server: + image: privatebin/nginx-fpm-alpine:2.0.3@sha256:f8fcca3d71dfe983c8404dc6dbcc140ab12cebe8d4ee62329254c79b5934b1e8 + user: "1000:1000" + read_only: true + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/privatebin-data:/srv/data diff --git a/prowlarr/data/config/.gitkeep b/prowlarr/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/prowlarr/dfwebos-app.yml b/prowlarr/dfwebos-app.yml new file mode 100644 index 0000000..6a2bf8c --- /dev/null +++ b/prowlarr/dfwebos-app.yml @@ -0,0 +1,57 @@ +manifestVersion: 1 +id: prowlarr +category: media +name: Prowlarr +version: "2.3.5.5327" +tagline: "Prowlarr — менеджер индексаторов/прокси." +description: >- + Prowlarr — это менеджер/прокси-сервер индексатора, созданный на основе популярного базового стека *arr .net/reactjs для интеграции с различными приложениями PVR. + Prowlarr поддерживает управление как торрент-трекерами, так и индексаторами Usenet. Он легко интегрируется с Lidarr, Mylar3, Radarr, Readarr и Sonarr, предлагая полное управление вашими индексаторами без необходимости настройки индексатора для каждого приложения (мы делаем все это). + + + 🛠️ ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + + Prowlarr на DFWebOS автоматически: + + 1. Подключитесь к другим приложениям Serverr и загрузите клиенты: + + Prowlarr будет легко интегрироваться с другими приложениями Servarr (например, Radarr, Sonarr и т. д.) и загружать клиенты (например, Transmission, qBittorrent и т. д.), установленные из DFWebOS App Store. Просто установите предпочитаемые вами приложения, и Prowlarr будет управлять соединениями за вас. + + + 2. Настройте Flaresolver: + + Prowlarr поставляется с предварительно настроенным FlareSolverr. Чтобы использовать его, просто добавьте тег «flaresolverr» ко всем индексаторам, которым он требуется. +developer: Prowlarr +website: https://prowlarr.com/ +dependencies: + - transmission +repo: https://github.com/Prowlarr/Prowlarr +support: https://github.com/Prowlarr/Prowlarr/issues +port: 9696 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Это обновление включает в себя несколько исправлений ошибок и улучшений: + - Исправлена загрузка резервных копий, если путь содержит косую черту. + - Исправлен манифест PWA с базой URL-адресов и добавлена поддержка имени экземпляра в манифесте PWA. + - Кодировка данных фиксированной формы для индексаторов, отличных от UTF8. + - Исправлены проблемы с анализом URL-адресов в некоторых системах из-за локали. + - Исправлены ограничения на перенаправление после входа в систему только по локальным путям. + - Обновлены селекторы макета SceneTime. + - Исправлен вызов Nebulance API. + - Добавлен новый индексатор: AnimeZ. + - Различные обновления перевода + + + Полные примечания к выпуску можно найти по адресу https://github.com/Prowlarr/Prowlarr/releases. +torOnly: false +permissions: + - STORAGE_DOWNLOADS +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/commit/60878f278d544b204d8e7c96240c797f43a9b319 diff --git a/prowlarr/docker-compose.yml b/prowlarr/docker-compose.yml new file mode 100644 index 0000000..555cc98 --- /dev/null +++ b/prowlarr/docker-compose.yml @@ -0,0 +1,52 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: prowlarr_server_1 + APP_PORT: 9696 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: linuxserver/prowlarr:version-2.3.5.5327@sha256:6df73ab9e99d0dbaad27c39d8a47c600333eebea80fcb56253a0bb8b630c8115 + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + restart: on-failure + + indexer_proxy: + image: flaresolverr/flaresolverr:v3.4.6@sha256:7962759d99d7e125e108e0f5e7f3cdbcd36161776d058d1d9b7153b92ef1af9e + restart: on-failure + + mac: + image: getumbrel/media-app-configurator:v1.3.0@sha256:67e75dd9f5a14402b7816119a8e20189bc2465484cea077909d164687e59742b + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/config:/config + environment: + APP_ID: "prowlarr" + APP_URL: "http://prowlarr_server_1:9696" + FLARESOLVERR_URL: "http://prowlarr_indexer_proxy_1:8191" + TRANSMISSION_HOST: "transmission_server_1" + TRANSMISSION_PORT: 9091 + RADARR_URL: "http://radarr_server_1:7878" + RADARR_CONFIG_XML: "${APP_PROWLARR_RADARR_CONFIG_XML}" + LIDARR_URL: "http://lidarr_server_1:8686" + LIDARR_CONFIG_XML: "${APP_PROWLARR_LIDARR_CONFIG_XML}" + SONARR_URL: "http://sonarr_server_1:8989" + SONARR_CONFIG_XML: "${APP_PROWLARR_SONARR_CONFIG_XML}" + READARR_URL: "http://readarr_server_1:8787" + READARR_CONFIG_XML: "${APP_PROWLARR_READARR_CONFIG_XML}" + # дополнительный клиент загрузки qBittorrent + QBITTORRENT_INSTALLED: ${APP_PROWLARR_QBITTORRENT_INSTALLED:-"false"} + QBITTORRENT_HOST: "qbittorrent_server_1" + QBITTORRENT_PORT: 8080 + # дополнительный клиент загрузки SABnzbd + SABNZBD_INSTALLED: ${APP_PROWLARR_SABNZBD_INSTALLED:-"false"} + SABNZBD_HOST: "sabnzbd_web_1" + SABNZBD_PORT: 8080 + SABNZBD_API_KEY: ${APP_PROWLARR_SABNZBD_API_KEY:-""} diff --git a/prowlarr/exports.sh b/prowlarr/exports.sh new file mode 100644 index 0000000..969d771 --- /dev/null +++ b/prowlarr/exports.sh @@ -0,0 +1,18 @@ +export APP_PROWLARR_RADARR_CONFIG_XML=$(cat "${DFWEBOS_ROOT}/app-data/radarr/data/config/config.xml" 2>/dev/null || echo "") +export APP_PROWLARR_LIDARR_CONFIG_XML=$(cat "${DFWEBOS_ROOT}/app-data/lidarr/data/config/config.xml" 2>/dev/null || echo "") +export APP_PROWLARR_SONARR_CONFIG_XML=$(cat "${DFWEBOS_ROOT}/app-data/sonarr/data/config/config.xml" 2>/dev/null || echo "") +export APP_PROWLARR_READARR_CONFIG_XML=$(cat "${DFWEBOS_ROOT}/app-data/readarr/data/config/config.xml" 2>/dev/null || echo "") + +# Проверьте, установлены ли qBittorrent и SABnzbd. +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +if echo "$installed_apps" | grep --quiet 'qbittorrent'; then + export APP_PROWLARR_QBITTORRENT_INSTALLED="true" +fi + +if echo "$installed_apps" | grep --quiet 'sabnzbd'; then + export APP_PROWLARR_SABNZBD_INSTALLED="true" + # экспортируйте SABNZBD_API_KEY, который имеет формат: + # api_key = 98e3444f7fab45e592958673bf656g3 + export APP_PROWLARR_SABNZBD_API_KEY=$(grep -Po 'api_key = \K.*' "${DFWEBOS_ROOT}/app-data/sabnzbd/data/config/sabnzbd.ini") +fi diff --git a/public-pool-web/data/postgres/.gitkeep b/public-pool-web/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/public-pool-web/data/redis/.gitkeep b/public-pool-web/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/public-pool-web/dfwebos-app.yml b/public-pool-web/dfwebos-app.yml new file mode 100644 index 0000000..8420bf8 --- /dev/null +++ b/public-pool-web/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: public-pool-web +category: bitcoin +name: Public Pool's Web +version: "0.1.0" +tagline: Современный веб-интерфейс для управления данными вашего публичного пула. +description: > + Веб-сайт Public Pool предоставляет элегантный и удобный интерфейс для управления и мониторинга. + данные вашего публичного пула. + + + Созданный с использованием Rails 8.0 и современных веб-технологий, он предлагает + Обновления в реальном времени, подробная аналитика и комплексные функции управления пулом. + + + Особенности: + - Добавить пользователя + - Добавить работника + - Изменить тему + - Веб-интерфейс Sidekiq (для проверки фоновых заданий, обычно с ним не связывайтесь) + + + ⚠️Примечания: + - Измените IP-адрес хоста (и необходим порт) вашего пула. (Публичный пул еще не раскрывает свой IP) + - Если вы измените IP-адрес хоста и порт пула, перезапустите приложение в ОС DFWebOS. В противном случае Sidekiq их не увидит. + + + Это хобби-проект! +developer: martinbarilik +website: https://github.com/martinbarilik/public-pool-web +dependencies: + - public-pool +repo: https://github.com/martinbarilik/public-pool-web +support: https://github.com/martinbarilik/public-pool-web/discussions +port: 2021 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "/" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Основные моменты этого выпуска: + - исправлена проблема с неправильным начальным созданием базы данных при новой установке. + - обновлен PostgresSQL до версии 17.6. +submitter: "martinbarilik" +submission: https://github.com/getumbrel/dfwebos-apps/pull/3159 diff --git a/public-pool-web/docker-compose.yml b/public-pool-web/docker-compose.yml new file mode 100644 index 0000000..ce4dbcc --- /dev/null +++ b/public-pool-web/docker-compose.yml @@ -0,0 +1,58 @@ +services: + app_proxy: + environment: + APP_HOST: public-pool-web_rails-app_1 + APP_PORT: 3000 + + rails-app: + image: martinbarilik/public-pool-web:0.1.0@sha256:943270bc7e5c01ee713f74fec77c3e159db8f3b599e71f324b08d39e8d88a37c + user: "1000:1000" + environment: + - RAILS_MASTER_KEY=${APP_PUBLIC_POOL_WEB_MASTER_KEY} + - DATABASE_URL=${APP_PUBLIC_POOL_WEB_DATABASE_URL} + - REDIS_URL=${APP_PUBLIC_POOL_WEB_REDIS_URL} + depends_on: + db: + condition: service_healthy + redis: + condition: service_healthy + + db: + image: postgres:17.6@sha256:8a56bef4c60bef3d26193cb9d810fce93def8fd0c459f4a9b14240fbd7559a1d + user: "1000:1000" + environment: + - POSTGRES_USER=${APP_PUBLIC_POOL_WEB_POSTGRES_USERNAME} + - POSTGRES_PASSWORD=${APP_PUBLIC_POOL_WEB_POSTGRES_PASSWORD} + - POSTGRES_DB=${APP_PUBLIC_POOL_WEB_POSTGRES_DBNAME} + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${APP_PUBLIC_POOL_WEB_POSTGRES_USERNAME} -d ${APP_PUBLIC_POOL_WEB_POSTGRES_DBNAME}"] + interval: 10s + timeout: 5s + retries: 5 + + redis: + image: redis:7.4.2@sha256:fbdbaea47b9ae4ecc2082ecdb4e1cea81e32176ffb1dcf643d422ad07427e5d9 + user: "1000:1000" + healthcheck: + test: ["CMD-SHELL", "redis-cli ping"] + interval: 10s + timeout: 5s + retries: 5 + volumes: + - ${APP_DATA_DIR}/data/redis:/data + + sidekiq: + image: martinbarilik/public-pool-web:0.1.0@sha256:943270bc7e5c01ee713f74fec77c3e159db8f3b599e71f324b08d39e8d88a37c + user: "1000:1000" + environment: + - RAILS_MASTER_KEY=${APP_PUBLIC_POOL_WEB_MASTER_KEY} + - REDIS_URL=${APP_PUBLIC_POOL_WEB_REDIS_URL} + - DATABASE_URL=${APP_PUBLIC_POOL_WEB_DATABASE_URL} + command: bundle exec sidekiq + depends_on: + - redis + - db + - rails-app + diff --git a/public-pool-web/exports.sh b/public-pool-web/exports.sh new file mode 100644 index 0000000..509bb7d --- /dev/null +++ b/public-pool-web/exports.sh @@ -0,0 +1,9 @@ +export APP_PUBLIC_POOL_WEB_POSTGRES_USERNAME="public_pool_web" +export APP_PUBLIC_POOL_WEB_POSTGRES_PASSWORD="SlyRoundaboutWay" +export APP_PUBLIC_POOL_WEB_POSTGRES_PORT="5432" +export APP_PUBLIC_POOL_WEB_POSTGRES_DBNAME="public_pool_web_production" +# URL кодирует символы подчеркивания (%5F) в имени хоста для удовлетворения строгого анализа URI. +export APP_PUBLIC_POOL_WEB_POSTGRES_HOST="public-pool-web%5Fdb%5F1" +export APP_PUBLIC_POOL_WEB_DATABASE_URL="postgres://${APP_PUBLIC_POOL_WEB_POSTGRES_USERNAME}:${APP_PUBLIC_POOL_WEB_POSTGRES_PASSWORD}@${APP_PUBLIC_POOL_WEB_POSTGRES_HOST}:${APP_PUBLIC_POOL_WEB_POSTGRES_PORT}/${APP_PUBLIC_POOL_WEB_POSTGRES_DBNAME}" +export APP_PUBLIC_POOL_WEB_REDIS_URL="redis://public-pool-web_redis_1:6379/0" +export APP_PUBLIC_POOL_WEB_MASTER_KEY="dbd1d33e19a5e0ca9b28c2c55803afef" diff --git a/public-pool/data/database/.gitkeep b/public-pool/data/database/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/public-pool/data/proxy/nginx.conf b/public-pool/data/proxy/nginx.conf new file mode 100644 index 0000000..8aef341 --- /dev/null +++ b/public-pool/data/proxy/nginx.conf @@ -0,0 +1,11 @@ +server { + listen 80; + + location / { + proxy_pass http://public-pool_web_1:80; + } + + location ~* ^/api/ { + proxy_pass http://public-pool_server_1:2019; + } +} \ No newline at end of file diff --git a/public-pool/dfwebos-app.yml b/public-pool/dfwebos-app.yml new file mode 100644 index 0000000..129504e --- /dev/null +++ b/public-pool/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1 +id: public-pool +category: bitcoin +name: Public Pool +version: "3c1289c" +tagline: Соло-майнинговый пул Bitcoin с полностью открытым исходным кодом +description: >- + Public Pool — это индивидуальное приложение для майнинга Bitcoin с открытым исходным кодом, которое позволяет вам запускать собственный пул, используя собственный узел. + Вместо того, чтобы полагаться на централизованные пулы, Public Pool позволяет вашему оборудованию для майнинга отправлять работу в вашу личную настройку, гарантируя, что у вас есть полный контроль над вашей операцией майнинга. + Если вы успешно добудете блок, вы получите всю награду за блок. Никакого разделения с другими майнерами. Никаких сборов. Никаких посредников. + + + На DFWebOS общественный пул автоматически настраивается для работы с вашим узлом Bitcoin — дополнительная настройка не требуется. Просто установите приложение, и оно готово к работе. + + + Чтобы начать майнинг, просто направьте свое оборудование для майнинга на экземпляр публичного пула, используя сведения о слое, указанные в приложении. + Контролируйте свой общий хэшрейт, отслеживайте отдельных майнеров и получайте вознаграждения непосредственно на выбранный вами адрес Bitcoin. Майните самостоятельно и помогите усилить децентрализацию Bitcoin. +developer: Benjamin Wilson +website: https://web.public-pool.io/#/ +dependencies: + - bitcoin +repo: https://github.com/benjamin-wilson/public-pool +support: https://github.com/benjamin-wilson/public-pool/issues +port: 2019 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +releaseNotes: >- + Это небольшое обновление устраняет проблему, которая препятствовала доступу к публичному пулу интерфейс при намеренном доступе к общедоступному Интернету (например, через туннель Cloudflare или аналогичные методы). +defaultPassword: "" +widgets: + - id: "stats" + type: "four-stats" + refresh: "5s" + endpoint: "widget-server:3000/widgets/pool" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "Hash Rate" + text: "968" + subtext: "GH/s" + - title: "Miners" + text: "1" + - title: "Blocks Found" + text: "1" + - title: "Block Height" + text: "883453" +submitter: smolgrrr +submission: https://github.com/getumbrel/dfwebos-apps/pull/915 diff --git a/public-pool/docker-compose.yml b/public-pool/docker-compose.yml new file mode 100644 index 0000000..2abb740 --- /dev/null +++ b/public-pool/docker-compose.yml @@ -0,0 +1,54 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: public-pool_proxy_1 + APP_PORT: 80 + PROXY_AUTH_WHITELIST: "/api/*" + + web: + image: ghcr.io/duckaxe/public-pool-ui:3c1289c@sha256:d916a72b2487c935468b894a89450e5ed688525500fcb81961061c3d7a7877e2 + restart: on-failure + stop_grace_period: 30s + environment: + - DOMAIN=$DEVICE_DOMAIN_NAME + + server: + image: ghcr.io/sethforprivacy/public-pool:9938a05@sha256:96347cbbc2ec6f27ec1b282e8353e41197fad6ca56e011873e69e7c3b6555b14 + restart: on-failure + stop_grace_period: 30s + ports: + - "2018:2018/tcp" + volumes: + - "${APP_DATA_DIR}/data/database:/public-pool/DB" + environment: + - NODE_ENV=production + - BITCOIN_RPC_URL=http://${APP_BITCOIN_NODE_IP} + - BITCOIN_RPC_USER=${APP_BITCOIN_RPC_USER} + - BITCOIN_RPC_PASSWORD=${APP_BITCOIN_RPC_PASS} + - BITCOIN_RPC_PORT=${APP_BITCOIN_RPC_PORT} + - BITCOIN_RPC_TIMEOUT=10000 + - API_PORT=2019 + - STRATUM_PORT=2018 + - NETWORK=mainnet + - API_SECURE=false + - ENABLE_SOLO=true + - ENABLE_PROXY=false + - POOL_IDENTIFIER="Public Pool on Umbrel" + + proxy: + image: nginx:1.25.3@sha256:4c0fdaa8b6341bfdeca5f18f7837462c80cff90527ee35ef185571e1c327beac + volumes: + - ${APP_DATA_DIR}/data/proxy/nginx.conf:/etc/nginx/conf.d/default.conf:ro + depends_on: + - web + - server + restart: on-failure + + widget-server: + image: ghcr.io/getumbrel/umbrel-public-pool-widget:v1.0.0@sha256:b8861a5b79471377f1bfbf6733f11350970b482103d4ef4185f372350ffff6b3 + user: "1000:1000" + environment: + - PUBLIC_POOL_API_URL=http://public-pool_proxy_1/api/pool + restart: on-failure diff --git a/pyload-ng/data/config/.gitkeep b/pyload-ng/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/pyload-ng/dfwebos-app.yml b/pyload-ng/dfwebos-app.yml new file mode 100644 index 0000000..37906bc --- /dev/null +++ b/pyload-ng/dfwebos-app.yml @@ -0,0 +1,32 @@ +manifestVersion: 1 +id: pyload-ng +category: files +name: pyload-ng +version: "0.5.0" +tagline: Бесплатный менеджер загрузок с открытым исходным кодом. +description: >- + Pyload — это мощный менеджер загрузок с открытым исходным кодом, предназначенный для упрощения загрузки файлов. Поддерживаются все распространенные видеосайты, хостеры «в один клик», форматы контейнеров и известные веб-стандарты, что позволяет вам загружать файлы. + + + Кроме того, Pyload имеет множество плагинов для автоматизации общих задач и обеспечения возможности автоматической работы. + + + Pyload имеет полнофункциональный и хорошо документированный интерфейс прикладного программирования, который легко расширяется и доступен с помощью внешних инструментов, кроссплатформенных приложений или другого программного обеспечения. +developer: pyload +website: https://pyload.net/ +repo: https://github.com/pyload/pyload/ +support: https://github.com/pyload/pyload/issues +port: 8783 +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/4124 +releaseNotes: "" +dependencies: [] +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +permissions: + - STORAGE_DOWNLOADS +path: "" +defaultUsername: "pyload" +defaultPassword: "pyload" diff --git a/pyload-ng/docker-compose.yml b/pyload-ng/docker-compose.yml new file mode 100644 index 0000000..5466fb8 --- /dev/null +++ b/pyload-ng/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: pyload-ng_web_1 + APP_PORT: "8000" + + web: + image: linuxserver/pyload-ng:0.5.0@sha256:0ef3e1d15183eb7f517742afe2f75b42c1d58e14640f8d5741f6e88d2d7b9ab5 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC diff --git a/qbittorrent/data/config/.gitkeep b/qbittorrent/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/qbittorrent/dfwebos-app.yml b/qbittorrent/dfwebos-app.yml new file mode 100644 index 0000000..388790e --- /dev/null +++ b/qbittorrent/dfwebos-app.yml @@ -0,0 +1,56 @@ +manifestVersion: 1.1 +id: qbittorrent +category: networking +name: qBittorrent +version: "5.1.4" +tagline: Бесплатный и надежный P2P-клиент BitTorrent. +description: >- + qBittorrent — это программная альтернатива µTorrent с открытым исходным кодом. Он разработан для удовлетворения потребностей большинства пользователей при минимальном использовании процессора и памяти. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + + qBittorrent на DFWebOS настроен для работы без необходимости какой-либо дополнительной настройки. Он будет автоматически подключен к зависимым приложениям, таким как Radarr, Sonarr, Lidarr, Readarr и Prowlarr. Просто установите дополнительные мультимедийные приложения из DFWebOS App Store, и все будет работать без сбоев. + + + Некоторые дополнительные советы: + + + - Убедитесь, что вы не меняете путь загрузки по умолчанию в настройках приложения. Для него должно оставаться значение «/app/qBittorrent/downloads», чтобы ваши загрузки отображались в основной папке загрузок DFWebOS. + + - После установки рекомендуется изменить пароль по умолчанию для приложения. + + - Это приложение поставляется в комплекте с двумя альтернативными Web интерфейс: VueTorrent и Nightwalker. Чтобы включить их, перейдите в «Инструменты» -> «Параметры» -> «Web интерфейс» и выберите «Использовать альтернативный веб-сайт интерфейс». В поле «Расположение файлов» введите «/app/vuetorrent» для VueTorrent или «/app/nightwalker» для Nightwalker и нажмите «Сохранить». + + + ⚠️ qBittorrent скачивает торренты через Clearnet, а не Tor. +releaseNotes: >- + Это обновление включает исправления ошибок и улучшения: + - Исправлены сбои, связанные с обработкой торрентов и определенными настройками Linux. + - Исправлены пустые папки, остающиеся после удаления или перемещения торрентов. + - Исправлено обновление плагина поиска. + - Исправлена проблема с заголовком HTTP, влияющая на настройки обратного прокси. + - Исправлена доступность программы чтения с экрана в списке торрентов. + - Улучшено поведение фокуса клавиши табуляции в интерфейс. + + + Полные примечания к выпуску qBittorrent доступны по адресу https://www.qbittorrent.org/news. +developer: qBittorrent +website: https://qbittorrent.org/ +dependencies: [] +repo: https://github.com/qBittorrent/qBittorrent +support: https://github.com/qBittorrent/qBittorrent/issues +port: 8094 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "admin" +defaultPassword: "adminadmin" +torOnly: false +permissions: + - STORAGE_DOWNLOADS +submitter: ASOwnerYT +submission: https://github.com/getumbrel/dfwebos-apps/pull/468 diff --git a/qbittorrent/docker-compose.yml b/qbittorrent/docker-compose.yml new file mode 100644 index 0000000..e9e6c5e --- /dev/null +++ b/qbittorrent/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: qbittorrent_server_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "true" + + server: + image: ghcr.io/hotio/qbittorrent:release-5.1.4@sha256:b547db036748d449c5cbd31635dc3b695ccc70424775c44ea91df18bd1da1ea4 + environment: + - PUID=1000 + - PGID=1000 + # - UMASK=002 + volumes: + - ${APP_DATA_DIR}/data/config:/config + # /app/qBittorrent/downloads is the default path set in qBittorrent + - ${DFWEBOS_ROOT}/data/storage/downloads:/app/qBittorrent/downloads + restart: on-failure diff --git a/qbittorrent/hooks/post-start b/qbittorrent/hooks/post-start new file mode 100755 index 0000000..748b74f --- /dev/null +++ b/qbittorrent/hooks/post-start @@ -0,0 +1,117 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "inside qbittorrent/hooks/post-start" + +# Этот скрипт делает 2 основные вещи: +# 1. Устанавливает пароль по умолчанию 'adminadmin', если он еще не установлен. Это сделано для того, чтобы пользователи могли получить доступ к qBittorrent после установки без необходимости доступа к журналам контейнера qBittorrent для получения временного пароля, который будет сброшен при перезапуске. +# 2. Включает опцию AuthSubnetWhitelist и устанавливает для AuthSubnetWhitelist подсеть сети Docker DFWEBOS_main_network. Это сделано для того, чтобы мы могли автоматически настраивать другие приложения, такие как Radarr/Sonarr/etc.. + +# Мы используем файл HAS_BEEN_CONFIGURED, чтобы указать, что мы уже настроили qBittorrent. Таким образом, пользователи смогут изменять файл qBittorrent.conf без его перезаписи нашим сценарием. + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +QBITTORRENT_CONF_FILE="${APP_DATA_DIR}/data/config/config/qBittorrent.conf" +DFWEBOS_QBITTORRENT_CONFIG_FLAG="${APP_DATA_DIR}/HAS_BEEN_CONFIGURED_BY_DFWEBOS" + +if [[ -f "${DFWEBOS_QBITTORRENT_CONFIG_FLAG}" ]]; then + echo "qBittorrent has already been configured." + exit +fi + +# Подождите до 30 секунд, пока файл qBittorrent.conf появится. +echo "Waiting up to 30 seconds for qBittorrent.conf file to exist..." +for attempt in $(seq 1 300); do + if [[ -f "${QBITTORRENT_CONF_FILE}" ]]; then + echo "qBittorrent.conf file exists" + break + fi + sleep 0.1 +done + +if [[ ! -f "${QBITTORRENT_CONF_FILE}" ]]; then + echo "qBittorrent.conf was never created. Something is likely wrong with the qBittorrent app." + exit +fi + +# подождите 5 секунд, чтобы убедиться, что файл полностью записан службой qBittorrent. +echo "Waiting 5 seconds for qBittorrent.conf file to be fully written..." +sleep 5 + +ensure_preferences_section() { + if ! grep --quiet '^\[Preferences\]$' "${QBITTORRENT_CONF_FILE}"; then + echo "[Preferences] section does not exist in qBittorrent.conf. Creating it." + printf '\n[Preferences]\n' >> "${QBITTORRENT_CONF_FILE}" + fi +} + +if "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" stop server; then + echo "qBittorrent stopped successfully." +else + echo "Failed to run stop command because we were sent here from the post-start hook. This is expected behavior. Continuing" +fi + +ensure_preferences_section + +# Начиная с версии 4.6.1, qBittorrent больше не поддерживает пароль по умолчанию и вместо этого печатает в журналах временный пароль, что не идеально для пользователей. +# Пользователи должны запустить qBittorrent, скопировать временный пароль из журналов контейнера, войти в систему с временным паролем, а затем установить новый пароль из интерфейс. +# Этот сценарий установит в качестве пароля по умолчанию устаревший пароль 'adminadmin', если пароль еще не установлен. Если пользователь уже установил пароль, этот сценарий не будет его перезаписывать. +# Описание приложения в магазине приложений DFWebOS призывает пользователей сменить пароль по умолчанию. + +# Если строка с `WebUI\Password_PBKDF2` еще не существует в qBittorrent.conf, значит собственный пароль еще не установлен и мы прописываем `adminadmin` в качестве пароля по умолчанию. +# Ожидается, что эта строка будет находиться в разделе [Настройки]. +# Сначала мы проверяем эту строку, потому что у пользователя может быть устаревшая установка до того, как qBittorrent удалил пароль по умолчанию. +if ! grep --quiet '^WebUI\\Password_PBKDF2' "${QBITTORRENT_CONF_FILE}"; then + echo "WebUI\\Password_PBKDF2 does not exist in qBittorrent.conf. Adding default password." + + echo "Writing default password adminadmin to qBittorrent.conf" + sed -i '/^\[Preferences\]/a WebUI\\Password_PBKDF2="@ByteArray(gTzqQHUv3A1X43tLaAhaJQ==:ZBCIBA4honNZ7H66xdEoHpqBC/Vvwj17ZCjQKARSK78ScJWDMdWSfxezHG536UekAL/zpRn571MXCfhtdqiArA==)"' "${QBITTORRENT_CONF_FILE}" + +else + # Это устаревшая установка, и пользователь уже установил пароль. Мы не хотим его перезаписывать. + echo "'WebUI\\Password_PBKDF2' already exists in qBittorrent.conf. No changes made." +fi + +# Пользователи могут перезаписать эти настройки в файле qBittorrent.conf, если хотят их изменить, и этот сценарий не перезапишет их. + +# Убедитесь, что WebUI\AuthSubnetWhitelist установлен правильно. +echo "Setting AuthSubnetWhitelist=10.21.0.0/16 in qBittorrent.conf" +if grep -q '^WebUI\\AuthSubnetWhitelist=' "${QBITTORRENT_CONF_FILE}"; then + sed -i 's/^WebUI\\AuthSubnetWhitelist=.*/WebUI\\AuthSubnetWhitelist=10.21.0.0\/16/' "${QBITTORRENT_CONF_FILE}" +else + sed -i '/^\[Preferences\]/a WebUI\\AuthSubnetWhitelist=10.21.0.0/16' "${QBITTORRENT_CONF_FILE}" +fi + +# Убедитесь, что WebUI\AuthSubnetWhitelistEnabled установлен правильно. +echo "Setting WebUI\AuthSubnetWhitelistEnabled=true in qBittorrent.conf" +if grep -q '^WebUI\\AuthSubnetWhitelistEnabled=' "${QBITTORRENT_CONF_FILE}"; then + sed -i 's/^WebUI\\AuthSubnetWhitelistEnabled=.*/WebUI\\AuthSubnetWhitelistEnabled=true/' "${QBITTORRENT_CONF_FILE}" +else + sed -i '/^\[Preferences\]/a WebUI\\AuthSubnetWhitelistEnabled=true' "${QBITTORRENT_CONF_FILE}" +fi + +# Убедитесь, что WebUI\HostHeaderValidation установлен правильно. +echo "Setting WebUI\HostHeaderValidation=false in qBittorrent.conf" +if grep -q '^WebUI\\HostHeaderValidation=' "${QBITTORRENT_CONF_FILE}"; then + sed -i 's/^WebUI\\HostHeaderValidation=.*/WebUI\\HostHeaderValidation=false/' "${QBITTORRENT_CONF_FILE}" +else + sed -i '/^\[Preferences\]/a WebUI\\HostHeaderValidation=false' "${QBITTORRENT_CONF_FILE}" +fi + +# Создайте файл DFWEBOS_QBITTORRENT_CONFIG_FLAG, чтобы указать, что мы настроили qBittorrent. +touch "${DFWEBOS_QBITTORRENT_CONFIG_FLAG}" + +# запустить службу qBittorrent +echo "Starting qBittorrent..." +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" start server + +# Перезапустите приложения *arr, чтобы запустить автоматическую настройку. +apps=("radarr" "sonarr" "lidarr" "readarr" "prowlarr") +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +for app in "${apps[@]}"; do + if echo "$installed_apps" | grep --quiet "$app"; then + # Мы не блокируем скрипт при перезапуске приложений, поскольку хотим перезапускать все приложения параллельно. + # AND нам нужно, чтобы qBittorrent отображался в списке установленных приложений при перезапуске приложений. + "${DFWEBOS_ROOT}/scripts/app" restart "$app" & + fi +done diff --git a/radarr/data/config/.gitkeep b/radarr/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/radarr/dfwebos-app.yml b/radarr/dfwebos-app.yml new file mode 100644 index 0000000..415915c --- /dev/null +++ b/radarr/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1.1 +id: radarr +category: media +name: Radarr +version: "6.1.1.10360" +tagline: Ваш менеджер коллекции фильмов +description: >- + Radarr — менеджер коллекции фильмов для пользователей Usenet и BitTorrent. Он может отслеживать несколько RSS-каналов на наличие новых фильмов и взаимодействовать с клиентами и индексаторами для их захвата, сортировки и переименования. Его также можно настроить на автоматическое повышение качества существующих файлов в библиотеке, когда становится доступным формат более высокого качества. Обратите внимание, что поддерживается только один тип данного фильма. Если вам нужна версия определенного фильма как в разрешении 4k, так и в разрешении 1080p, вам понадобится несколько экземпляров. + + + 🛠️ ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Radarr на DFWebOS автоматически подключится для загрузки клиентов, установленных из DFWebOS App Store. Выберите из Transmission, qBittorerent и SABnzbd. Просто установите предпочитаемый клиент(ы). + + + Все, что вам нужно сделать, это добавить индексатор, чтобы Radarr мог искать фильмы. Вы можете добавлять индексаторы непосредственно в Radarr или установить Prowlarr из DFWebOS App Store, чтобы упростить управление индексаторами в нескольких приложениях. + Добавьте свои индексаторы в Prowlarr, и они будут автоматически доступны в Radarr. +developer: Radarr +website: https://radarr.video/ +dependencies: + - transmission +repo: https://github.com/Radarr/Radarr +support: https://github.com/Radarr/Radarr/issues +port: 7878 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +releaseNotes: >- + Это обновление включает в себя различные улучшения и исправления ошибок: + - Исправлен анализ URL-адресов в некоторых системах из-за различий в локали. + - Улучшено сопоставление файлов HTTP. + - Добавлена поддержка анализа нового формата группы релизов. + - Исправлены ошибки коллекции API при использовании определенных названий коллекций фильмов. + - Добавлена настройка TTL для уведомлений Pushover. + - Обновлены переводы для нескольких языков. + + + Полные примечания к выпуску Radarr доступны по адресу https://github.com/Radarr/Radarr/releases. +defaultUsername: "" +defaultPassword: "" +torOnly: false +permissions: + - STORAGE_DOWNLOADS +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/commit/60878f278d544b204d8e7c96240c797f43a9b319 diff --git a/radarr/docker-compose.yml b/radarr/docker-compose.yml new file mode 100644 index 0000000..b420e93 --- /dev/null +++ b/radarr/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: radarr_server_1 + APP_PORT: 7878 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: linuxserver/radarr:6.1.1@sha256:581f159c2b67436863cb4da30e158ef6f6b8878472abbba79ee5d5f7e6b7d28d + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + restart: on-failure + + mac: + image: getumbrel/media-app-configurator:v1.3.0@sha256:67e75dd9f5a14402b7816119a8e20189bc2465484cea077909d164687e59742b + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + environment: + APP_ID: "radarr" + APP_URL: "http://radarr_server_1:7878" + TRANSMISSION_HOST: "transmission_server_1" + TRANSMISSION_PORT: 9091 + ROOT_FOLDER: "/downloads/movies" + # дополнительный клиент загрузки qBittorrent + QBITTORRENT_INSTALLED: ${APP_RADARR_QBITTORRENT_INSTALLED:-"false"} + QBITTORRENT_HOST: "qbittorrent_server_1" + QBITTORRENT_PORT: 8080 + # дополнительный клиент загрузки SABnzbd + SABNZBD_INSTALLED: ${APP_RADARR_SABNZBD_INSTALLED:-"false"} + SABNZBD_HOST: "sabnzbd_web_1" + SABNZBD_PORT: 8080 + SABNZBD_API_KEY: ${APP_RADARR_SABNZBD_API_KEY:-""} diff --git a/radarr/exports.sh b/radarr/exports.sh new file mode 100644 index 0000000..8bcfd84 --- /dev/null +++ b/radarr/exports.sh @@ -0,0 +1,13 @@ +# Проверьте, установлены ли qBittorrent и SABnzbd. +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +if echo "$installed_apps" | grep --quiet 'qbittorrent'; then + export APP_RADARR_QBITTORRENT_INSTALLED="true" +fi + +if echo "$installed_apps" | grep --quiet 'sabnzbd'; then + export APP_RADARR_SABNZBD_INSTALLED="true" + # экспортируйте SABNZBD_API_KEY, который имеет формат: + # api_key = 98e3444f7fab45e592958673bf656g3 + export APP_RADARR_SABNZBD_API_KEY=$(grep -Po 'api_key = \K.*' "${DFWEBOS_ROOT}/app-data/sabnzbd/data/config/sabnzbd.ini") +fi diff --git a/radarr/hooks/post-install b/radarr/hooks/post-install new file mode 100755 index 0000000..844cdf1 --- /dev/null +++ b/radarr/hooks/post-install @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -euo pipefail + +if "${DFWEBOS_ROOT}/scripts/app" ls-installed | grep --quiet 'prowlarr' +then + CONFIG_FILE="${APP_DATA_DIR}/data/config/config.xml" + + # Подождите, пока файл config.xml появится. + # Подождите, пока свойство ключа API () появится в файле конфигурации. + for attempt in $(seq 1 20); do + if [[ -f "${CONFIG_FILE}" ]] && cat "${CONFIG_FILE}" | grep --quiet ''; then + echo "config.xml file exists and xml key exists..." + + # Перезапустите Prowlarr, чтобы автоматически настроить его как приложение. + "${DFWEBOS_ROOT}/scripts/app" restart prowlarr + + exit + fi + sleep 1 + done + + >&2 echo "Error: Failed to locate inside: ${CONFIG_FILE}" + exit 1 +fi diff --git a/readarr/data/config/.gitkeep b/readarr/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/readarr/dfwebos-app.yml b/readarr/dfwebos-app.yml new file mode 100644 index 0000000..4ef0d0a --- /dev/null +++ b/readarr/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1.2 +id: readarr +category: media +name: Readarr +version: "0.4.18.2805" +tagline: Ваш менеджер по сбору книг +description: >- + ⚠️ Уведомление об удалении: приложение Readarr было удалено разработчиками. Более подробную информацию можно найти здесь: https://github.com/Readarr/Readarr. + + + ⚠️ Readarr в настоящее время находится на стадии бета-тестирования и, как правило, работа над ним все еще продолжается. Элементы могут быть сломанными, неполными или вызвать самовозгорание. + + + Readarr — это менеджер коллекции электронных книг и аудиокниг для пользователей Usenet и BitTorrent. Он может отслеживать несколько RSS-каналов на предмет новых книг ваших любимых авторов, а также захватывать, сортировать и переименовывать их. Обратите внимание, что поддерживается только один тип данной книги. Если вам нужна как аудиокнига, так и электронная книга данной книги, вам понадобится несколько экземпляров. + + + 🛠️ ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Readarr на DFWebOS автоматически подключится для загрузки клиентов, установленных из DFWebOS App Store. Выберите из Transmission, qBittorerent и SABnzbd. Просто установите предпочитаемый клиент(ы). + + + Все, что вам нужно сделать, это добавить индексатор, чтобы Readarr мог искать книги. Вы можете добавлять индексаторы непосредственно в Readarr или установить Prowlarr из DFWebOS App Store, чтобы упростить управление индексаторами в нескольких приложениях. + Добавьте свои индексаторы в Prowlarr, и они будут автоматически доступны в Readarr. +developer: Readarr +website: https://readarr.com/ +dependencies: + - transmission +repo: https://github.com/Readarr/Readarr +support: https://github.com/Readarr/Readarr/issues +port: 8787 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +permissions: + - STORAGE_DOWNLOADS +submitter: Choff3 +submission: https://github.com/getumbrel/dfwebos-apps/pull/712 +releaseNotes: >- + Это обновление включает в себя несколько улучшений и исправлений ошибок: + - Исправлены ссылки на удаленные изображения для постеров и обложек книг. + - Обновлены переводы + - Улучшена производительность за счет оптимизации загрузки сборки. + - Исправлены скриншоты полноэкранной автоматизации. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Readarr/Readarr/releases. + #отключено: правда \ No newline at end of file diff --git a/readarr/docker-compose.yml b/readarr/docker-compose.yml new file mode 100644 index 0000000..0ea9b91 --- /dev/null +++ b/readarr/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: readarr_server_1 + APP_PORT: 8787 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: linuxserver/readarr:develop-version-0.4.18.2805@sha256:b6a7420770adeea5cac1f3ee5da606183d014e3f96fb473f3abd88ed11d9f344 + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + restart: on-failure + + mac: + image: getumbrel/media-app-configurator:v1.3.0@sha256:67e75dd9f5a14402b7816119a8e20189bc2465484cea077909d164687e59742b + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + environment: + APP_ID: "readarr" + APP_URL: "http://readarr_server_1:8787" + TRANSMISSION_HOST: "transmission_server_1" + TRANSMISSION_PORT: 9091 + ROOT_FOLDER: "/downloads/books" + # дополнительный клиент загрузки qBittorrent + QBITTORRENT_INSTALLED: ${APP_READARR_QBITTORRENT_INSTALLED:-"false"} + QBITTORRENT_HOST: "qbittorrent_server_1" + QBITTORRENT_PORT: 8080 + # дополнительный клиент загрузки SABnzbd + SABNZBD_INSTALLED: ${APP_READARR_SABNZBD_INSTALLED:-"false"} + SABNZBD_HOST: "sabnzbd_web_1" + SABNZBD_PORT: 8080 + SABNZBD_API_KEY: ${APP_READARR_SABNZBD_API_KEY:-""} diff --git a/readarr/exports.sh b/readarr/exports.sh new file mode 100644 index 0000000..c42ea2f --- /dev/null +++ b/readarr/exports.sh @@ -0,0 +1,13 @@ +# Проверьте, установлены ли qBittorrent и SABnzbd. +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +if echo "$installed_apps" | grep --quiet 'qbittorrent'; then + export APP_READARR_QBITTORRENT_INSTALLED="true" +fi + +if echo "$installed_apps" | grep --quiet 'sabnzbd'; then + export APP_READARR_SABNZBD_INSTALLED="true" + # экспортируйте SABNZBD_API_KEY, который имеет формат: + # api_key = 98e3444f7fab45e592958673bf656g3 + export APP_READARR_SABNZBD_API_KEY=$(grep -Po 'api_key = \K.*' "${DFWEBOS_ROOT}/app-data/sabnzbd/data/config/sabnzbd.ini") +fi diff --git a/readarr/hooks/post-install b/readarr/hooks/post-install new file mode 100755 index 0000000..3d74291 --- /dev/null +++ b/readarr/hooks/post-install @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -euo pipefail + +if "${DFWEBOS_ROOT}/scripts/app" ls-installed | grep --quiet 'prowlarr' +then + CONFIG_FILE="${APP_DATA_DIR}/data/config/config.xml" + + # Подождите, пока файл config.xml появится. + # Подождите, пока свойство ключа API () появится в файле конфигурации. + for attempt in $(seq 1 20); do + if [[ -f "${CONFIG_FILE}" ]] && cat "${CONFIG_FILE}" | grep --quiet ''; then + echo "config.xml file exists and xml key exists..." + + # Перезапустите Prowlarr, чтобы автоматически настроить его как приложение. + "${DFWEBOS_ROOT}/scripts/app" restart prowlarr + + exit + fi + sleep 1 + done + + >&2 echo "Error: Failed to locate inside: ${CONFIG_FILE}" + exit 1 +fi \ No newline at end of file diff --git a/readur/data/postgres_data/.gitkeep b/readur/data/postgres_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/readur/data/postgres_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/readur/data/uploads/.gitkeep b/readur/data/uploads/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/readur/data/uploads/.gitkeep @@ -0,0 +1 @@ + diff --git a/readur/data/watch/.gitkeep b/readur/data/watch/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/readur/data/watch/.gitkeep @@ -0,0 +1 @@ + diff --git a/readur/dfwebos-app.yml b/readur/dfwebos-app.yml new file mode 100644 index 0000000..3e75aea --- /dev/null +++ b/readur/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: readur +name: Readur +tagline: Интуитивная платформа OCR для документов +category: files +version: "2.9.1" +port: 8111 +description: >- + 📄 Readur — это мощная и современная система управления документами, призванная помочь отдельным лицам и командам эффективно организовывать, обрабатывать и получать доступ к своим цифровым документам. Он сочетает в себе высокопроизводительную серверную часть с элегантным и интуитивно понятным веб-интерфейсом, обеспечивая удобство и надежность работы пользователя. + + + Пользователи могут легко загружать различные типы файлов, такие как PDF-файлы, изображения, текстовые документы и файлы Office, используя простой метод перетаскивания. Одной из ключевых сильных сторон Readur является передовая технология оптического распознавания символов, которая автоматически извлекает текст из отсканированных документов и изображений. Эта функция OCR позволяет пользователям преобразовывать статические файлы или файлы на основе изображений в контент с возможностью поиска, что значительно расширяет возможности поиска информации в документах. + + + Система постоянно отслеживает наличие новых файлов в назначенных папках, обрабатывая их неразрушающим способом, сохраняя исходные данные. После обработки документы становятся полностью доступными для поиска благодаря сложным возможностям полнотекстового поиска, поддерживаемым надежной базой данных. Эта функция поиска включает в себя мощные механизмы фильтрации и ранжирования, которые позволяют быстро и точно находить нужные документы. + + + Безопасность является приоритетом в Readur: аутентификация пользователей осуществляется с помощью безопасных методов на основе токенов и надежного хеширования паролей. Пользовательский интерфейс создан адаптивным и визуально привлекательным, с упором на простоту использования и производительность. + + + В целом, Readur использует интеллектуальное оптическое распознавание текста и эффективную обработку документов, чтобы обеспечить удобство управления большими объемами документов, обеспечивая при этом быстрый доступ к наиболее важной информации. +developer: Jon Fuller +website: https://github.com/readur/readur +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3186 +repo: https://github.com/readur/readur +support: https://github.com/readur/readur/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Этот выпуск включает в себя несколько улучшений и улучшений: + - Добавлена возможность создавать и управлять ключами API для учетных записей пользователей. + - Исправлена проблема с конечной точкой запроса неудавшихся документов. + - Исправлена некорректная миграция, чтобы обеспечить более плавное обновление базы данных. + - Различные обновления зависимостей для большей стабильности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/readur/readur/releases. +dependencies: [] +path: "" +defaultUsername: "admin" +defaultPassword: "readur2024" diff --git a/readur/docker-compose.yml b/readur/docker-compose.yml new file mode 100644 index 0000000..010c9df --- /dev/null +++ b/readur/docker-compose.yml @@ -0,0 +1,57 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: readur_app_1 + APP_PORT: 8000 + + app: + image: ghcr.io/readur/readur:2.9.1@sha256:16aa8b1d7df218ab0f4fc57fbf890d125020fca416bc3555aa7731e7329020dc + user: "1000:1000" + restart: on-failure + environment: + DATABASE_URL: postgresql://readur:readur_password@readur_postgres_1:5432/readur + JWT_SECRET: ${APP_SEED} + SERVER_ADDRESS: 0.0.0.0:8000 + UPLOAD_PATH: /app/uploads + WATCH_FOLDER: /app/watch + ALLOWED_FILE_TYPES: pdf,png,jpg,jpeg,tiff,bmp,gif,txt,rtf,doc,docx + WATCH_INTERVAL_SECONDS: 30 + FILE_STABILITY_CHECK_MS: 500 + MAX_FILE_AGE_HOURS: 168 + OCR_LANGUAGE: eng + CONCURRENT_OCR_JOBS: 4 + OCR_TIMEOUT_SECONDS: 300 + MAX_FILE_SIZE_MB: 50 + MEMORY_LIMIT_MB: 512 + CPU_PRIORITY: normal + ADMIN_PASSWORD: readur2024 + volumes: + - ${APP_DATA_DIR}/data/uploads:/app/uploads + - ${APP_DATA_DIR}/data/watch:/app/watch + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + depends_on: + postgres: + condition: service_healthy + + postgres: + image: postgres:17.5@sha256:3962158596daaef3682838cc8eb0e719ad1ce520f88e34596ce8d5de1b6330a1 + user: "1000:1000" + restart: on-failure + environment: + POSTGRES_USER: readur + POSTGRES_PASSWORD: readur_password + POSTGRES_DB: readur + volumes: + - ${APP_DATA_DIR}/data/postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U readur"] + interval: 10s + timeout: 5s + retries: 5 diff --git a/remmina/data/config/.gitkeep b/remmina/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/remmina/dfwebos-app.yml b/remmina/dfwebos-app.yml new file mode 100644 index 0000000..b613204 --- /dev/null +++ b/remmina/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: remmina +category: networking +name: Remmina +version: "1.4.35" +tagline: Экран удаленного доступа и обмена файлами +description: >- + Используйте другие рабочие столы удаленно, с крошечного экрана или больших мониторов. + + + - Поддерживаются сетевые протоколы RDP, VNC, SPICE, X2Go, SSH, WWW (протокол HTTP) и EXEC. + + + - Написан на GTK, ведется портирование на Qt. + + + - Выпущены как "реммина" (основная программа) и "реммина-плагины". + + + - Remmina — свободное программное обеспечение с авторским левом. + + + Что такое свободное программное обеспечение? + + + Возможность использовать, просматривать, изменять и делиться со всеми. + Требование совместного использования на равных условиях (дополнительно) делает его авторским левом, то есть ни одна из этих свобод программного обеспечения не может быть отнята. +developer: Remmina +website: https://remmina.org +dependencies: [] +repo: https://gitlab.com/Remmina/Remmina +support: https://www.remmina.org/support/ +port: 8764 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/291 +releaseNotes: >- + Этот выпуск включает в себя несколько улучшений и исправлений ошибок: + - Исправлены проблемы сборки для OpenSSL 1.1. + - Добавлена поддержка запуска команд SSH при подключении через туннель SSH. + - Решены проблемы компиляции с GCC-14. + - Исправлен сбой, связанный с функцией «отключить сохранение паролей». + - Обновлена обработка информации о балансировке нагрузки. + + Полные примечания к выпуску можно найти на сайте https://gitlab.com/Remmina/Remmina/-/releases. \ No newline at end of file diff --git a/remmina/docker-compose.yml b/remmina/docker-compose.yml new file mode 100644 index 0000000..195014b --- /dev/null +++ b/remmina/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: remmina_server_1 + APP_PORT: 3000 + + server: + image: linuxserver/remmina:1.4.35@sha256:ca2b6788bad28d864086649fc276ce696cac9cdf69e6976b85497b341ed07d8d + volumes: + - ${APP_DATA_DIR}/data/config:/config + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 \ No newline at end of file diff --git a/restreamer/config/.gitkeep b/restreamer/config/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/restreamer/config/.gitkeep @@ -0,0 +1 @@ + diff --git a/restreamer/data/.gitkeep b/restreamer/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/restreamer/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/restreamer/dfwebos-app.yml b/restreamer/dfwebos-app.yml new file mode 100644 index 0000000..c1c1b5f --- /dev/null +++ b/restreamer/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: restreamer +name: Restreamer +tagline: Простой в использовании видеосервер с открытым исходным кодом +category: files +version: "2.12.0" +port: 8135 +description: >- + Restreamer — это потоковый сервер с открытым исходным кодом, разработанный datarhei и предназначенный для упрощения прямой трансляции видео. Он предоставляет интуитивно понятный веб-интерфейс, который позволяет пользователям настраивать потоки и управлять ими, не требуя дополнительных технических знаний. Поддерживая различные протоколы потоковой передачи, включая RTMP, HLS, SRT и WebRTC, он обеспечивает плавную передачу видео на разные платформы. + + + Программное обеспечение может получать видео из таких источников, как веб-камеры, IP-камеры или другие прямые трансляции, и перераспределять контент по нескольким местам назначения, таким как YouTube, Twitch или пользовательские серверы. Это делает его универсальным инструментом для частных лиц, предприятий и организаций, стремящихся эффективно делиться живым контентом. + + + Restreamer оптимизирован для низкого потребления ресурсов, что позволяет ему работать на широком спектре оборудования, включая встроенные системы и энергоэффективные устройства. Функция автоматического повторного подключения обеспечивает бесперебойную потоковую передачу даже в случае временной потери соединения. + + + Благодаря сочетанию простоты использования, гибкости и надежности Restreamer служит мощным решением для различных сценариев потокового вещания, от личных трансляций до профессионального распространения мультимедиа. +developer: datarhei +website: https://datarhei.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2382 +repo: https://github.com/datarhei/restreamer +support: https://github.com/datarhei/restreamer/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: "" +dependencies: [] +path: "/ui" +defaultUsername: "" +defaultPassword: "" diff --git a/restreamer/docker-compose.yml b/restreamer/docker-compose.yml new file mode 100644 index 0000000..1e09a5b --- /dev/null +++ b/restreamer/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: restreamer_web_1 + APP_PORT: 8080 + + web: + image: datarhei/restreamer:2.12.0@sha256:813acc9d41d2953b1e7fbb5b281f9a1f68d07fef4e1b30e34472b12d3db9426a + environment: + - PUID=1000 + - PGID=1000 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/config:/core/config + - ${APP_DATA_DIR}/data:/core/data + ports: + - 8181:8181 + - 1935:1935 + - 1936:1936 + - 6000:6000/udp diff --git a/ride-the-lightning/boltz/.gitkeep b/ride-the-lightning/boltz/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ride-the-lightning/dfwebos-app.yml b/ride-the-lightning/dfwebos-app.yml new file mode 100644 index 0000000..6e4d41a --- /dev/null +++ b/ride-the-lightning/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: ride-the-lightning +category: bitcoin +name: Ride The Lightning +version: "0.15.8-beta-boltz" +tagline: Мощная панель управления для сети Lightning. +description: >- + RTL — это полнофункциональный, независимый от устройства веб-интерфейс пользователя, помогающий + управлять работой узла Lightning. Это обеспечивает полный контроль над вашей молнией. + узел с богатым функционалом для базового уровня Bitcoin и сети Lightning. + Некоторые интересные функции, доступные на RTL: + + + - Богатая панель инструментов с двумя вариантами макета + + - Отправка/получение средств по цепочке + + - Богатое управление каналами с расширенными функциями, такими как оценка баланса, циклическая ребалансировка и т. д. + + - Управление платежами и счетами с помощью QR-кодов + + - Анализ маршрутизации пересылаемых платежей + + - Резервные копии каналов + + - Подробные отчеты о маршрутизации и истории транзакций + + - Дополнительный интерфейс Loop для замены подводных лодок. + + - Настраиваемый интерфейс с несколькими цветовыми схемами и темными/светлыми режимами. +developer: Shahana and Suheb +website: https://github.com/Ride-The-Lightning/RTL +dependencies: + - lightning +repo: https://github.com/Ride-The-Lightning/RTL +support: https://github.com/Ride-The-Lightning/RTL/issues/new +port: 3001 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + В этом выпуске Ride The Lightning обновляется до версии 0.15.8-бета и включает следующие изменения: + - Исправлена ошибка платежей, появившаяся в версии 0.15.7. + - Исправлены заметки, которые не отображались для стандартных счетов. + - Прокачать Boltz-клиент до версии 2.11.1. +path: "" +defaultUsername: "" +deterministicPassword: true +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/336 diff --git a/ride-the-lightning/docker-compose.yml b/ride-the-lightning/docker-compose.yml new file mode 100644 index 0000000..af58c1e --- /dev/null +++ b/ride-the-lightning/docker-compose.yml @@ -0,0 +1,54 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: ride-the-lightning_web_1 + APP_PORT: 3001 + + web: + image: shahanafarooqui/rtl:v0.15.8@sha256:54131152cba02a968d83fcc89c07426bfb979372f743649ba1e2626426a34dc0 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/rtl:/data + - ${APP_DATA_DIR}/boltz:/boltz:ro + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + - ${APP_BITCOIN_DATA_DIR}:/bitcoin:ro + entrypoint: /data/entrypoint.sh + environment: + # Конфигурация приложения + APP_PASSWORD: $APP_PASSWORD + PORT: 3001 + RTL_CONFIG_PATH: "/data" + CHANNEL_BACKUP_PATH: "/data/backup" + LN_IMPLEMENTATION: "LND" + BLOCK_EXPLORER_URL: "${APP_RTL_BLOCK_EXPLORER_URL}" + + # Подробности подключения LND + LN_SERVER_URL: "https://$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_REST_PORT" + MACAROON_PATH: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK" + CONFIG_PATH: "/lnd/dfwebos-lnd.conf" + + # Больц + BOLTZ_SERVER_URL: "https://ride-the-lightning_boltz_1:9003" + BOLTZ_MACAROON_PATH: "/boltz/.boltz-lnd/macaroons" + + boltz: + image: boltz/boltz-client:2.11.1@sha256:25a984cc76b0d232573cffe7088c2cb2e50b6b8955e09f68d768ef5fc7215c1d + user: "1000:1000" + restart: "on-failure" + stop_grace_period: "1m" + environment: + HOME: "/data" + volumes: + - "${APP_DATA_DIR}/boltz:/data" + - "${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro" + command: + - --datadir=/data/.boltz-lnd + - --lnd.host="$APP_LIGHTNING_NODE_IP" + - --lnd.macaroon="/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" + - --lnd.certificate="/lnd/tls.cert" + - --rpc.rest.host="0.0.0.0" + - --rpc.rest.port="9003" diff --git a/ride-the-lightning/exports.sh b/ride-the-lightning/exports.sh new file mode 100644 index 0000000..0fba1ae --- /dev/null +++ b/ride-the-lightning/exports.sh @@ -0,0 +1,17 @@ +# Динамический экспорт обозревателя блоков URL в зависимости от того, в какой сети работает узел Биткойн. + +BLOCK_EXPLORER_URL="https://mempool.space" + +# TODO: проверьте наличие приложения DFWebOS Mempool и используйте локальный URL, если он установлен. +# например, "${DFWEBOS_ROOT}/scripts/app" ls-installed | grep --quiet 'mempool' +# RTL понадобится способ динамического создания URL для локального приложения Mempool. +# например, localExplorerUrl = `${window.location.protocol}//${window.location.hostname}:${LOCAL_MEMPOOL_PORT}`; + +# Добавьте APP_BITCOIN_NETWORK к URL, если это не основная сеть (например, https://mempool.space/testnet)). +if [[ "${APP_BITCOIN_NETWORK}" != "mainnet" ]]; then + echo "Bitcoin is running on ${APP_BITCOIN_NETWORK}. Appending ${APP_BITCOIN_NETWORK} to the block explorer URL." + BLOCK_EXPLORER_URL="${BLOCK_EXPLORER_URL}/${APP_BITCOIN_NETWORK}" + echo "BLOCK_EXPLORER_URL: ${BLOCK_EXPLORER_URL}" +fi + +export APP_RTL_BLOCK_EXPLORER_URL="${BLOCK_EXPLORER_URL}" diff --git a/ride-the-lightning/rtl/.gitkeep b/ride-the-lightning/rtl/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ride-the-lightning/rtl/RTL-Config.json b/ride-the-lightning/rtl/RTL-Config.json new file mode 100644 index 0000000..9c6d36f --- /dev/null +++ b/ride-the-lightning/rtl/RTL-Config.json @@ -0,0 +1,22 @@ +{ + "multiPass": "$APP_PASSWORD", + "defaultNodeIndex": 1, + "SSO": { + "rtlSSO": 0, + "rtlCookiePath": "", + "logoutRedirectLink": "" + }, + "nodes": [ + { + "index": 1, + "lnNode": "DFWebOS", + "Settings": { + "userPersona": "MERCHANT", + "themeMode": "DAY", + "themeColor": "PURPLE", + "enableLogging": true, + "fiatConversion": true + } + } + ] +} \ No newline at end of file diff --git a/ride-the-lightning/rtl/entrypoint.sh b/ride-the-lightning/rtl/entrypoint.sh new file mode 100755 index 0000000..ac13a2f --- /dev/null +++ b/ride-the-lightning/rtl/entrypoint.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +# Перенос устаревшего пароля по умолчанию +sed -i 's/"multiPassHashed": "70c882380045d35807b45245bd49185991904ff47a5036dfe82103c49f9f0f31"/"multiPass": "'${APP_PASSWORD}'"/' $RTL_CONFIG_PATH/RTL-Config.json +sed -i 's/"multiPass": "moneyprintergobrrr"/"multiPass": "'${APP_PASSWORD}'"/' $RTL_CONFIG_PATH/RTL-Config.json + +# Перенос заполнителя нового пароля +sed -i 's/$APP_PASSWORD/'${APP_PASSWORD}'/' $RTL_CONFIG_PATH/RTL-Config.json + +exec /sbin/tini -g -- node rtl diff --git a/robosats/dfwebos-app.yml b/robosats/dfwebos-app.yml new file mode 100644 index 0000000..ed0e8ec --- /dev/null +++ b/robosats/dfwebos-app.yml @@ -0,0 +1,85 @@ +manifestVersion: 1 +id: robosats +category: bitcoin +name: RoboSats +version: "v0.8.2-alpha" +tagline: Простой и приватный P2P-обмен Bitcoin +description: >- + RoboSats — это простое и частное приложение для обмена биткойнов на национальные валюты. + Robosats упрощает работу пользователей P2P и использует мгновенное удержание счетов для + минимизировать требования к хранению и доверию. Детерминированный робот + аватары помогают пользователям придерживаться лучших методов обеспечения конфиденциальности. + + + Функции: + + + - Конфиденциальность: ваш аватар робота генерируется детерминированно, регистрация не требуется. + + - Доступно более 10 языков и более 60 бумажных валют. + + - Безопасно: просто заблокируйте счет-фактуру Lightning Hodl и покажите, что вы реальны и преданы делу. + + - Никакого сбора данных. Ваше общение с вашим партнером зашифровано PGP, и только вы можете его прочитать. + + - Lightning fast: средняя суверенная сделка заканчивается через ~ 8 минут. Быстрее, чем подтверждение одного блока! + + - Полностью обеспеченное условное депонирование: ваш партнер всегда заинтересован и не может сбежать со средствами. + + - Сильная система поощрений: попытки обмана наказываются порезанием Сатов в залоге верности. + + - Руководства и видеоуроки доступны по адресу https://learn.robosats.org/watch/en. + + + Вы можете присоединиться к другим крутым роботам и получить поддержку сообщества в телеграмм-группе https://t.me/robosats. +releaseNotes: >- + Основные моменты: + + - Заказы теперь могут включать описания. Доступно в «Дополнительных параметрах». + - Метаданные объединенного Ордена из книги Федерации теперь отображаются в представлении Ордена (раньше отображались только данные с хоста). + - Новое диалоговое окно поиска для помощи пользователям в адаптации. + - Валюта привязана к BTC в форме свопов. + - Редакция чешского перевода + + + Способы оплаты, отмеченные как обратимые: + + - Революция + + Новые способы оплаты: + + - Зеам + + Ошибки: + + - Функция «Активный робот» недоступна в представлении книги заказов, когда для соединения установлено значение Nostr, однако она всегда отображается красным цветом для всех роботов. + - Обновление книги заказов не требуется, если установлено соединение Nostr. + - Для продления заказов с паролем теперь требуется повторный ввод пароля. + - Иногда заказы не находили при добавлении нового робота с активным заказом + - Обзор координаторов иногда не загружался + - Кнопка «Начать заново» в сводке заказа не работала. + - Использованные роботы не могли создавать новые заказы. + - Переключение расширенного режима иногда не работало. + - количество спутников «вы получаете» иногда отображалось неверными значениями + - Сумма «Бюджета маршрутизации» отображала саты вместо милисатов. + - Карта теперь отображается с масштабом 1 (полностью) по умолчанию. + - Иногда журналы чата не отправлялись по спору, даже если пользователь отмечал эту опцию. + + Полные примечания к выпуску доступны по адресу https://github.com/RoboSats/robosats/releases/tag/v0.8.2-alpha. +developer: RoboSats +website: https://learn.robosats.org +dependencies: [] +repo: https://github.com/RoboSats/robosats +support: https://t.me/robosats +port: 12596 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: RoboSats +submission: https://github.com/getumbrel/dfwebos-apps/pull/122 diff --git a/robosats/docker-compose.yml b/robosats/docker-compose.yml new file mode 100644 index 0000000..68bd02f --- /dev/null +++ b/robosats/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: robosats_web_1 + APP_PORT: 12596 + + web: + image: recksato/robosats-client:v0.8.2-alpha@sha256:f892eb4aae687d010b6acb136bb166555d083f28bd61fe68dcf2f9d2e3abdf83 + restart: on-failure + stop_grace_period: 1m + init: true + environment: + TOR_PROXY_IP: ${TOR_PROXY_IP} + TOR_PROXY_PORT: ${TOR_PROXY_PORT} \ No newline at end of file diff --git a/romm/data/assets/.gitkeep b/romm/data/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/romm/data/config/config.yml b/romm/data/config/config.yml new file mode 100644 index 0000000..adb293f --- /dev/null +++ b/romm/data/config/config.yml @@ -0,0 +1,44 @@ +exclude: + # Исключить платформы для сканирования + platforms: [] # ['my_excluded_platform_1', 'my_excluded_platform_2'] + + # Исключить ромы или части ромов для сканирования + roms: + # Раздел однофайловых игр. + # Не будет распространяться на файлы, находящиеся в подпапках (многодисковые ромы, игры с обновлениями, DLC, патчи и т.п.) + single_file: + # Исключить из сканирования все файлы с определенными расширениями + extensions: [] # ['xml', 'txt'] + + # Исключить совпадающие имена файлов для сканирования. + # Поддерживает сопоставление шаблонов имен файлов Unix. + # Также можно исключать файлы по расширению + names: [] # ['info.txt', '._*', '*.nfo'] + + # Раздел многофайловых игр + # Применимо к файлам, находящимся в подпапках (многодисковые ромы, игры с обновлениями, DLC, патчи и т.д.) + multi_file: + # Исключить из сканирования совпадающие имена 'folder' (RomM идентифицирует папки как многофайловые игры) + names: [] # ['my_multi_file_game', 'DLC'] + + # Исключить файлы в подпапках. + parts: + # Исключить совпадающие имена файлов для сканирования из многофайловых дисков. + # Имейте в виду, что RomM не сканирует папки внутри многофайловых игр. + # поэтому нет необходимости исключать папки из многофайловых игр. + names: [] # ['data.xml', '._*'] # Supports unix filename pattern matching + + # Исключить все файлы с определенными расширениями для сканирования из многофайловых дисков. + extensions: [] # ['xml', 'txt'] + +system: + # Свяжите различные имена платформ с именами платформ вашей текущей файловой системы. + # [имя папки вашей пользовательской платформы]: [имя платформы RomM] + # В этом примере, если у вас есть папка 'gc', RomM будет относиться к ней как к папке 'ngc', а если у вас есть папка 'psx', RomM будет относиться к ней как к папке 'ps'. + platforms: {} # { gc: 'ngc', psx: 'ps' } + + # Свяжите одну платформу с ее основной версией + versions: {} # { naomi: 'arcade' } + +# Имя папки, в которой находятся ваши ромы +filesystem: {} # { roms_folder: 'roms' } For example if your folder structure is /home/user/library/roms_folder diff --git a/romm/data/db/.gitkeep b/romm/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/romm/data/library/.gitkeep b/romm/data/library/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/romm/data/redis/.gitkeep b/romm/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/romm/data/resources/.gitkeep b/romm/data/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/romm/dfwebos-app.yml b/romm/dfwebos-app.yml new file mode 100644 index 0000000..0463caa --- /dev/null +++ b/romm/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1.1 +id: romm +category: media +name: RomM +version: "4.8.1" +tagline: Красивый, мощный, автономный менеджер ROM. +description: >- + 👾 RomM (Менеджер ROM) позволяет сканировать, пополнять, просматривать и воспроизводить вашу коллекцию игр с помощью чистого и отзывчивого интерфейса. + + + 🎮 Благодаря поддержке нескольких платформ, различным схемам именования и пользовательским тегам RomM незаменим для всех, кто играет на эмуляторах. + + + **Особенности** + - Сканирует существующую библиотеку игр и дополняет ее метаданными из IGDB и MobyGames. + - Поддерживает большое количество платформ + - Играйте в игры прямо из браузера, используя EmulatorJS и RuffleRS. + - Поделитесь своей библиотекой с друзьями, ограничив при этом доступ и разрешения. + - Поддерживает схемы именования MAME, Nintendo Switch и Sony Playstation. + - Обнаруживает и группирует многофайловые игры (например, игры для PS1 с несколькими компакт-дисками) + - Может анализировать теги в именах файлов (например, (E), (США), (версия v1) и т. д.) + - Просматривайте, загружайте, обновляйте и удаляйте игры из любого современного веб-браузера. +developer: rommapp +website: https://github.com/rommapp/romm +repo: https://github.com/rommapp/romm +support: https://github.com/rommapp/romm/issues +port: 4002 +submitter: Mateo Silguero +submission: https://github.com/getumbrel/dfwebos-apps/pull/2020 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Это исправление поверх версии 4.8.0. Ключевые исправления и дополнения включают в себя: + - Исправлено 500 ошибок в конечной точке состояния задачи после завершения задач очистки. + - Исправлены ссылки с приглашением на регистрацию, терявшие свой токен при внешних перенаправлениях. + - Исправлено удаление вложенных (подкаталогов) ПЗУ из файловой системы. + - Исправлены ошибки статуса задачи, когда срок жизни задания истек. + - Добавлена поддержка исходящего HTTP-прокси для внутренних запросов. + - Статистика по платформам на главной странице теперь включена для сокращения времени загрузки. + + + Полные примечания к выпуску можно найти по адресу https://github.com/rommapp/romm/releases. \ No newline at end of file diff --git a/romm/docker-compose.yml b/romm/docker-compose.yml new file mode 100644 index 0000000..c25e592 --- /dev/null +++ b/romm/docker-compose.yml @@ -0,0 +1,51 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: romm_server_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + server: + user: "1000:1000" + image: rommapp/romm:4.8.1@sha256:2b7a1714b287f69b081ad2a63bb8c2fa673666a17b2f21322b580b0cd51cb266 + volumes: + - ${APP_DATA_DIR}/data/resources:/romm/resources + - ${APP_DATA_DIR}/data/redis:/redis-data + - ${APP_DATA_DIR}/data/library:/romm/library + - ${APP_DATA_DIR}/data/assets:/romm/assets + - ${APP_DATA_DIR}/data/config:/romm/config + restart: on-failure + depends_on: + db: + condition: service_healthy + environment: + - DB_HOST=romm_db_1 + - DB_NAME=romm + - DB_USER=romm-user + - DB_PASSWD=moneyprintergobrr + - ROMM_AUTH_SECRET_KEY=${APP_SEED} + # По состоянию на 17 февраля 2025 года ключи API нельзя добавлять через веб-интерфейс, их необходимо добавить в файл создания здесь. + #- IGDB_CLIENT_ID= # Создайте ID и SECRET в IGDB. + #- IGDB_CLIENT_SECRET= # https://api-docs.igdb.com/#account-creation + #- MOBYGAMES_API_KEY= # https://www.mobygames.com/info/api/ + #- STEAMGRIDDB_API_KEY= # https://github.com/rommapp/romm/wiki/Generate-API-Keys#steamgriddb + + db: + user: "1000:1000" + image: mariadb:11.4.5@sha256:5dfb3093333fa0ea53194ddef0a2bfa21d3b1e1353bd228b22610cd6fc0c04da + restart: on-failure + environment: + - MARIADB_ROOT_PASSWORD=dfwebos + - MARIADB_DATABASE=romm + - MARIADB_USER=romm-user + - MARIADB_PASSWORD=moneyprintergobrr + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + start_period: 30s + interval: 10s + timeout: 5s + retries: 5 diff --git a/romm/hooks/pre-start b/romm/hooks/pre-start new file mode 100755 index 0000000..59ee5e3 --- /dev/null +++ b/romm/hooks/pre-start @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +set -euo pipefail + +### Правильные разрешения для каталогов данных romm + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="${APP_DIR}/data" + +DESIRED_OWNER="1000:1000" + +CONFIG_DATA_DIR="${APP_DATA_DIR}/config" + +romm_correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +### Создайте файл конфигурации по умолчанию для romm, если он не существует. + +ROMM_CONFIG_FILE="${CONFIG_DATA_DIR}/config.yml" + +# Проверяем, не существует ли конфиг-файл ромма +if [[ ! -f "${ROMM_CONFIG_FILE}" ]]; then + echo "Creating romm configuration file." + # Создайте файл конфигурации romm. + cat >"${ROMM_CONFIG_FILE}" <<'EOF' +exclude: + # Исключить платформы для сканирования + platforms: [] # ['my_excluded_platform_1', 'my_excluded_platform_2'] + + # Исключить ромы или части ромов для сканирования + roms: + # Раздел однофайловых игр. + # Не будет распространяться на файлы, находящиеся в подпапках (многодисковые ромы, игры с обновлениями, DLC, патчи и т.п.) + single_file: + # Исключить из сканирования все файлы с определенными расширениями + extensions: [] # ['xml', 'txt'] + + # Исключить совпадающие имена файлов для сканирования. + # Поддерживает сопоставление шаблонов имен файлов Unix. + # Также можно исключать файлы по расширению + names: [] # ['info.txt', '._*', '*.nfo'] + + # Раздел многофайловых игр + # Применимо к файлам, находящимся в подпапках (многодисковые ромы, игры с обновлениями, DLC, патчи и т.д.) + multi_file: + # Исключить из сканирования совпадающие имена 'folder' (RomM идентифицирует папки как многофайловые игры) + names: [] # ['my_multi_file_game', 'DLC'] + + # Исключить файлы в подпапках. + parts: + # Исключить совпадающие имена файлов для сканирования из многофайловых дисков. + # Имейте в виду, что RomM не сканирует папки внутри многофайловых игр. + # поэтому нет необходимости исключать папки из многофайловых игр. + names: [] # ['data.xml', '._*'] # Supports unix filename pattern matching + + # Исключить все файлы с определенными расширениями для сканирования из многофайловых дисков. + extensions: [] # ['xml', 'txt'] + +system: + # Свяжите различные имена платформ с именами платформ вашей текущей файловой системы. + # [имя папки вашей пользовательской платформы]: [имя платформы RomM] + # В этом примере, если у вас есть папка 'gc', RomM будет относиться к ней как к папке 'ngc', а если у вас есть папка 'psx', RomM будет относиться к ней как к папке 'ps'. + platforms: {} # { gc: 'ngc', psx: 'ps' } + + # Свяжите одну платформу с ее основной версией + versions: {} # { naomi: 'arcade' } + +# Имя папки, в которой находятся ваши ромы +filesystem: {} # { roms_folder: 'roms' } For example if your folder structure is /home/user/library/roms_folder +EOF + +echo "Created romm configuration file." + +romm_correct_permission "${CONFIG_DATA_DIR}" + +fi diff --git a/rotki/data/data/.gitkeep b/rotki/data/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/rotki/data/logs/.gitkeep b/rotki/data/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/rotki/dfwebos-app.yml b/rotki/dfwebos-app.yml new file mode 100644 index 0000000..1494a35 --- /dev/null +++ b/rotki/dfwebos-app.yml @@ -0,0 +1,60 @@ +manifestVersion: 1 +id: rotki +category: finance +name: rotki +version: "1.42.1" +tagline: Отслеживание портфеля, аналитика, бухгалтерская и налоговая отчетность +description: >- + rotki — это инструмент с открытым исходным кодом для отслеживания портфеля, аналитики, бухгалтерского учета и налоговой отчетности, который защищает вашу конфиденциальность. + + + Миссия rotki — обеспечить прозрачность в крипто- и финансовом секторах посредством использования открытого исходного кода. + + + Самое главное, в отличие от практически любой другой конкурирующей службы, которая состоит из SaaS с закрытым исходным кодом, которому вы вынуждены передавать все свои финансовые данные, с rotki ваши данные хранятся в зашифрованном виде локально на вашем компьютере. + + + Это позволяет вам взять на себя ответственность за ваши финансовые данные! + + + ⚠️ ВАЖНО ⚠️ Доступ к Rotki возможен локально. Следует любой ценой избегать размещения его на общедоступной машине, если только вы не знаете, что делаете! +backupIgnore: + - data/logs/* +developer: Rotki +website: https://rotki.com +dependencies: [] +repo: https://github.com/rotki/rotki +support: https://github.com/rotki/rotki/issues +port: 8084 +releaseNotes: >- + Это патч, исправляющий проблемы, о которых сообщалось за последние 5 недель. + + + Ключевые моменты включают в себя: + - Обнаружение и устранение несоответствий во внутренних данных транзакций EVM путем повторного извлечения или перекодирования. + - Добавлены правила перевода на основе затрат для уменьшения ошибок при перемещении средств (например, упаковка ETH, депозиты DeFi). + - Свопы Sushiswap теперь декодируются во всех цепочках EVM. + - Поддержка Yearn Finance распространяется на все сети EVM. + - Обнаружение комиссий ERC-4337 теперь работает во всех цепочках EVM. + - Добавлено событие подтипа спама для ручной маркировки спама, фишинга или транзакций по отравлению адресов. + - Исправлены значки активов, которые не загружались в развертываниях Docker. + - Улучшено декодирование транзакций Curve, Pendle, Beefy и Gearbox. + - Ограничения валидатора ставок ETH теперь проверяются перед отправкой с помощью удобных для пользователя сообщений. + - Множество исправлений ошибок, связанных с декодированием транзакций, балансами и поведением интерфейс. + + + ⚠️ Как всегда при обновлении, все события истории EVM необходимо будет перекодировать. Это занимает время в зависимости от количества событий, но необходимо для применения всех изменений. + + + Полные примечания к выпуску можно найти по адресу https://github.com/rotki/rotki/releases. +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: Xosten +submission: https://github.com/getumbrel/dfwebos-apps/pull/255 diff --git a/rotki/docker-compose.yml b/rotki/docker-compose.yml new file mode 100644 index 0000000..d159d2b --- /dev/null +++ b/rotki/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: rotki_web_1 + APP_PORT: 80 + + web: + image: rotki/rotki:v1.42.1@sha256:c088bdd6fec5bfe92f6e1a93829d844fa8076040d1754683e07348a97677d4d0 + restart: on-failure + stop_grace_period: 1m + init: true + volumes: + - ${APP_DATA_DIR}/data/data:/data + - ${APP_DATA_DIR}/data/logs:/logs diff --git a/route96/data/config.yaml b/route96/data/config.yaml new file mode 100644 index 0000000..0010574 --- /dev/null +++ b/route96/data/config.yaml @@ -0,0 +1,11 @@ +# Адрес прослушивания веб-сервера +listen: "0.0.0.0:8002" + +# Строка подключения к базе данных (MySQL/MariaDB) +database: "mysql://route96:moneyprintergobrrr@route96_db_1:3306/route96" + +# Каталог для хранения загрузок +storage_dir: "/app/data" + +# Максимальный поддерживаемый размер файла для загрузки (100 MB) +max_upload_bytes: 104857600 diff --git a/route96/data/db/.gitkeep b/route96/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/route96/data/uploads/.gitkeep b/route96/data/uploads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/route96/dfwebos-app.yml b/route96/dfwebos-app.yml new file mode 100644 index 0000000..60f0d75 --- /dev/null +++ b/route96/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: route96 +category: social +name: Route96 +version: "0.7.0" +tagline: Медиасервер Blossom/NIP-96 для Nostr +description: >- + Route96 — это автономный медиа-сервер для экосистемы Nostr. + внедрение протокола Blossom и стандарта NIP-96, чтобы вы могли хранить + и обслуживайте файлы непосредственно со своего узла. + + + Ключевые особенности: + + - Поддержка протокола Full Blossom (BUD-01–BUD-09): загрузка, загрузка, удаление, составление списка, зеркалирование и оптимизация мультимедиа. + - Протокол хранения файлов NIP-96 с аутентификацией Nostr (события типа 24242) + - Сжатие изображений и видео с автоматическим преобразованием WebP и созданием миниатюр. + - Предварительный просмотр прогрессивных изображений Blurhash + - Маркировка контента ИИ с использованием настраиваемых моделей HuggingFace ViT. + - Защита конфиденциальности EXIF — при необходимости отклоняйте изображения с конфиденциальными метаданными, такими как координаты GPS. + - Поддержка белого списка для ограничения загрузки утвержденными открытыми ключами Nostr. + - Управление квотами для каждого пользователя + - Веб-панель администратора для управления контентом и пользователями. + - Очередь модерации с отчетами сообщества (NIP-56) и автоматической пометкой. + - Поддержка запроса диапазона RFC 7233 для плавной потоковой передачи видео. + + + Route96 создан на Rust для обеспечения высокой производительности и низкого использования ресурсов. + естественным образом сочетается с любым реле или клиентом Nostr. +developer: v0l +website: https://github.com/v0l/route96 +dependencies: [] +repo: https://github.com/v0l/route96 +support: https://github.com/v0l/route96/issues +port: 8002 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: "" +torOnly: false +submitter: kieran +submission: https://github.com/getumbrel/dfwebos-apps/pull/5064 diff --git a/route96/docker-compose.yml b/route96/docker-compose.yml new file mode 100644 index 0000000..4e7fa8e --- /dev/null +++ b/route96/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: route96_server_1 + APP_PORT: 8002 + PROXY_AUTH_ADD: "false" + + server: + image: voidic/route96:v0.7.0@sha256:5ab6064f18ca191dd5836487505607122ef3bfeba6e6ccc5b28eef5c604cf4cc + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/uploads:/app/data + - ${APP_DATA_DIR}/data/config.yaml:/app/config.yaml + environment: + RUST_LOG: "info" + APP_PUBLIC_URL: "http://${APP_DOMAIN}:8002" + depends_on: + - db + + db: + image: mariadb:11.2.4@sha256:e9ea1dbab6783ff0281e41e3357d950a5f598b2033559b8443e03b181807910b + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: "moneyprintergobrrr" + MYSQL_USER: "route96" + MYSQL_PASSWORD: "moneyprintergobrrr" + MYSQL_DATABASE: "route96" diff --git a/rustdesk-server/data/hbbr/.gitkeep b/rustdesk-server/data/hbbr/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/rustdesk-server/data/hbbr/.gitkeep @@ -0,0 +1 @@ + diff --git a/rustdesk-server/data/hbbs/.gitkeep b/rustdesk-server/data/hbbs/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/rustdesk-server/data/hbbs/.gitkeep @@ -0,0 +1 @@ + diff --git a/rustdesk-server/data/www/favicon.png b/rustdesk-server/data/www/favicon.png new file mode 100644 index 0000000..18151e8 Binary files /dev/null and b/rustdesk-server/data/www/favicon.png differ diff --git a/rustdesk-server/data/www/index.html b/rustdesk-server/data/www/index.html new file mode 100644 index 0000000..47c3b37 --- /dev/null +++ b/rustdesk-server/data/www/index.html @@ -0,0 +1,359 @@ + + + Сервер RustDesk + + + + + + +
+
+ +
+ ● Запущено +

RustDesk Server

+
+
+

 

+
+

Краткое руководство по настройке соединений между клиентом и сервером 🔧 

+

 

+
    +
  1. +

    Откройте RustDesk на + клиенте
    Запустите RustDesk на компьютере или устройстве, + которое хотите использовать.

    +
  2. +
  3. +

    Откройте + настройки
    Нажмите на меню с тремя точками рядом с вашим + ID и выберите Settings.

    +
  4. +
  5. +

    Разблокируйте сетевые + настройки
    В меню настроек перейдите в раздел Network. + Нажмите Unlock Network Settings. Чтобы изменить эти параметры, может потребоваться ввести системный пароль.

    +
  6. +
  7. +

    Выберите "ID/Relay + Server"
    После разблокировки сетевых настроек + выберите пункт "ID/Relay Server".

    +
  8. +
  9. +

    Введите данные + сервера

    +
      +
    • +

      ID- + сервер: Введите dfwebos.local:21116 + как IP-адрес или домен вашего ретрансляционного сервера RustDesk.

      +
    • +
    • +

      Ключ: Используйте следующий открытый ключ: +

      Загрузка ключа...
      +

      +
    • +
    • +

      API- + сервер: Это поле можно оставить пустым.

      +
    • +
    • +

      Relay- + сервер: Это поле можно оставить пустым.

      +
    • +
    +
  10. +
  11. +

    Примените + настройки
    После ввода данных нажмите + Apply, чтобы сохранить настройки.

    +
  12. +
  13. +

    Повторите для всех + клиентов
    Выполните те же действия на всех устройствах, + которые должны подключаться к вашему серверу. На каждом из них нужно указать один и тот же dfwebos.local:21116 и один и тот же открытый ключ.

    +
  14. +
+
+

 

+

💡 Более подробную информацию о RustDesk, включая настройку сервера, руководства для пользователей и + документацию для разработчиков, можно найти в документации RustDesk.

+
+ + + + + diff --git a/rustdesk-server/data/www/logo.png b/rustdesk-server/data/www/logo.png new file mode 100644 index 0000000..42ff8aa Binary files /dev/null and b/rustdesk-server/data/www/logo.png differ diff --git a/rustdesk-server/dfwebos-app.yml b/rustdesk-server/dfwebos-app.yml new file mode 100644 index 0000000..53dc747 --- /dev/null +++ b/rustdesk-server/dfwebos-app.yml @@ -0,0 +1,42 @@ +manifestVersion: 1.1 +id: rustdesk-server +name: RustDesk Server +tagline: Быстрое и надежное решение для удаленного доступа +category: networking +version: "1.1.15" +port: 21080 +description: >- + RustDesk — это автономное и безопасное решение для удаленного рабочего стола с открытым исходным кодом, которое позволяет пользователям получать удаленный доступ к компьютерам и управлять ими. Он предоставляет функциональность, аналогичную другим инструментам удаленного рабочего стола, таким как TeamViewer и AnyDesk, но с ключевым преимуществом открытого исходного кода, что означает, что пользователи могут проверять код, участвовать в его разработке и даже самостоятельно размещать программное обеспечение на своих собственных серверах. Это обеспечивает больший контроль над средой удаленного доступа и лучшую конфиденциальность, поскольку все соединения могут направляться через сервер, которым владеет или управляет пользователь, вместо того, чтобы полагаться на стороннего поставщика. + + + RustDesk создан с использованием Rust, языка системного программирования, известного своей производительностью, безопасностью и безопасностью памяти. Программное обеспечение легкое и простое в использовании, имеет интуитивно понятный интерфейс, который делает доступ к удаленному рабочему столу доступным как для технических, так и для нетехнических пользователей. Он поддерживает кроссплатформенную функциональность, что означает, что вы можете подключаться с устройств Windows, macOS, Linux, iOS и Android для управления удаленным компьютером. RustDesk предлагает такие важные функции, как передача файлов, синхронизация буфера обмена и совместное использование экрана, обеспечивая удобство работы для пользователей, нуждающихся в удаленной помощи или работающих из разных мест. + + + Одним из основных преимуществ RustDesk является его способность работать, не полагаясь на централизованные серверы. Несмотря на то, что для удобства он предлагает облачный сервис, пользователи могут настроить собственную серверную инфраструктуру, повышая безопасность и конфиденциальность своих удаленных сеансов. Благодаря этому варианту самостоятельного размещения пользователи могут иметь полный контроль над данными, передаваемыми между устройствами, что идеально подходит для отдельных лиц или организаций, которые отдают приоритет конфиденциальности и защите данных. + + + В целом, RustDesk представляет собой мощную альтернативу проприетарному программному обеспечению для удаленного рабочего стола. Его природа с открытым исходным кодом, возможность самостоятельного размещения и высокая производительность делают его привлекательным выбором для всех, кто ищет надежное, безопасное и настраиваемое решение для удаленного рабочего стола. +developer: RustDesk Team +website: https://rustdesk.com +submitter: Knufle +submission: https://github.com/getumbrel/dfwebos-apps/pull/2411 +repo: https://github.com/rustdesk/rustdesk-server +support: https://github.com/rustdesk/rustdesk/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: >- + Это обновление включает в себя несколько улучшений и исправлений: + - Исправлена обработка адреса обратной связи. + - Увеличена пропускная способность по умолчанию для повышения производительности. + - Добавлена поддержка запуска без root-прав + - Добавлена опция регистрации попыток аутентификации для использования с такими инструментами безопасности, как Fail2ban. + - Улучшен запрос журнала подключений. + + + Полные примечания к выпуску можно найти по адресу https://github.com/rustdesk/rustdesk-server/releases. +path: "" diff --git a/rustdesk-server/docker-compose.yml b/rustdesk-server/docker-compose.yml new file mode 100644 index 0000000..e6ec018 --- /dev/null +++ b/rustdesk-server/docker-compose.yml @@ -0,0 +1,41 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: rustdesk-server_web_1 + APP_PORT: 80 + + hbbs: + container_name: hbbs + image: rustdesk/rustdesk-server:1.1.15@sha256:10818ec05b179039c6660f4d8e74b303f0db2858bbad2b18e24992ea22d54cd6 + ports: + - 21115:21115 + - 21116:21116 + - 21116:21116/udp + - 21118:21118 + command: hbbs + volumes: + - ${APP_DATA_DIR}/data/hbbs:/root + network_mode: "host" + depends_on: + - hbbr + restart: on-failure + + hbbr: + container_name: hbbr + image: rustdesk/rustdesk-server:1.1.15@sha256:10818ec05b179039c6660f4d8e74b303f0db2858bbad2b18e24992ea22d54cd6 + ports: + - 21117:21117 + - 21119:21119 + command: hbbr + volumes: + - ${APP_DATA_DIR}/data/hbbr:/root + network_mode: "host" + restart: on-failure + + web: + image: nginx:1.27@sha256:124b44bfc9ccd1f3cedf4b592d4d1e8bddb78b51ec2ed5056c52d3692baebc19 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/www:/usr/share/nginx/html:ro diff --git a/rustdesk-server/hooks/post-start b/rustdesk-server/hooks/post-start new file mode 100755 index 0000000..ae67549 --- /dev/null +++ b/rustdesk-server/hooks/post-start @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт позволяет отображать открытый ключ RustDesk в веб-интерфейсе. + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")"/..)" +PUBLIC_KEY_FILE="${APP_DATA_DIR}/data/hbbs/id_ed25519.pub" +DESTINATION_FILE="${APP_DATA_DIR}/data/www/public_key.txt" + +echo "Waiting for file (${PUBLIC_KEY_FILE}) to exist..." + +# Подождите до 30 секунд... +for attempt in $(seq 1 300); do + if [[ -f "${PUBLIC_KEY_FILE}" ]]; then + echo "public key file exists" + # Скопируйте открытый ключ в файл назначения. + cp "${PUBLIC_KEY_FILE}" "${DESTINATION_FILE}" + break + fi + sleep 0.1 +done diff --git a/rusty-kaspad/data/.gitkeep b/rusty-kaspad/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/rusty-kaspad/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/rusty-kaspad/data/app/.gitkeep b/rusty-kaspad/data/app/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/rusty-kaspad/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/rusty-kaspad/dfwebos-app.yml b/rusty-kaspad/dfwebos-app.yml new file mode 100644 index 0000000..76774f8 --- /dev/null +++ b/rusty-kaspad/dfwebos-app.yml @@ -0,0 +1,50 @@ +manifestVersion: 1 +id: rusty-kaspad +category: crypto +name: Rusty Kaspad +version: "v1.1.0-1" +tagline: Реализация полного узла Kaspa на Rust. +description: | + Rusty Kaspad — это реализация полного узла Kaspa на Rust. Это программное обеспечение узла предоставляет основные сетевые службы Kaspa, включая одноранговую сеть и функциональность RPC. + + Kaspa — это криптовалюта PoW с мгновенным подтверждением транзакций с помощью технологии BlockDAG. + + Самое сердце Каспы — это публичные узлы. Пожалуйста, рассмотрите возможность сделать свой узел общедоступным, перенаправив TCP-порт 16111 на вашем брандмауэре на IP-адрес вашего узла DFWebOS для поддержки сети. + + Этот пакет использует контейнер Docker, поддерживаемый [supertypo](https://hub.docker.com/r/kaspanet/rusty-kaspad), на основе [Rusty Kaspa](https://github.com/kaspanet/rusty-kaspa). + + Упаковано для DFWebOS Люком Данши (https://dunshea.au). +developer: Kaspa Community +website: https://github.com/kaspanet/rusty-kaspa +repo: https://github.com/kaspanet/rusty-kaspa +support: https://github.com/elldeeone/dfwebos-community-app-store/pulls +port: 4321 +dependencies: [] +path: "" +gallery: + - 1.jpg + - 2.jpg +releaseNotes: >- + ⚠️ В этом выпуске схема базы данных обновляется до версии 6. Для перехода на более старую версию узла после обновления может потребоваться удаление базы данных. + + + Основные моменты этого выпуска: + - Новый VSPC API v2 («GetVirtualChainFromBlockV2») упрощает интеграцию Kaspa, возвращая обновления цепочки и принятые данные транзакций за один вызов. + - Более быстрая и надежная первоначальная синхронизация и восстановление с более плавным восстановлением в реальных условиях. + - Значительные улучшения хранения и производительности, включая примерно в 3 раза более быструю синхронизацию на этапе заголовка на некоторых машинах. + - Меньшее использование памяти, сокращение накладных расходов на запись и более быстрая обработка заголовков и обрезки. + - Улучшена стабильность и правильность обрезки. + - Добавлена система предустановок RocksDB для сценариев использования архивов и жестких дисков с поддержкой каталогов WAL и контролем кэша. + - Собственный мост Rusty Kaspa Stratum Bridge выпущен как БЕТА + + + Полные примечания к выпуску можно найти по адресу https://github.com/kaspanet/rusty-kaspa/releases. + + + Примечание. Суффикс «-1» в этой версии приложения DFWebOS указывает на версию интерфейса/только пакета и не является новой версией узла Rusty Kaspa. + + В некоторых старых установках это обновление может привести к повторной синхронизации узла. +submitter: Luke Dunshea +submission: https://github.com/getumbrel/dfwebos-apps/pull/2060 +backupIgnore: + - data/app/* diff --git a/rusty-kaspad/docker-compose.yml b/rusty-kaspad/docker-compose.yml new file mode 100644 index 0000000..7ffdec4 --- /dev/null +++ b/rusty-kaspad/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: rusty-kaspad_frontend_1 + APP_PORT: 4321 + + frontend: + image: elldee/kaspa-frontend:v0.4.1@sha256:a77573dfbc706b632ba24b9087685dc0b44d588c60b5399e2c2df2a19bd38a93 + restart: on-failure + stop_grace_period: 1m + depends_on: + - kaspad + + kaspad: + image: kaspanet/rusty-kaspad:v1.1.0@sha256:150ffa0c0dcc6497951f9199d1ba3e48c7d91ef958846b28c9fb5045459a2dca + restart: on-failure + stop_grace_period: 3m + volumes: + - ${APP_DATA_DIR}/data/app:/app/data + ports: + - 16110:16110 # GRPC + - 16111:16111 # P2P + - 17110:17110 # WRPC (Borsh) + - 18110:18110 # WRPC (JSON) diff --git a/sabnzbd/data/config/.gitkeep b/sabnzbd/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/sabnzbd/dfwebos-app.yml b/sabnzbd/dfwebos-app.yml new file mode 100644 index 0000000..088f446 --- /dev/null +++ b/sabnzbd/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1.1 +id: sabnzbd +category: networking +name: SABnzbd +version: "4.5.5" +tagline: Автоматизированный инструмент загрузки Usenet +description: >- + SABnzbd делает Usenet максимально простым и оптимизированным, автоматизируя все, что мы можем. Все, что вам нужно сделать, это добавить файл .nzb. + SABnzbd берет на себя управление оттуда, где он будет автоматически загружен, проверен, исправлен, извлечен и сохранен без участия человека. + SABnzbd предлагает простой мастер настройки и инструменты самоанализа для проверки вашей настройки. + + + Если вы хотите узнать больше, вы можете зайти на наш сайт: https://sabnzbd.org.. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + + SABnzbd на DFWebOS настроен для работы без необходимости какой-либо дополнительной настройки. Он будет автоматически подключен к зависимым приложениям, таким как Radarr, Sonarr, Lidarr, Readarr и Prowlarr. Просто установите дополнительные мультимедийные приложения из DFWebOS App Store, и все будет работать без сбоев. + + + Если вы хотите изменить категории по умолчанию, настроенные при установке, вы можете сделать это, перейдя в раздел «Категории» на вкладке настроек SABnzbd. + Если вы это сделаете, вам нужно будет обновить категории в других ваших приложениях, таких как Sonarr и Radarr, чтобы они соответствовали тем, которые вы настроили в SABnzbd, чтобы они могли работать вместе. + + Вы также можете настроить ключи API для интеграции с другими приложениями, такими как Sonarr и Radarr, перейдя в раздел «Общие» в приложении SABnzbd. +developer: sabnzbd +website: https://sabnzbd.org/ +dependencies: [] +repo: https://github.com/sabnzbd/sabnzbd +support: https://forums.sabnzbd.org/ +port: 9876 +releaseNotes: >- + Этот выпуск включает в себя различные исправления ошибок и улучшения производительности. + + + Полные примечания к выпуску доступны по адресу https://github.com/sabnzbd/sabnzbd/releases. +permissions: + - STORAGE_DOWNLOADS + - GPU +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: Parth Jadhav +submission: https://github.com/getumbrel/dfwebos-apps/pull/810 diff --git a/sabnzbd/docker-compose.yml b/sabnzbd/docker-compose.yml new file mode 100644 index 0000000..282376b --- /dev/null +++ b/sabnzbd/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: sabnzbd_web_1 + APP_PORT: 8080 + PROXY_AUTH_WHITELIST: "/api*" + + web: + image: linuxserver/sabnzbd:4.5.5@sha256:37fc318dc632106eac00f096661f43ca513793bf51913bcbd989ba921b3409c8 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + environment: + - DOCKER_MODS=linuxserver/mods:universal-package-install + - INSTALL_PACKAGES=ffmpeg + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC diff --git a/sabnzbd/hooks/post-install b/sabnzbd/hooks/post-install new file mode 100755 index 0000000..a62acdc --- /dev/null +++ b/sabnzbd/hooks/post-install @@ -0,0 +1,131 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт делает 3 основные вещи: +# 1. Устанавливает каталоги загрузки и завершения по умолчанию на /downloads/incomplete и /downloads/complete соответственно. +# 2. Настраивает ini-файл, чтобы приложения *arr могли автоматически настраивать SABnzbd. +# 3. Перезапускает все установленные приложения *arr, чтобы можно было выполнить автоконфигурацию. + +# Перед запуском мастера установки мы можем добавить категории по умолчанию в ini-файл приложения SABnzbd, не беспокоясь о сохранении пользовательских изменений. + +# 1. Добавьте имя контейнера SABnzbd в host_whitelist в ini-файле приложения SABnzbd: +# host_whitelist = <все, что здесь установлено по умолчанию>, sabnzbd_web_1 + +# 2. Добавьте категории по умолчанию в INI-файл приложения SABnzbd для каждого приложения arr. + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +SABNZBD_CONF_FILE="${APP_DATA_DIR}/data/config/sabnzbd.ini" + +# Подождите до 30 секунд, пока файл sabnzbd.conf появится. +echo "Waiting up to 30 seconds for sabnzbd.ini file to exist..." +for attempt in $(seq 1 300); do + if [[ -f "${SABNZBD_CONF_FILE}" ]]; then + echo "sabnzbd.ini file exists" + break + fi + sleep 0.1 +done + +if [[ ! -f "${SABNZBD_CONF_FILE}" ]]; then + echo "sabnzbd.ini was never created. Something is likely wrong with the SABnzbd app." + exit +fi + +# подождите 5 секунд, чтобы убедиться, что файл полностью записан службой SABnzbd. +echo "Waiting 5 seconds for sabnzbd.ini file to be fully written..." +sleep 5 + +# остановить службу SABnzbd +echo "Stopping SABnzbd..." +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" stop web + +# Перезаписать каталоги загрузки +echo "Overwriting download_dir and complete_dir in sabnzbd.ini" +sed -i 's/download_dir = Downloads\/incomplete/download_dir = \/downloads\/incomplete/' "${SABNZBD_CONF_FILE}" +sed -i 's/complete_dir = Downloads\/complete/complete_dir = \/downloads\/complete/' "${SABNZBD_CONF_FILE}" + +# Добавьте имя контейнера SABnzbd в host_whitelist в ini-файле приложения SABnzbd. +echo "Adding SABnzbd container name to host_whitelist in sabnzbd.ini" +if grep -q '^host_whitelist =' "${SABNZBD_CONF_FILE}"; then + sed -i 's/^host_whitelist = \(.*\)/host_whitelist = \1 sabnzbd_web_1,/' "${SABNZBD_CONF_FILE}" +else + sed -i '/^\[misc\]/a host_whitelist = sabnzbd_web_1,' "${SABNZBD_CONF_FILE}" +fi + +# Добавьте категории в ini-файл приложения SABnzbd. +# Мы делаем это, потому что приложения *arr требуют, чтобы точные имена категорий присутствовали в ini-файле приложения SABnzbd для автоматической настройки SABnzbd. + +categories_content=$(cat << 'EOF' +[categories] +[[*]] +name = * +order = 0 +pp = 3 +script = None +dir = +newzbin = +priority = 0 +[[movies]] +name = movies +order = 0 +pp = +script = Default +dir = /downloads/movies +newzbin = movies +priority = 0 +[[prowlarr-fallback]] +name = prowlarr-fallback +order = 0 +pp = +script = Default +dir = /downloads +newzbin = +priority = -100 +[[books]] +name = books +order = 0 +pp = +script = Default +dir = /downloads/books +newzbin = books +priority = -100 +[[shows]] +name = shows +order = 0 +pp = +script = Default +dir = /downloads/shows +newzbin = shows +priority = 0 +[[music]] +name = music +order = 0 +pp = +script = Default +dir = /downloads/music +newzbin = music +priority = 0 +EOF +) + +# Добавьте категории в ini-файл +echo "$categories_content" >> "$SABNZBD_CONF_FILE" + +echo "Appended [categories] section with subheaders to $SABNZBD_CONF_FILE" + +# Запустите службу SABnzbd. +echo "Starting SABnzbd..." +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" start web + +# Перезапустите приложения *arr, чтобы запустить автоматическую настройку. +apps=("radarr" "sonarr" "lidarr" "readarr" "prowlarr") + +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +for app in "${apps[@]}"; do + if echo "$installed_apps" | grep --quiet "$app"; then + # Мы не блокируем скрипт при перезапуске приложений, поскольку хотим перезапускать все приложения параллельно. + # AND нам нужно, чтобы SABnzbd отображался в списке установленных приложений при перезапуске приложений. + "${DFWEBOS_ROOT}/scripts/app" restart "$app" & + fi +done \ No newline at end of file diff --git a/saifa/data/app/.gitkeep b/saifa/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/saifa/data/redis_data/.gitkeep b/saifa/data/redis_data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/saifa/dfwebos-app.yml b/saifa/dfwebos-app.yml new file mode 100644 index 0000000..4e8e5a0 --- /dev/null +++ b/saifa/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1 +id: saifa +category: bitcoin +name: Saifa +version: "1.0.0" +tagline: Lightning сетевой менеджер счетов +description: >- + Saifa разработан для повышения совместимости и эффективности приложений, взаимодействующих с сетевым демоном Lightning (LND). + + + Наш проект упрощает процесс интеграции, позволяя приложениям беспрепятственно подключаться к LND через интуитивно понятную систему веб-перехватчиков. + + + С помощью Saifa пользователи могут легко создавать новые счета, используя простой REST API, отменять счета и получать обновления о статусе счетов в режиме реального времени. + + + Эта система создана для оптимизации операций и обеспечения более плавного проведения транзакций в сети Lightning, что делает ее важным инструментом для разработчиков, стремящихся оптимизировать свои приложения для повышения производительности и удовлетворенности пользователей. +releaseNotes: "" +developer: patra nakamo +website: https://github.com/patranakamo +dependencies: + - bitcoin + - lightning +repo: https://github.com/patranakamo/saifa-be +support: https://github.com/patranakamo/saifa-be/issues +port: 9989 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +deterministicPassword: true +submitter: patra nakamo +torOnly: false +submission: https://github.com/getumbrel/umbrel/pull/1021 diff --git a/saifa/docker-compose.yml b/saifa/docker-compose.yml new file mode 100644 index 0000000..5765438 --- /dev/null +++ b/saifa/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: saifa_frontend_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + backend: + image: patranakamo/saifa-be:v1.3.3@sha256:a04bbaba219b35d7bb59426665ae813ad2d219cb1b2e0eceed1c79170ede6228 + restart: on-failure + stop_grace_period: 1m + ports: + - "9988:80" + volumes: + - ${APP_DATA_DIR}/data/app:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/var/www/html/lnd:ro + depends_on: + - redis + environment: + HOME: /data + APP_PASSWORD: $APP_PASSWORD + BITCOIN_NETWORK: $APP_BITCOIN_NETWORK + LN_SERVER_URL: "https://$LND_IP:$LND_REST_PORT" + REDIS_HOST: saifa_redis_1 + + frontend: + image: patranakamo/saifa-fe:v1.3.2@sha256:06ab9f0246e77a63a102111d00e2da7dfe1a94ed21032e56dbdc63dded9717bc + restart: on-failure + depends_on: + - backend + + redis: + image: redis:7.2.4@sha256:f14f42fc7e824b93c0e2fe3cdf42f68197ee0311c3d2e0235be37480b2e208e6 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/redis_data:/data/redis_data + environment: + HOME: /data/redis_data diff --git a/samba/data/samba/smb.conf b/samba/data/samba/smb.conf new file mode 100644 index 0000000..83610d6 --- /dev/null +++ b/samba/data/samba/smb.conf @@ -0,0 +1,19 @@ +[global] + security = user + server min protocol = SMB2 + + # отключить услуги печати + load printers = no + printing = bsd + printcap name = /dev/null + disable spoolss = yes + +[storage] + path = /storage + comment = Shared + valid users = @smb + browseable = yes + writable = yes + read only = no + force user = dfwebos + force group = smb \ No newline at end of file diff --git a/samba/dfwebos-app.yml b/samba/dfwebos-app.yml new file mode 100644 index 0000000..e12f727 --- /dev/null +++ b/samba/dfwebos-app.yml @@ -0,0 +1,50 @@ +manifestVersion: 1.2 +id: samba +name: Samba +tagline: Сделайте свое хранилище доступным с помощью Samba +category: networking +version: "4.23.5-r1" +port: 9445 +description: >- + ⚠️ Уведомление об удалении: приложение Samba было удалено из DFWebOS App Store, поскольку обмен файлами теперь встроен в DFWebOS. + + 📂 Упростите обмен файлами с помощью Samba! + + Samba — это мощный инструмент, который позволяет легко обмениваться файлами на разных устройствах в сети. Это позволяет вашему устройству DFWebOS беспрепятственно обмениваться файлами с Windows, macOS, Linux и другими системами. Независимо от того, предоставляете ли вы общий доступ к документам, медиафайлам или резервным копиям, Samba делает это простым и безопасным. + + + 📄 Легкий доступ к файлам + + Получите доступ к файлам на вашем устройстве DFWebOS и управляйте ими с любого компьютера в вашей сети. Попрощайтесь со сложным доступом SSH! + + + 🖥️ Кроссплатформенная совместимость + + Samba работает со всеми основными операционными системами, включая Windows, macOS и Linux. Делитесь своими файлами, не беспокоясь о проблемах совместимости. + + + 🛡️Безопасно и Надежно + + Samba обеспечивает безопасный и стабильный обмен файлами уже более 30 лет. Доверьтесь ему, чтобы ваши файлы были в безопасности и доступны. +developer: Samba +website: https://www.samba.org/ +submitter: João Victor +permissions: + - STORAGE_DOWNLOADS +submission: https://github.com/getumbrel/dfwebos-apps/pull/1161 +repo: https://github.com/dockur/samba +support: https://github.com/dockur/samba/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск включает в себя несколько улучшений и обновлений службы обмена файлами Samba. + + + Полные примечания к выпуску можно найти по адресу https://github.com/dockur/samba/releases/tag/v4.23.5-r1. +dependencies: [] +path: "" +defaultUsername: "dfwebos" +deterministicPassword: true +disabled: true diff --git a/samba/docker-compose.yml b/samba/docker-compose.yml new file mode 100644 index 0000000..cb8ddc6 --- /dev/null +++ b/samba/docker-compose.yml @@ -0,0 +1,28 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: samba_homepage_1 + APP_PORT: 80 + + homepage: + image: loficafe/static-web-server-samba:1.0.1@sha256:783667f052d9535bb75946ff9bc807989b041e25437ef10c30b291589d041e6e + restart: on-failure + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/samba/smb.conf:/public/smb.conf:ro + + server: + image: dockurr/samba:4.23.5@sha256:63428d1cb6c1ace60cfa782c1d6c9e4b3686044fc47600c97055e6b62e9bb5fa + restart: on-failure + environment: + USER: dfwebos + PASS: ${APP_PASSWORD} + UID: 1000 + GID: 1000 + ports: + - '446:445' + volumes: + - ${APP_DATA_DIR}/data/samba/smb.conf:/etc/samba/smb.conf + - ${DFWEBOS_ROOT}/data/storage:/storage diff --git a/samourai-server/dfwebos-app.yml b/samourai-server/dfwebos-app.yml new file mode 100644 index 0000000..ae0df15 --- /dev/null +++ b/samourai-server/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1.1 +id: samourai-server +category: bitcoin +name: Samourai Server +version: "1.16.1-hotfix-4" +tagline: Ваш личный сервер поддержки для Samourai Wallet +description: >- + ⚠️ Функционал Whirlpool больше не работает из-за отключения координатора Whirlpool Samourai. Функциональность Dojo не пострадает. + + + Samourai Server — эксклюзивное приложение DFWebOS, на котором работает Samourai Dojo. + и резервные серверы Whirlpool, а также предоставляет простые пошаговые инструкции. + чтобы подключить к ним свой кошелек Samourai. Кошелек Samourai не имеет себе равных + конфиденциальность транзакций, но его конфигурация по умолчанию по-прежнему зависит от сети. + уровень потери конфиденциальности. + + + По умолчанию Samourai Wallet подключается к своему централизованно управляемому Dojo, расположенному в Исландии. Разместив собственный сервер Samourai, вы можете полностью обойти его серверы при использовании Samourai Wallet или Sentinel и без каких-либо сложностей получить полный финансовый суверенитет. + + + Пакеты Whirlpool CLI v0.10.15. +developer: Samourai +website: https://samouraiwallet.com +dependencies: + - bitcoin + - electrs +repo: https://github.com/louneskmt/dfwebos-samourai-dojo/tree/v1.16.1-dfwebos +support: https://t.me/SamouraiWallet +port: 3021 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Это обновление исправляет ошибку, из-за которой сервер Samourai не мог подключиться к Bitcoin Core v28.0. + + + Обратите внимание, что функция Whirlpool больше не работает из-за закрытия координатора Whirlpool Samourai. Функциональность Dojo не пострадает. +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/461 \ No newline at end of file diff --git a/samourai-server/docker-compose.yml b/samourai-server/docker-compose.yml new file mode 100644 index 0000000..5dc9f2f --- /dev/null +++ b/samourai-server/docker-compose.yml @@ -0,0 +1,157 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_SAMOURAI_SERVER_IP + APP_PORT: 8081 + PROXY_AUTH_ADD: "false" + db: + image: louneskmt/dojo-db:1.5.0-low-mem@sha256:5af4f90818d55360e572033fcc493cd945143e7a3aaef91fa7e102f3c66c7a5b + init: true + restart: on-failure + stop_grace_period: 5m + user: "1000:1000" + environment: + MYSQL_DATABASE: samourai-main + MYSQL_ROOT_PASSWORD: rootpassword + MYSQL_USER: samourai + MYSQL_PASSWORD: password + volumes: + - ${APP_DATA_DIR}/mysql/data:/var/lib/mysql + networks: + default: + ipv4_address: $APP_SAMOURAI_SERVER_DB_IP + + node: + # image: louneskmt/dojo-nodejs:1.16.1@sha256:49de92774ecfcb88af1dc67f8d498641d750c4ec9acaab3c448d70c4f2d4bfe7 + image: nmfretz/dojo-nodejs:1.16.1-rpcfix@sha256:bd047ed34e04b605c662c94ed5819322c0db65b6e3425acd3607486ef28a83ce + init: true + restart: on-failure + command: "/home/node/app/wait-for-it.sh ${APP_SAMOURAI_SERVER_DB_IP}:3306 --timeout=720 --strict -- /home/node/app/restart.sh" + user: "1000:1000" + environment: + # ГЛОБАЛЬНЫЙ + COMMON_BTC_NETWORK: $APP_BITCOIN_NETWORK + DOJO_VERSION_TAG: 1.16.1 + NET_DOJO_TOR_IPV4: $TOR_PROXY_IP + TOR_SOCKS_PORT: $TOR_PROXY_PORT + NET_DOJO_MYSQL_IPV4: $APP_SAMOURAI_SERVER_DB_IP + + # MySQL + MYSQL_DATABASE: samourai-main + MYSQL_USER: samourai + MYSQL_PASSWORD: password + + # НОДЕЖС + NODE_GAP_EXTERNAL: 100 + NODE_GAP_INTERNAL: 100 + NODE_ADDR_FILTER_THRESHOLD: 1000 + NODE_ADDR_DERIVATION_MIN_CHILD: 2 + NODE_ADDR_DERIVATION_MAX_CHILD: 2 + NODE_ADDR_DERIVATION_THRESHOLD: 10 + NODE_TXS_SCHED_MAX_ENTRIES: 10 + NODE_TXS_SCHED_MAX_DELTA_HEIGHT: 18 + NODE_JWT_ACCESS_EXPIRES: 900 + NODE_JWT_REFRESH_EXPIRES: 7200 + NODE_PREFIX_STATUS: status + NODE_PREFIX_SUPPORT: support + NODE_PREFIX_STATUS_PUSHTX: status + NODE_TRACKER_MEMPOOL_PERIOD: 10000 + NODE_TRACKER_UNCONF_TXS_PERIOD: 300000 + NODE_ACTIVE_INDEXER: local_indexer + NODE_FEE_TYPE: ECONOMICAL + + # БЕЗОПАСНОСТЬ + NODE_API_KEY: $APP_SAMOURAI_SERVER_NODE_API_KEY + NODE_ADMIN_KEY: $APP_SAMOURAI_SERVER_NODE_ADMIN_KEY + NODE_JWT_SECRET: $APP_SAMOURAI_SERVER_NODE_JWT_SECRET + + # БИТКОИН + BITCOIND_IP: $APP_BITCOIN_NODE_IP + BITCOIND_RPC_PORT: $APP_BITCOIN_RPC_PORT + BITCOIND_RPC_USER: $APP_BITCOIN_RPC_USER + BITCOIND_RPC_PASSWORD: $APP_BITCOIN_RPC_PASS + BITCOIND_ZMQ_RAWTXS: $APP_BITCOIN_ZMQ_RAWTX_PORT + BITCOIND_ZMQ_BLK_HASH: $APP_BITCOIN_ZMQ_HASHBLOCK_PORT + + # ЭКСПЛОРЕР + EXPLORER_INSTALL: "off" + + # ИНДЕКСЕР + INDEXER_IP: $APP_ELECTRS_NODE_IP + INDEXER_RPC_PORT: $APP_ELECTRS_NODE_PORT + INDEXER_PROTOCOL: tcp + INDEXER_BATCH_SUPPORT: inactive # 'active' for ElectrumX, 'inactive' otherwise + depends_on: + - db + networks: + default: + ipv4_address: $APP_SAMOURAI_SERVER_NODE_IP + + whirlpool: + image: louneskmt/whirlpool:0.10.15@sha256:3b766327dfa4c2ae40f190c18afa1f3c9cb9101d7964049dc79bdcb89fd21a90 + init: true + restart: on-failure + user: "1000:1000" + command: + - "--listen" + - "--cli.apiKey=$APP_SAMOURAI_SERVER_WHIRLPOOL_API_KEY" + - "--cli.api.http-enable=true" + - "--cli.api.http-port=$APP_SAMOURAI_SERVER_WHIRLPOOL_PORT" + - "--cli.tor=true" + - "--cli.torConfig.coordinator.enabled=true" + - "--cli.torConfig.coordinator.onion=true" + - "--cli.torConfig.backend.enabled=false" + - "--cli.torConfig.backend.onion=false" + - "--cli.mix.liquidityClient=true" + - "--cli.mix.clientsPerPool=1" + - "--resync" + environment: + WHIRLPOOL_BITCOIN_NETWORK: $APP_BITCOIN_NETWORK + WHIRLPOOL_DOJO: "on" + WHIRLPOOL_DOJO_IP: $APP_SAMOURAI_SERVER_IP + depends_on: + - node + volumes: + - ${APP_DATA_DIR}/whirlpool:/home/whirlpool/.whirlpool-cli + networks: + default: + ipv4_address: $APP_SAMOURAI_SERVER_WHIRLPOOL_IP + + nginx: + image: nginx:1.21-alpine@sha256:686aac2769fd6e7bab67663fd38750c135b72d993d0bb0a942ab02ef647fc9c3 + init: true + restart: on-failure + command: /bin/sh -c "envsubst < /var/www/connect/js/conf.template.js > /var/www/connect/js/conf.js && /wait-for node:8080 --timeout=720 -- nginx" + volumes: + - ${APP_DATA_DIR}/nginx/wait-for:/wait-for + - ${APP_DATA_DIR}/nginx/nginx.conf:/etc/nginx/nginx.conf + - ${APP_DATA_DIR}/nginx/${APP_BITCOIN_NETWORK}.conf:/etc/nginx/sites-enabled/dojo.conf + - ${APP_DATA_DIR}/nginx/connect.conf:/etc/nginx/sites-enabled/connect.conf + - ${APP_DATA_DIR}/nginx/connect:/var/www/connect + environment: + COMMON_BTC_NETWORK: $APP_BITCOIN_NETWORK + DOJO_LOCAL_PORT: $APP_SAMOURAI_SERVER_DOJO_PORT + DOJO_HIDDEN_SERVICE: $APP_SAMOURAI_SERVER_DOJO_HIDDEN_SERVICE + WHIRLPOOL_HIDDEN_SERVICE: $APP_SAMOURAI_SERVER_WHIRLPOOL_HIDDEN_SERVICE + NODE_PREFIX_SUPPORT: support + NODE_ADMIN_KEY: $APP_SAMOURAI_SERVER_NODE_ADMIN_KEY + WHIRLPOOL_API_KEY: $APP_SAMOURAI_SERVER_WHIRLPOOL_API_KEY + ports: + - "$APP_SAMOURAI_SERVER_DOJO_PORT:80" + depends_on: + - node + networks: + default: + ipv4_address: $APP_SAMOURAI_SERVER_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/samourai-server/exports.sh b/samourai-server/exports.sh new file mode 100644 index 0000000..e82785e --- /dev/null +++ b/samourai-server/exports.sh @@ -0,0 +1,16 @@ +export APP_SAMOURAI_SERVER_IP="10.21.21.22" +export APP_SAMOURAI_SERVER_DOJO_PORT="3009" +export APP_SAMOURAI_SERVER_CONNECT_PORT="3005" +export APP_SAMOURAI_SERVER_WHIRLPOOL_IP="10.21.21.23" +export APP_SAMOURAI_SERVER_WHIRLPOOL_PORT="8898" +export APP_SAMOURAI_SERVER_DB_IP="10.21.21.24" +export APP_SAMOURAI_SERVER_NODE_IP="10.21.21.25" + +dojo_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-dojo/hostname" +whirlpool_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-whirlpool/hostname" +export APP_SAMOURAI_SERVER_DOJO_HIDDEN_SERVICE="$(cat "${dojo_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" +export APP_SAMOURAI_SERVER_WHIRLPOOL_HIDDEN_SERVICE="$(cat "${whirlpool_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" +export APP_SAMOURAI_SERVER_NODE_API_KEY=$(derive_entropy "env-${app_entropy_identifier}-NODE_API_KEY") +export APP_SAMOURAI_SERVER_NODE_ADMIN_KEY=$(derive_entropy "env-${app_entropy_identifier}-NODE_ADMIN_KEY") +export APP_SAMOURAI_SERVER_NODE_JWT_SECRET=$(derive_entropy "env-${app_entropy_identifier}-NODE_JWT_SECRET") +export APP_SAMOURAI_SERVER_WHIRLPOOL_API_KEY=$(derive_entropy "env-${app_entropy_identifier}-WHIRLPOOL_API_KEY") \ No newline at end of file diff --git a/samourai-server/hooks/pre-start b/samourai-server/hooks/pre-start new file mode 100755 index 0000000..ac8b08f --- /dev/null +++ b/samourai-server/hooks/pre-start @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +# Отложите загрузку сервера Samourai до тех пор, пока скрытые службы Dojo и Whirlpool Tor не будут готовы. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-dojo/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach nginx +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach whirlpool +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/samourai-server/mysql/data/.gitkeep b/samourai-server/mysql/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/samourai-server/nginx/connect.conf b/samourai-server/nginx/connect.conf new file mode 100644 index 0000000..7902bb8 --- /dev/null +++ b/samourai-server/nginx/connect.conf @@ -0,0 +1,22 @@ +# Подключите конфигурацию интерфейс +server { + listen 8081; + server_name _; + + root /var/www/connect; + index index.html; + + # Конечная точка сопряжения прокси с API Dojo + location /v2/support/pairing { + proxy_pass http://node:8080/support/pairing; + } + + location /test/v2/support/pairing { + proxy_pass http://node:8080/support/pairing; + } + + # Статические файлы Server Connect интерфейс + location / { + try_files $uri $uri/ =404; + } +} diff --git a/samourai-server/nginx/connect/css/normalize.css b/samourai-server/nginx/connect/css/normalize.css new file mode 100644 index 0000000..192eb9c --- /dev/null +++ b/samourai-server/nginx/connect/css/normalize.css @@ -0,0 +1,349 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/samourai-server/nginx/connect/css/style.css b/samourai-server/nginx/connect/css/style.css new file mode 100644 index 0000000..b582955 --- /dev/null +++ b/samourai-server/nginx/connect/css/style.css @@ -0,0 +1,143 @@ +body { + background-color: #1D1B1B; + font-family: system-ui,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,Segoe UI,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji; + color: #fff; +} + +*, h1, h2, h3, h4, h5, h6, p, span { + color: #fff; + font-size: 20px; + font-weight: normal; +} + +.success { + color: #63FB72; +} + +.text-muted { + opacity: 0.8; +} + +.text-small { + font-size: 14px; +} + +hr { + width: 100%; + height: 2px; + background: #2F2C2C; + border: none; +} + +.container { + padding: 40px; + max-width: 1440px; + margin: auto; +} + +.app-icon { + border-radius: 20px; +} + +.app { + display: flex; + margin: 20px 0 40px 0; +} + +.app > .app-icon { + flex-shrink: 0; + height: 140px; + width: 140px; + box-shadow: 0 0 40px 0 rgba(0,0,0,0.95); + margin-right: 24px; +} + +.app > .app-details > .app-status { + display: block; + font-size: 20px; + margin: 10px 0 0 0; +} + +.app > .app-details > .app-name { + font-size: 52px; + line-height: 52px; + font-weight: bold; + margin: 10px 0 0 0; +} + +.heading { + display: flex; +} + +.heading > .number { + flex-shrink: 0; + background: #C12525; + height: 66px; + width: 66px; + border-radius: 100%; + line-height: 66px; + text-align: center; + font-size: 36px; + font-weight: bold; + box-shadow: 0 0 20px 0 rgba(0,0,0,0.8); +} + +.heading > .text { + font-size: 52px; + line-height: 52px; + font-weight: bold; + display: inline-block; + margin: 5px 0 0 20px; +} + +.steps { + margin: 40px 0 0 9px; +} + +.steps > .step { + margin-bottom: 20px; + font-size: 20px; + font-weight: normal; +} + +.qr { + position: relative; + width: 260px; + height: 260px; + margin: 20px 0; +} + +.qr > .icon { + position: absolute; + top: 50%; + left: 50%; + transform: translate3d(-50%, -50%, 0); + height: 66px; + width: 66px; + background: #ffffff; +} + +.qr > .icon > img { + display: block; + width: 60px; + height: 60px; + margin: 3px 0 0 3px; + border-radius: 15%; +} + +.note { + margin-top: 30px; + background: #111010; + border-radius: 8px; + padding: 30px; + border: 2px dashed #3D3838; +} + +.note > .note-heading { + margin: 0 0 20px 0; + font-weight: 300; +} + +.note > .note-text { + word-wrap: break-word +} \ No newline at end of file diff --git a/samourai-server/nginx/connect/img/icon.svg b/samourai-server/nginx/connect/img/icon.svg new file mode 100644 index 0000000..2c93b5d --- /dev/null +++ b/samourai-server/nginx/connect/img/icon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/samourai-server/nginx/connect/index.html b/samourai-server/nginx/connect/index.html new file mode 100644 index 0000000..39f737f --- /dev/null +++ b/samourai-server/nginx/connect/index.html @@ -0,0 +1,98 @@ + + + + + + + + Сервер Samourai + + + + + + + + +
+
+ +
+ ● Запущено +

Сервер Samourai

+
+
+

Следуйте инструкциям ниже, чтобы подключить Dojo и Whirlpool, работающие на вашем DFWebOS, к вашему + Samourai Wallet. +

+
+
+
+
+ 1 +

Как подключить Dojo

+
+
    +
  1. Откройте приложение Samourai Wallet на телефоне.
  2. +
  3. Если у вас уже есть существующий кошелек, отправьте все средства на другой кошелек, + который вы контролируете, и удалите текущий кошелек через Settings > Wallet > Secure Erase Wallet. Если кошелек еще не настроен, пропустите этот шаг.
  4. +
  5. Выберите Mainnet.
  6. +
  7. Нажмите на меню с тремя точками и выберите “Connect to existing Dojo”.
  8. +
  9. Нажмите “Connect to existing Dojo” и отсканируйте этот QR-код: +
    +
    +
    + +
    +
    + + +
  10. +
  11. Нажмите "Start New Wallet" и завершите процесс создания кошелька.
  12. +
  13. Готово! Ваш Samourai Wallet теперь работает через сервер Dojo, запущенный на вашем + DFWebOS. Откройте Network Options, нажав на значок, похожий на Wi‑Fi, в верхней части экрана, и убедитесь, что “Dojo Full Node” успешно включен (должна отображаться зеленая точка).
  14. +
+
+
Для опытных пользователей
+

+ Если вам нужен доступ к Dojo Maintenance Tool, нажмите здесь. +

+

+ Ключ администратора: +

+
+
+
+
+
+ 2 +

Как подключить Whirlpool

+
+
    +
  1. Установите Tor на свой компьютер.
  2. +
  3. Скачайте и установите Whirlpool GUI.
  4. +
  5. Выберите: “Advanced: remote CLI”.
  6. +
  7. Введите "" (без кавычек) в поле “CLI + address”.
  8. +
  9. Прокси Tor должен автоматически включиться и установиться на “socks5://127.0.0.1:9050”.
  10. +
  11. Нажмите “Configure API key?”.
  12. +
  13. Введите "" (без кавычек) в поле “API key”.
  14. +
  15. Нажмите “Connect”.
  16. +
  17. Нажмите на значок QR-кода, чтобы отсканировать QR-код из Samourai Wallet на вашем телефоне.
  18. +
  19. Откройте Samourai Wallet на своем телефоне.
  20. +
  21. Перейдите в Settings > Transactions > Experimental > Pair to Whirlpool GUI. Покажите QR-код на телефоне веб-камере компьютера, чтобы она его считала.
  22. +
  23. Нажмите “Initialize GUI”.
  24. +
  25. Введите парольную фразу вашего Samourai Wallet (BIP39 passphrase, заданную в Samourai Wallet).
  26. +
  27. Выберите количество циклов смешивания для UTXO.
  28. +
  29. Нажмите “Mix”.
  30. +
  31. Готово! Whirlpool теперь смешивает ваши UTXO на вашем DFWebOS!
  32. +
+

Примечание: После перезапуска или обновления вашего DFWebOS вам нужно будет снова открыть Whirlpool GUI и повторно ввести пароль, чтобы продолжить смешивание.

+
+ + + + + + diff --git a/samourai-server/nginx/connect/js/conf.template.js b/samourai-server/nginx/connect/js/conf.template.js new file mode 100644 index 0000000..a8a38ce --- /dev/null +++ b/samourai-server/nginx/connect/js/conf.template.js @@ -0,0 +1,7 @@ +var dojoLocalPort = "$DOJO_LOCAL_PORT"; +var dojoHiddenService = "$DOJO_HIDDEN_SERVICE"; +var whirlpoolHiddenService = "$WHIRLPOOL_HIDDEN_SERVICE"; +var bitcoinNetwork = "$COMMON_BTC_NETWORK"; +var dojoAdminKey = "$NODE_ADMIN_KEY"; +var whirlpoolApiKey = "$WHIRLPOOL_API_KEY"; +var dojoSupportPrefix = "$NODE_PREFIX_SUPPORT"; diff --git a/samourai-server/nginx/connect/js/qrcode.min.js b/samourai-server/nginx/connect/js/qrcode.min.js new file mode 100644 index 0000000..5d45a13 --- /dev/null +++ b/samourai-server/nginx/connect/js/qrcode.min.js @@ -0,0 +1,2 @@ +/*! qrcode-svg v1.1.0 | https://github.com/papnkukn/qrcode-svg | MIT license */ +function QR8bitByte(t){this.mode=QRMode.MODE_8BIT_BYTE,this.data=t,this.parsedData=[];for(var e=0,r=this.data.length;e65536?(o[0]=240|(1835008&n)>>>18,o[1]=128|(258048&n)>>>12,o[2]=128|(4032&n)>>>6,o[3]=128|63&n):n>2048?(o[0]=224|(61440&n)>>>12,o[1]=128|(4032&n)>>>6,o[2]=128|63&n):n>128?(o[0]=192|(1984&n)>>>6,o[1]=128|63&n):o[0]=n,this.parsedData.push(o)}this.parsedData=Array.prototype.concat.apply([],this.parsedData),this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function QRCodeModel(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}QR8bitByte.prototype={getLength:function(t){return this.parsedData.length},write:function(t){for(var e=0,r=this.parsedData.length;e=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,e)},setupPositionProbePattern:function(t,e){for(var r=-1;r<=7;r++)if(!(t+r<=-1||this.moduleCount<=t+r))for(var o=-1;o<=7;o++)e+o<=-1||this.moduleCount<=e+o||(this.modules[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=QRUtil.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r);this.make();for(var n=0;n>r&1);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(r=0;r<18;r++){o=!t&&1==(e>>r&1);this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o}},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=QRUtil.getBCHTypeInfo(r),n=0;n<15;n++){var i=!t&&1==(o>>n&1);n<6?this.modules[n][8]=i:n<8?this.modules[n+1][8]=i:this.modules[this.moduleCount-15+n][8]=i}for(n=0;n<15;n++){i=!t&&1==(o>>n&1);n<8?this.modules[8][this.moduleCount-n-1]=i:n<9?this.modules[8][15-n-1+1]=i:this.modules[8][15-n-1]=i}this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,n=7,i=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;s<2;s++)if(null==this.modules[o][a-s]){var h=!1;i>>n&1)),QRUtil.getMask(e,o,a-s)&&(h=!h),this.modules[o][a-s]=h,-1==--n&&(i++,n=7)}if((o+=r)<0||this.moduleCount<=o){o-=r,r=-r;break}}}},QRCodeModel.PAD0=236,QRCodeModel.PAD1=17,QRCodeModel.createData=function(t,e,r){for(var o=QRRSBlock.getRSBlocks(t,e),n=new QRBitBuffer,i=0;i8*s)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*s+")");for(n.getLengthInBits()+4<=8*s&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*s||(n.put(QRCodeModel.PAD0,8),n.getLengthInBits()>=8*s));)n.put(QRCodeModel.PAD1,8);return QRCodeModel.createBytes(n,o)},QRCodeModel.createBytes=function(t,e){for(var r=0,o=0,n=0,i=new Array(e.length),a=new Array(e.length),s=0;s=0?d.get(f):0}}var c=0;for(u=0;u=0;)e^=QRUtil.G15<=0;)e^=QRUtil.G18<>>=1;return e},getPatternPosition:function(t){return QRUtil.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case QRMaskPattern.PATTERN000:return(e+r)%2==0;case QRMaskPattern.PATTERN001:return e%2==0;case QRMaskPattern.PATTERN010:return r%3==0;case QRMaskPattern.PATTERN011:return(e+r)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case QRMaskPattern.PATTERN101:return e*r%2+e*r%3==0;case QRMaskPattern.PATTERN110:return(e*r%2+e*r%3)%2==0;case QRMaskPattern.PATTERN111:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new QRPolynomial([1],0),r=0;r5&&(r+=3+i-5)}for(o=0;o=256;)t-=255;return QRMath.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},i=0;i<8;i++)QRMath.EXP_TABLE[i]=1<>>7-t%8&1)},put:function(t,e){for(var r=0;r>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];function QRCode(t){if(this.options={padding:4,width:256,height:256,typeNumber:4,color:"#000000",background:"#ffffff",ecl:"M"},"string"==typeof t&&(t={content:t}),t)for(var e in t)this.options[e]=t[e];if("string"!=typeof this.options.content)throw new Error("Expected 'content' as string!");if(0===this.options.content.length)throw new Error("Expected 'content' to be non-empty!");if(!(this.options.padding>=0))throw new Error("Expected 'padding' value to be non-negative!");if(!(this.options.width>0&&this.options.height>0))throw new Error("Expected 'width' or 'height' value to be higher than zero!");var r=this.options.content,o=function(t,e){for(var r=function(t){var e=encodeURI(t).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return e.length+(e.length!=t?3:0)}(t),o=1,n=0,i=0,a=QRCodeLimitLength.length;i<=a;i++){var s=QRCodeLimitLength[i];if(!s)throw new Error("Content too long: expected "+n+" but got "+r);switch(e){case"L":n=s[0];break;case"M":n=s[1];break;case"Q":n=s[2];break;case"H":n=s[3];break;default:throw new Error("Unknwon error correction level: "+e)}if(r<=n)break;o++}if(o>QRCodeLimitLength.length)throw new Error("Content too long");return o}(r,this.options.ecl),n=function(t){switch(t){case"L":return QRErrorCorrectLevel.L;case"M":return QRErrorCorrectLevel.M;case"Q":return QRErrorCorrectLevel.Q;case"H":return QRErrorCorrectLevel.H;default:throw new Error("Unknwon error correction level: "+t)}}(this.options.ecl);this.qrcode=new QRCodeModel(o,n),this.qrcode.addData(r),this.qrcode.make()}QRCode.prototype.svg=function(t){var e=this.options||{},r=this.qrcode.modules;void 0===t&&(t={container:e.container||"svg"});for(var o=void 0===e.pretty||!!e.pretty,n=o?" ":"",i=o?"\r\n":"",a=e.width,s=e.height,h=r.length,l=a/(h+2*e.padding),u=s/(h+2*e.padding),g=void 0!==e.join&&!!e.join,d=void 0!==e.swap&&!!e.swap,f=void 0===e.xmlDeclaration||!!e.xmlDeclaration,c=void 0!==e.predefined&&!!e.predefined,R=c?n+''+i:"",p=n+''+i,m="",Q="",v=0;v'+i:n+''+i}}g&&(m=n+'');var T="";switch(t.container){case"svg":f&&(T+=''+i),T+=''+i,T+=R+p+m,T+="";break;case"svg-viewbox":f&&(T+=''+i),T+=''+i,T+=R+p+m,T+="";break;case"g":T+=''+i,T+=R+p+m,T+="";break;default:T+=(R+p+m).replace(/^\s+/,"")}return T},QRCode.prototype.save=function(t,e){var r=this.svg();"function"!=typeof e&&(e=function(t,e){});try{require("fs").writeFile(t,r,e)}catch(t){e(t)}},"undefined"!=typeof module&&(module.exports=QRCode); diff --git a/samourai-server/nginx/connect/js/script.js b/samourai-server/nginx/connect/js/script.js new file mode 100644 index 0000000..ed08107 --- /dev/null +++ b/samourai-server/nginx/connect/js/script.js @@ -0,0 +1,44 @@ +let dojoHost = `${window.location.hostname}:${dojoLocalPort}`; +const dojoBaseRoute = bitcoinNetwork == "testnet" ? "test/v2" : "v2"; + +if(window.location.hostname.endsWith(".onion")) { + dojoHost = dojoHiddenService; +} + +document.getElementById('dojo-admin-key').innerText = dojoAdminKey; +document.getElementById('whirlpool-api-key').innerText = whirlpoolApiKey; +document.getElementById('whirlpool-hidden-service').innerText = `http://${whirlpoolHiddenService}`; +document.getElementById('dmt-link').setAttribute("href", `http://${dojoHost}/admin/`); + +fetch(`http://${dojoHost}/${dojoBaseRoute}/auth/login`, { + method: 'POST', + headers: new Headers({ + 'Content-Type': 'application/x-www-form-urlencoded' + }), + body: `apikey=${dojoAdminKey}` + }) + .then(response => response.json()) + .then(data => { + fetch(`http://${window.location.host}/${dojoBaseRoute}/${dojoSupportPrefix}/pairing`, { + method: 'GET', + headers: new Headers({ + 'Authorization': 'Bearer ' + data.authorizations.access_token, + 'Content-Type': 'application/json' + }) + }) + .then(response => response.json()) + .then(pairingInfo => { + pairingInfo.pairing.url = `http://${dojoHiddenService}/${dojoBaseRoute}`; + + const qrcodeSvg = new QRCode({ + content: JSON.stringify(pairingInfo), + join: true, + container: "svg-viewbox", + padding: 3, + color: "#000000", + background: "#ffffff", + ecl: "M", + }).svg(); + document.querySelector('.qr-contents').innerHTML = qrcodeSvg; + }); + }); diff --git a/samourai-server/nginx/mainnet.conf b/samourai-server/nginx/mainnet.conf new file mode 100644 index 0000000..18c75c8 --- /dev/null +++ b/samourai-server/nginx/mainnet.conf @@ -0,0 +1,66 @@ +# Прокси WebSockets +# https://www.nginx.com/blog/websocket-nginx/ +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +# Сервер WebSocket слушает здесь +upstream websocket { + server node:8080; +} + +# Конфигурация сайта +server { + listen 80; + server_name _; + + # Установите таймауты прокси для приложения + proxy_connect_timeout 600; + proxy_read_timeout 600; + proxy_send_timeout 600; + send_timeout 600; + + # Сначала подключаются прокси-сервер WebSocket + location /v2/inv { + proxy_pass http://websocket; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + } + + # Сервер PushTX отдельный, поэтому сначала прокси + location /v2/pushtx/ { + proxy_pass http://node:8081/; + } + + # Сервер трекера отдельный, поэтому сначала прокси + location /v2/tracker/ { + proxy_pass http://node:8082/; + } + + # Прокси-запросы к инструменту обслуживания + location = /admin/conf/index.js { + proxy_pass http://node:8080/static/admin/conf/index-mainnet.js; + } + + location /admin/ { + proxy_pass http://node:8080/static/admin/; + } + + # Проксировать все остальные запросы версии 2 на сервер учетных записей. + location /v2/ { + proxy_pass http://node:8080/; + } + + # Перенаправить луковый адрес в инструмент обслуживания + location = / { + return 301 /admin; + } + + # Обслуживать оставшиеся запросы + location / { + return 200 '{"status":"ok"}'; + add_header Content-Type application/json; + } +} diff --git a/samourai-server/nginx/nginx.conf b/samourai-server/nginx/nginx.conf new file mode 100644 index 0000000..26aa64a --- /dev/null +++ b/samourai-server/nginx/nginx.conf @@ -0,0 +1,44 @@ +user nginx; +worker_processes auto; +daemon off; + +# Записывать критические ошибки и выше в stderr +# (см. https://github.com/nginxinc/docker-nginx/blob/594ce7a8bc26c85af88495ac94d5cd0096b306f7/mainline/alpine/Dockerfile#L104) +error_log /var/log/nginx/error.log crit; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # Отключите ведение журнала активности в целях конфиденциальности. + access_log off; + + # Не раскрывайте версию сервера + server_tokens off; + + sendfile on; + + keepalive_timeout 95; + + # Включить сжатие ответа + gzip on; + # Уровень сжатия: 1-9 + gzip_comp_level 1; + # Отключите сжатие gzip для более старых версий IE. + gzip_disable msie6; + # Минимальная длина ответа до того, как сработает gzip + gzip_min_length 128; + # Сжимайте эти типы MIME в дополнение к text/html. + gzip_types application/json; + # Помогите с проксированием, добавив ответ Vary: Accept-Encoding. + gzip_vary on; + + include /etc/nginx/sites-enabled/*.conf; +} diff --git a/samourai-server/nginx/testnet.conf b/samourai-server/nginx/testnet.conf new file mode 100644 index 0000000..162111b --- /dev/null +++ b/samourai-server/nginx/testnet.conf @@ -0,0 +1,71 @@ +# Прокси WebSockets +# https://www.nginx.com/blog/websocket-nginx/ +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +# Сервер WebSocket слушает здесь +upstream websocket { + server node:8080; +} + +# Конфигурация сайта +server { + listen 80; + server_name _; + + # Установите таймауты прокси для приложения + proxy_connect_timeout 600; + proxy_read_timeout 600; + proxy_send_timeout 600; + send_timeout 600; + + # Сначала подключаются прокси-сервер WebSocket + location /test/v2/inv { + proxy_pass http://websocket; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + } + + # Сервер PushTX отдельный, поэтому сначала прокси + location /test/v2/pushtx/ { + proxy_pass http://node:8081/; + } + + # Сервер трекера отдельный, поэтому сначала прокси + location /test/v2/tracker/ { + proxy_pass http://node:8082/; + } + + # Прокси-запросы к инструменту обслуживания + location = /admin/conf/index.js { + proxy_pass http://node:8080/static/admin/conf/index-testnet.js; + } + + location /admin/ { + proxy_pass http://node:8080/static/admin/; + } + + # Проксировать все остальные запросы версии 2 на сервер учетных записей. + location /test/v2/ { + proxy_pass http://node:8080/; + } + + # Перенаправить луковый адрес в инструмент обслуживания + location = / { + return 301 /admin; + } + + # Обслуживать оставшиеся запросы + location / { + return 200 '{"status":"ok"}'; + add_header Content-Type application/json; + } + + location /test/ { + return 200 '{"status":"ok"}'; + add_header Content-Type application/json; + } +} diff --git a/samourai-server/nginx/wait-for b/samourai-server/nginx/wait-for new file mode 100755 index 0000000..539a01d --- /dev/null +++ b/samourai-server/nginx/wait-for @@ -0,0 +1,79 @@ +#!/bin/sh + +TIMEOUT=15 +QUIET=0 + +echoerr() { + if [ "$QUIET" -ne 1 ]; then printf "%s\n" "$*" 1>&2; fi +} + +usage() { + exitcode="$1" + cat << USAGE >&2 +Usage: + $cmdname host:port [-t timeout] [-- command args] + -q | --quiet Do not output any status messages + -t TIMEOUT | --timeout=timeout Timeout in seconds, zero for no timeout + -- COMMAND ARGS Execute command with args after the test finishes +USAGE + exit "$exitcode" +} + +wait_for() { + for i in `seq $TIMEOUT` ; do + nc -z "$HOST" "$PORT" > /dev/null 2>&1 + + result=$? + if [ $result -eq 0 ] ; then + if [ $# -gt 0 ] ; then + exec "$@" + fi + exit 0 + fi + sleep 1 + done + echo "Operation timed out" >&2 + exit 1 +} + +while [ $# -gt 0 ] +do + case "$1" in + *:* ) + HOST=$(printf "%s\n" "$1"| cut -d : -f 1) + PORT=$(printf "%s\n" "$1"| cut -d : -f 2) + shift 1 + ;; + -q | --quiet) + QUIET=1 + shift 1 + ;; + -t) + TIMEOUT="$2" + if [ "$TIMEOUT" = "" ]; then break; fi + shift 2 + ;; + --timeout=*) + TIMEOUT="${1#*=}" + shift 1 + ;; + --) + shift + break + ;; + --help) + usage 0 + ;; + *) + echoerr "Unknown argument: $1" + usage 1 + ;; + esac +done + +if [ "$HOST" = "" -o "$PORT" = "" ]; then + echoerr "Error: you need to provide a host and port to test." + usage 2 +fi + +wait_for "$@" diff --git a/samourai-server/torrc.template b/samourai-server/torrc.template new file mode 100644 index 0000000..d006b8a --- /dev/null +++ b/samourai-server/torrc.template @@ -0,0 +1,7 @@ +# Скрытая служба додзё Samourai-Server +HiddenServiceDir /data/app-$APP_ID-dojo +HiddenServicePort 80 $APP_SAMOURAI_SERVER_IP:80 + +# Samourai-Server Водоворот Скрытая служба +HiddenServiceDir /data/app-$APP_ID-whirlpool +HiddenServicePort 80 $APP_SAMOURAI_SERVER_WHIRLPOOL_IP:$APP_SAMOURAI_SERVER_WHIRLPOOL_PORT \ No newline at end of file diff --git a/samourai-server/whirlpool/.gitkeep b/samourai-server/whirlpool/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/satsale/data/.gitkeep b/satsale/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/satsale/dfwebos-app.yml b/satsale/dfwebos-app.yml new file mode 100644 index 0000000..f8310e1 --- /dev/null +++ b/satsale/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: satsale +category: bitcoin +name: SatSale +version: "0.1.13-build-1" +tagline: Легкий платежный процессор Bitcoin +description: >- + SatSale — это простой, легко развертываемый и легкий платеж Bitcoin. + процессор, который подключается к вашему собственному узлу Bitcoin. Вы можете использовать SatSale, чтобы + мгновенно превратите свой DFWebOS в торговую точку (настройки в /admin). + SatSale может обрабатывать пожертвования от ваших сторонников, облегчая прямую + одноранговые платежи без каких-либо посредников и большая конфиденциальность, чем повторное использование + адреса для пожертвований. + + + Разместите свой собственный платежный шлюз Bitcoin для Woocommerce без посредников или хранителей, что позволит вам превратить любой сайт WordPress в магазин, принимающий биткойны. + + + Это приложение DFWebOS содержит подмножество функций, над которыми мы работаем для SatSale, но обновления будут выпускаться по мере их готовности. Посетите сайт и GitHub, чтобы узнать больше! + + + Обратите внимание, что SatSale все еще находится на ранней стадии разработки. Таким образом, мы не несем ответственности за любую потерю средств, уязвимости или любые другие возникающие претензии. Всегда подтверждайте крупные платежи вручную и максимально используйте холодное хранилище. Пожалуйста, внесите свой вклад, если можете! +developer: Nick Farrow +website: https://satsale.org +dependencies: + - lightning +repo: https://github.com/nickfarrow/SatSale/ +support: https://github.com/nickfarrow/SatSale/issues +port: 5000 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: /admin +deterministicPassword: true +submitter: Nick Farrow +submission: https://github.com/getumbrel/umbrel/pull/1102 +releaseNotes: "" \ No newline at end of file diff --git a/satsale/docker-compose.yml b/satsale/docker-compose.yml new file mode 100644 index 0000000..7fb8008 --- /dev/null +++ b/satsale/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: satsale_web_1 + APP_PORT: 5000 + PROXY_AUTH_ADD: "false" + + web: + image: satsale/satsale:0.1.13@sha256:98380ad6c5166d83e627c4d1f4efdbcfd5b9217096f7fb26b287fda89eebccbb + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + DATA_DIR: "/data" + # Детали подключения узла Lightning + LND_DATA_DIR: $APP_LIGHTNING_NODE_DATA_DIR + LND_HOST: $APP_LIGHTNING_NODE_IP + LND_GRPC_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + MACAROON_FILE: /lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/invoice.macaroon + TLS_FILE: /lnd/tls.cert + APP_PASSWORD: $APP_PASSWORD diff --git a/satwatch/data/db/.gitkeep b/satwatch/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/satwatch/dfwebos-app.yml b/satwatch/dfwebos-app.yml new file mode 100644 index 0000000..b846a7e --- /dev/null +++ b/satwatch/dfwebos-app.yml @@ -0,0 +1,34 @@ +manifestVersion: 1.1 +id: satwatch +category: bitcoin +name: sat.watch +version: "1.1.8" +tagline: Bitcoin мониторинг и оповещения в режиме реального времени +description: >- + sat.watch обеспечивает мониторинг вашего Bitcoin в режиме реального времени. + + Особенности: + - Мониторинг адресов Bitcoin, xpub или дескрипторов. + - Оповещения об отправленных или полученных средствах + - Отслеживает мемпул и подтвержденные блоки + - Сводка общего баланса для всех отслеживаемых адресов + - Уведомления по электронной почте и веб-перехватчикам + - электронная почта с шифрованием PGP +developer: J.P. Cummins +releaseNotes: "" +dependencies: + - bitcoin + - electrs +website: https://sat.watch +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +repo: https://github.com/jpcummins/sat.watch +support: https://github.com/jpcummins/sat.watch/issues +port: 3883 +path: "/app" +defaultUsername: "satwatch" +deterministicPassword: true +submitter: J.P. Cummins +submission: https://github.com/getumbrel/dfwebos-apps/pull/2723 diff --git a/satwatch/docker-compose.yml b/satwatch/docker-compose.yml new file mode 100644 index 0000000..0b06fee --- /dev/null +++ b/satwatch/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: satwatch_web_1 + APP_PORT: 8080 + web: + image: ghcr.io/jpcummins/sat.watch:1.1.8@sha256:9911b2d8ff720672a2c97bd0cc1811c74790b96ae951ad98f7956ee9d480b175 + restart: on-failure + stop_grace_period: 1m + environment: + DATABASE_URL: "postgresql://satwatch:satwatch@satwatch_db_1:5432/satwatch?sslmode=disable" + ELECTRUM_HOST: $APP_ELECTRS_NODE_IP + ELECTRUM_PORT: $APP_ELECTRS_NODE_PORT + URL: "http://$DEVICE_DOMAIN_NAME:3883" + ZMQ_HOST: $APP_BITCOIN_NODE_IP + ZMQ_PORT: $APP_BITCOIN_ZMQ_RAWTX_PORT + RPCHOST: "http://$APP_BITCOIN_NODE_IP:$APP_BITCOIN_RPC_PORT" + RPCUSER: $APP_BITCOIN_RPC_USER + RPCPASSWORD: $APP_BITCOIN_RPC_PASS + user: "1000:1000" + depends_on: + db: + condition: service_healthy + db: + image: docker.io/library/postgres:17@sha256:fe3f571d128e8efadcd8b2fde0e2b73ebab6dbec33f6bfe69d98c682c7d8f7bd + restart: on-failure + environment: + POSTGRES_USER: satwatch + POSTGRES_PASSWORD: satwatch + POSTGRES_DB: satwatch + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + healthcheck: + test: pg_isready -U satwatch -h localhost -d satwatch + interval: 5s + timeout: 5s + retries: 10 diff --git a/satwatch/exports.yml b/satwatch/exports.yml new file mode 100644 index 0000000..e69de29 diff --git a/satwatch/hooks/pre-start b/satwatch/hooks/pre-start new file mode 100755 index 0000000..2f8b8a7 --- /dev/null +++ b/satwatch/hooks/pre-start @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Блокируйте до тех пор, пока служба не станет работоспособной, прежде чем создавать пользователей. +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach --wait --wait-timeout 60 web + +# Создайте имя пользователя и пароль по умолчанию. +for attempt in $(seq 1 3); do + if "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" run --rm web "./create-user -admin -username satwatch -password ${APP_PASSWORD} -idempotent"; then + echo "Successfully created default user" + break + else + # Базе данных требуется время для инициализации после установки. + echo "Failed to create default user. Retrying..." + sleep 0.5 + fi +done diff --git a/scanservjs/data/config/.gitkeep b/scanservjs/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/scanservjs/data/scans/.gitkeep b/scanservjs/data/scans/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/scanservjs/dfwebos-app.yml b/scanservjs/dfwebos-app.yml new file mode 100644 index 0000000..ad12ae8 --- /dev/null +++ b/scanservjs/dfwebos-app.yml @@ -0,0 +1,31 @@ +manifestVersion: 1 +id: scanservjs +category: files +name: scanservjs +version: "3.0.4" +tagline: Веб-интерфейс для ваших SANE-совместимых сканеров +description: >- + scanservjs — это веб-интерфейс интерфейс для вашего сканера. Это позволяет вам совместно использовать один или несколько сканеров (с использованием SANE) в сети без необходимости установки драйверов или сложной установки. +developer: sbs20 +website: https://sbs20.github.io/scanservjs/ +dependencies: [] +repo: https://github.com/sbs20/scanservjs +support: https://github.com/sbs20/scanservjs/issues +port: 2903 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: highghlow +submission: https://github.com/getumbrel/dfwebos-apps/pull/1094 +releaseNotes: >- + Это обновление включает в себя: + - Исправлен чешский перевод + - Исправлен процесс сборки + - Исправлено непрямое чтение imagemagick 7. + + + Полные примечания к выпуску можно найти по адресу https://github.com/sbs20/scanservjs/releases. \ No newline at end of file diff --git a/scanservjs/docker-compose.yml b/scanservjs/docker-compose.yml new file mode 100644 index 0000000..754982e --- /dev/null +++ b/scanservjs/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: scanservjs_server_1 + APP_PORT: 8080 + + server: + image: sbs20/scanservjs:v3.0.4@sha256:e42263444a8dd5d533ead7d9eb2ef5fd9ca7a4a80569a6f9c14b7a3c21b9c7ca + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/scans:/var/lib/scanservjs/output + - ${APP_DATA_DIR}/data/config:/etc/scanservjs + - /var/run/dbus:/var/run/dbus + # сопоставьте /dev хоста, чтобы разрешить обнаружение USB-устройств без необходимости заранее знать, какие устройства подключены + - /dev:/dev + privileged: true diff --git a/seafile/data/db/.gitkeep b/seafile/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/seafile/data/seadoc-data/.gitkeep b/seafile/data/seadoc-data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/seafile/data/seafile-data/.gitkeep b/seafile/data/seafile-data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/seafile/dfwebos-app.yml b/seafile/dfwebos-app.yml new file mode 100644 index 0000000..6166b91 --- /dev/null +++ b/seafile/dfwebos-app.yml @@ -0,0 +1,50 @@ +manifestVersion: 1 +id: seafile +category: files +name: Seafile +version: "12.0.14" +tagline: Надежное и производительное решение для синхронизации и обмена файлами +description: > + Seafile — это решение для синхронизации и обмена файлами с открытым исходным кодом, разработанное для обеспечения высокой надежности, производительности и производительности. + Синхронизируйте, делитесь и сотрудничайте между устройствами и командами. Создайте базу знаний своей команды с помощью встроенной функции Wiki Seafile. + + + 🔄 Надежная синхронизация файлов + + Организуйте файлы в библиотеки. Библиотеку можно выборочно синхронизировать с любым устройством. Надежная и эффективная синхронизация файлов повышает вашу производительность. + + + 🛡️ Встроенное шифрование файлов + + Библиотека может быть зашифрована выбранным вами паролем. Файлы шифруются перед синхронизацией с сервером. Даже системный администратор не может просмотреть файлы. + + + 🛠️НАСТРОЙКА: + + Seafile настроен для работы «из коробки» при установке на DFWebOS. Однако если вы хотите иметь возможность загружать файлы с доменного имени, отличного от DFWebOS.local, + откройте приложение Seafile, перейдите в «Системный администратор» > «Настройки» и измените «FILE_SERVER_ROOT» на /seafhttp. +releaseNotes: >- + Это обновление включает в себя множество исправлений ошибок и улучшений: + - Исправлены две сохраненные XSS-уязвимости в положениях и условиях и на страницах администратора учреждения. + - Добавлена поддержка электронной почты S/MIME. + - Решены проблемы интерфейс в ссылках общего доступа и страницах рендеринга пользователей. + - Обновлены переводы для улучшения локализации. + + + Полные примечания к выпуску можно найти по адресу https://manual.seafile.com/latest/changelog/server-changelog/. +developer: Seafile +website: https://www.seafile.com/ +dependencies: [] +repo: https://github.com/haiwen/seafile +support: https://www.seafile.com/en/support/ +port: 8920 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +torOnly: false +defaultUsername: "dfwebos" +deterministicPassword: true +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/281 diff --git a/seafile/docker-compose.yml b/seafile/docker-compose.yml new file mode 100644 index 0000000..c540d55 --- /dev/null +++ b/seafile/docker-compose.yml @@ -0,0 +1,57 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: seafile + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + db: + image: mariadb:10.11.6@sha256:20a8bd91d972c97cffded88f2ba0ab533c8988b2dc08090c57d50caf7114ed20 + container_name: seafile-mysql + environment: + - MYSQL_ROOT_PASSWORD=db_dev + - MYSQL_LOG_CONSOLE=true + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + + memcached: + image: memcached:1.6.18@sha256:4ab520657d9919221f752771bb013d632c9b39cea9dfae9162244b2e39885bcd + container_name: seafile-memcached + entrypoint: memcached -m 256 + + seafile: + image: seafileltd/seafile-mc:12.0.14@sha256:8d0dd6b682c12cb0e1d4f1f73ba223b0176e9e3d43805408a2f631706e9c10e8 + container_name: seafile + volumes: + - ${APP_DATA_DIR}/data/seafile-data:/shared + environment: + - DB_HOST=seafile-mysql + - DB_ROOT_PASSWD=db_dev + - JWT_PRIVATE_KEY=${APP_SEED} + - INIT_SEAFILE_ADMIN_EMAIL=dfwebos + - INIT_SEAFILE_ADMIN_PASSWORD=${APP_PASSWORD} + - SEAFILE_SERVER_LETSENCRYPT=false + - SEAFILE_SERVER_HOSTNAME=${DEVICE_DOMAIN_NAME}:8920 + - ENABLE_SEADOC=true + - SEADOC_SERVER_URL=http://${DEVICE_DOMAIN_NAME}:8921 + depends_on: + - db + - memcached + + seadoc: + image: seafileltd/sdoc-server:1.0.5@sha256:b5d3aff910be22388d329053c7dc2847a6760a6c7cfd7f0b1ef0e4f445b158b3 + volumes: + - ${APP_DATA_DIR}/data/seadoc-data:/shared + ports: + - 8921:80 + environment: + - DB_HOST=seafile-mysql + - DB_USER=root + - DB_PASSWORD=db_dev + - DB_NAME=seahub_db + - JWT_PRIVATE_KEY=${APP_SEED} + - SEAHUB_SERVICE_URL=http://${DEVICE_DOMAIN_NAME}:8920 + depends_on: + - db diff --git a/searxng/data/cache/.gitkeep b/searxng/data/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/searxng/data/config/.gitkeep b/searxng/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/searxng/data/config/settings.yml b/searxng/data/config/settings.yml new file mode 100644 index 0000000..49dd089 --- /dev/null +++ b/searxng/data/config/settings.yml @@ -0,0 +1,8 @@ +# Наложение поверх встроенных настроек по умолчанию SearXNG (что позволяет избежать доставки полной конфигурации из 3000 строк). +# Формат JSON необходим для потребителей API, таких как Open WebUI. +use_default_settings: true + +search: + formats: + - html + - json diff --git a/searxng/dfwebos-app.yml b/searxng/dfwebos-app.yml new file mode 100644 index 0000000..9c8122d --- /dev/null +++ b/searxng/dfwebos-app.yml @@ -0,0 +1,41 @@ +manifestVersion: 1 +id: searxng +name: SearXNG +tagline: Бесплатная метапоисковая система в Интернете. +category: networking +version: "2026.4.7" +port: 8182 +description: >- + 🔍 SearXNG — это метапоисковая система, которая позволяет пользователям осуществлять поиск в Интернете, объединяя результаты от нескольких поисковых поставщиков в один полный список. Когда пользователь отправляет запрос, SearXNG отправляет этот запрос одновременно множеству внешних поисковых систем и служб. Затем он собирает и объединяет ответы, предоставляя пользователю единый набор результатов поиска. Такой подход позволяет пользователям получать доступ к более широкому спектру информации из разных источников без необходимости искать каждый из них по отдельности. + + + В приложении особое внимание уделяется предоставлению разнообразных и сбалансированных результатов поиска путем агрегирования результатов с разных платформ. Объединяя эти различные результаты, SearXNG помогает уменьшить предвзятость, которая может возникнуть из-за использования одной поисковой системы, предлагая пользователям более нейтральный и разнообразный взгляд на темы поиска. Система предназначена для обработки многих типов поиска: от веб-страниц до изображений, видео, новостей и других категорий, в зависимости от того, к каким поставщикам запрашиваются. + + + Кроме того, SearXNG создан с учетом конфиденциальности пользователей и не сохраняет историю поиска или личные данные. Это означает, что каждый поиск обрабатывается независимо, и никакого личного отслеживания или профилирования не происходит. Анонимность поиска помогает пользователям чувствовать себя в большей безопасности при поиске информации в Интернете. В целом, SearXNG функционирует как мощный инструмент поиска, используя преимущества нескольких поисковых систем, одновременно защищая конфиденциальность пользователей и обеспечивая открытый и беспристрастный поиск. +developer: SearXNG +website: https://docs.searxng.org/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3253 +repo: https://github.com/searxng/searxng +support: https://github.com/searxng/searxng/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + В этом выпуске исправлена совместимость с Open WebUI и другими потребителями API, а также обновлен SearXNG до версии 2026.4.7: + - Исправлена ошибка «хост не доверен» при вызове из других контейнеров (например, Open WebUI). + - Включен формат поиска JSON для потребителей API. + - Исправлено ограничение скорости DuckDuckGo путем восстановления заголовков Sec-Fetch. + - Исправлено обнаружение бота Karmasearch и сбой при длинных запросах. + - Исправлено подключение движка TubeArchivist. + - Переработан движок перевода Lingva с работающим экземпляром. + - Обновлены переводы и внутренние данные + - И еще +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/searxng/docker-compose.yml b/searxng/docker-compose.yml new file mode 100644 index 0000000..61a4729 --- /dev/null +++ b/searxng/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: searxng-web + APP_PORT: 8080 + + web: + image: ghcr.io/searxng/searxng:2026.4.7-08ef7a63d@sha256:6a89a150d0163877caab1982b7a20d0a03fd4b39401a0d3f26f61ad205949442 + container_name: searxng-web # Avoid underscores in hostname (Werkzeug rejects them) + restart: on-failure + environment: + SEARXNG_SECRET: ${APP_SEED} + SEARXNG_LIMITER: "false" # Disable bot detection — container-to-container calls lack proxy headers + volumes: + - ${APP_DATA_DIR}/data/config:/etc/searxng + - ${APP_DATA_DIR}/data/cache:/var/cache/searxng diff --git a/searxng/hooks/pre-start b/searxng/hooks/pre-start new file mode 100755 index 0000000..80a469e --- /dev/null +++ b/searxng/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +SETTINGS_FILE="${APP_DATA_DIR}/data/config/settings.yml" +MIGRATED_FLAG="${APP_DATA_DIR}/SETTINGS_MIGRATED" + +# Одноразовая миграция: замените автоматически сгенерированный 3000-строчный settings.yml на наш +# минимальное наложение. Это включает формат поиска JSON (требуется для потребителей API, таких как +# Откройте WebUI), унаследовав все остальные настройки по умолчанию из встроенной конфигурации SearXNG. +# После миграции файл становится владельцем пользователя, и мы никогда больше к нему не прикасаемся. +# При новых установках это безвредное действие (перезаписывает связанный файл с идентичным содержимым). +if [[ ! -f "${MIGRATED_FLAG}" ]]; then + echo "Replacing SearXNG settings.yml with minimal overlay..." + cat > "${SETTINGS_FILE}" <<'EOF' +# Наложение поверх встроенных настроек по умолчанию SearXNG (что позволяет избежать доставки полной конфигурации из 3000 строк). +# Формат JSON необходим для потребителей API, таких как Open WebUI. +use_default_settings: true + +search: + formats: + - html + - json +EOF + touch "${MIGRATED_FLAG}" +fi diff --git a/shopstr/dfwebos-app.yml b/shopstr/dfwebos-app.yml new file mode 100644 index 0000000..55f46e8 --- /dev/null +++ b/shopstr/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1 +id: shopstr +category: bitcoin +name: Shopstr +version: "0.7.5" +tagline: Делайте покупки свободно +description: >- + 🛒 Shopstr — это децентрализованная торговая площадка с открытым исходным кодом, построенная на протоколе Nostr и предназначенная для обеспечения глобальной одноранговой торговли без использования централизованных платформ или посредников. Он позволяет пользователям покупать и продавать товары и услуги с помощью Bitcoin, включая поддержку платежей Lightning, сохраняя при этом полный контроль над своими данными и транзакциями. Принимая принципы цифрового суверенитета и неразрешенного доступа, Shopstr предлагает устойчивую к цензуре альтернативу традиционным платформам электронной коммерции. + + + Платформа использует различные предложения по улучшению Nostr для предоставления таких функций, как идентификация пользователя, зашифрованная связь и интеграция платежей. Shopstr, созданный с использованием современных веб-технологий, таких как TypeScript, Next.js и Tailwind CSS, обеспечивает быструю и удобную работу. Он может размещаться самостоятельно с помощью Docker, а также доступен через сеть Tor для повышения конфиденциальности. + + + Shopstr идеально подходит для тех, кто ищет децентрализованную и открытую среду для коммерции, где транзакции осуществляются на базе Bitcoin и регулируются открытыми протоколами, а не корпоративными организациями. + + Ваши ключи. Ваш магазин. +releaseNotes: >- + Это обновление Shopstr содержит следующие улучшения и исправления: + - Исправлено состояние гонки при создании новых доказательств при оформлении заказа. + - Переработан дизайн страницы оформления заказа. + - Незначительные исправления стиля кода. +developer: calvadev +website: https://calva.dev +dependencies: [] +repo: https://github.com/shopstr-eng/shopstr +support: https://github.com/shopstr-eng/shopstr/issues +port: 30402 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: calvadev +submission: https://github.com/getumbrel/dfwebos-apps/pull/2131 diff --git a/shopstr/docker-compose.yml b/shopstr/docker-compose.yml new file mode 100644 index 0000000..ac7c73a --- /dev/null +++ b/shopstr/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: shopstr_web_1 + APP_PORT: 3000 + + web: + image: calvadev/shopstr:v0.7.5@sha256:b123e9d16f4267ea766813cbc12ac0989afcea03a72b42edfa37b64951ececdb + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + PORT: 3000 diff --git a/simple-torrent/data/config/.gitkeep b/simple-torrent/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/simple-torrent/data/downloads/.gitkeep b/simple-torrent/data/downloads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/simple-torrent/data/torrents/.gitkeep b/simple-torrent/data/torrents/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/simple-torrent/dfwebos-app.yml b/simple-torrent/dfwebos-app.yml new file mode 100644 index 0000000..f03ad42 --- /dev/null +++ b/simple-torrent/dfwebos-app.yml @@ -0,0 +1,53 @@ +manifestVersion: 1.1 +id: simple-torrent +category: networking +name: SimpleTorrent +version: "1.3.9-hotfix-1" +tagline: Скачивайте торренты с помощью DFWebOS +description: >- + SimpleTorrent — это автономный удаленный торрент-клиент, который запускается + торренты удаленно, загружайте наборы файлов на свой DFWebOS, которые затем + возможность извлечения или потоковой передачи через веб-браузер по протоколу HTTP. Этот проект представляет собой + переименованный форк Cloud-Torrent от jpillora. Функции: + + + - Индивидуальный контроль загрузки файлов + + - Запуск внешней программы по завершении задач: DoneCmd + + - Останавливает задачу при достижении коэффициента высева: SeedRatio. + + - Ограничитель скорости загрузки/выгрузки: UploadRate/DownloadRate + + - Подробная статистика трансферов в сети интерфейс. + + - Наблюдатель за торрентами + + - Дополнительные трекеры из внешнего источника + + - Обработчик протокола для магнита: + + - Поддерживается подписка на Magnet RSS. + + + ⚠️ SimpleTorrent загружает торренты через Clearnet, а не через Tor. +releaseNotes: >- + - SimpleTorrent теперь использует общую папку загрузок, к которой могут получить доступ другие приложения на DFWebOS, такие как Jellyfin, File Browser, Transmission, Plex и другие. +developer: Preston +website: https://github.com/boypt +dependencies: [] +repo: https://github.com/boypt/simple-torrent +support: https://github.com/boypt/simple-torrent/issues +port: 8086 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +permissions: + - STORAGE_DOWNLOADS +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/b12c581ae14255c2087fc8e2f0e7014a351a363b \ No newline at end of file diff --git a/simple-torrent/docker-compose.yml b/simple-torrent/docker-compose.yml new file mode 100644 index 0000000..8851c28 --- /dev/null +++ b/simple-torrent/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: simple-torrent_server_1 + APP_PORT: 8086 + + server: + image: boypt/cloud-torrent:1.3.9@sha256:90cc62869ebaabbdba31535cdff4c66ede98b341956d2ebcd6650610a37e9819 + user: "1000:1000" + restart: on-failure + command: > + --port=8086 + --config-path /config/simple-torrent.json + volumes: + - ${APP_DATA_DIR}/data/torrents:/torrents + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + - ${APP_DATA_DIR}/data/config:/config diff --git a/simple-torrent/hooks/pre-start b/simple-torrent/hooks/pre-start new file mode 100755 index 0000000..e3d68d5 --- /dev/null +++ b/simple-torrent/hooks/pre-start @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Целью этого предстартового крючка является миграция +# локальная папка загрузок для существующих установок +# в общую папку загрузок DFWebOS + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" +DFWEBOS_ROOT="${APP_DATA_DIR}/../.." + +# Нам необходимо обеспечить общую папку загрузки DFWebOS. +# существует и принадлежит правильному пользователю +DFWEBOS_DATA_DIR="${DFWEBOS_ROOT}/data" +DFWEBOS_DATA_STORAGE_DIR="${DFWEBOS_DATA_DIR}/storage" +DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR="${DFWEBOS_DATA_STORAGE_DIR}/downloads" +DESIRED_OWNER="1000:1000" + +if [[ ! -d "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}" ]]; then + mkdir -p "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}" +fi + +simpletorrent_correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +simpletorrent_correct_permission "${DFWEBOS_DATA_DIR}" +simpletorrent_correct_permission "${DFWEBOS_DATA_STORAGE_DIR}" +simpletorrent_correct_permission "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}" + +# Перенесите существующие установки для использования общего каталога загрузок. +LOCAL_DOWNLOADS_DIR="${APP_DATA_DIR}/data/downloads" + +if [[ ! -d "${LOCAL_DOWNLOADS_DIR}" ]]; then + echo "No local downloads directory found. Skipping migration..." + exit +fi + +# Проверьте, не пуста ли локальная загрузка. +if [[ "$(ls -l "${LOCAL_DOWNLOADS_DIR}" | wc -l)" -gt "1" ]]; then + # Переместите содержимое локальной папки загрузок в общую папку загрузок DFWebOS. + mv --verbose "${LOCAL_DOWNLOADS_DIR}/"* "${DFWEBOS_DATA_STORAGE_DOWNLOADS_DIR}" +fi + +# Проверьте, пуст ли теперь локальный каталог загрузок. +if [[ "$(ls -l "${LOCAL_DOWNLOADS_DIR}" | wc -l)" -gt "1" ]]; then + echo "Failed to migrate local downloads directory: ${LOCAL_DOWNLOADS_DIR}" + echo "This directory still contains files/folders..." + exit +fi + +rm -rf "${LOCAL_DOWNLOADS_DIR}" + +echo "Local downloads directory successfully migrated" \ No newline at end of file diff --git a/slink/data/images/.gitkeep b/slink/data/images/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/slink/data/images/.gitkeep @@ -0,0 +1 @@ + diff --git a/slink/data/var/.gitkeep b/slink/data/var/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/slink/data/var/.gitkeep @@ -0,0 +1 @@ + diff --git a/slink/dfwebos-app.yml b/slink/dfwebos-app.yml new file mode 100644 index 0000000..68cffbd --- /dev/null +++ b/slink/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1 +id: slink +name: Slink +tagline: Мощная платформа для обмена изображениями, ориентированная на конфиденциальность. +category: files +version: "1.11.0" +port: 8811 +description: >- + 📸 Slink — это современное приложение для обмена изображениями, ориентированное на конфиденциальность, предназначенное для предоставления пользователям полного контроля над тем, как их изображения хранятся, управляются и передаются. Он обеспечивает элегантный и удобный интерфейс, который делает загрузку и организацию визуального контента простым и эффективным. Вместо того, чтобы зависеть от сторонних сервисов, Slink поручает пользователю управлять своей собственной коллекцией изображений, гарантируя, что каждая загрузка останется конфиденциальной и безопасной, если только она не будет передана намеренно. + + + Платформа поддерживает широкий спектр форматов изображений, включая стандартные и высокоэффективные типы, что позволяет беспрепятственно обрабатывать все виды медиафайлов. Загруженные изображения могут быть автоматически оптимизированы путем сжатия и удаления метаданных, что обеспечивает быструю загрузку и защиту конфиденциальной информации, которая может быть встроена в файлы. Этот подход сочетает в себе удобство и конфиденциальность, что делает Slink подходящим как для личного использования, так и для профессиональной среды, требующей конфиденциальности. + + + Помимо простого хостинга изображений, Slink включает в себя мощную систему управления пользователями и разрешениями. Администраторы могут требовать одобрения новых пользователей, применять политики надежности паролей и ограничивать размеры загрузки для обеспечения безопасности и стабильности. Каждое общее изображение можно связать с помощью уникальных URL-адресов, что упрощает распространение визуальных изображений, сохраняя при этом полный контроль над доступом. + + + Slink построен на идее собственности и прозрачности. Он позволяет избежать ненужной сложности, вместо этого сосредоточив внимание на надежности, производительности и удобстве использования. Независимо от того, используется ли Slink для обмена творческими работами, управления внутренними визуальными ресурсами или хранения личных коллекций, он предлагает чистый и ответственный способ размещения и обмена изображениями с полным спокойствием. +developer: Andrii Kryvoviaz +website: https://docs.slinkapp.io/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3848 +repo: https://github.com/andrii-kryvoviaz/slink +support: https://github.com/andrii-kryvoviaz/slink/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + ⚠️ Все акции теперь по умолчанию полностью конфиденциальны. Существующие общие ресурсы будут перенесены автоматически, но общие ресурсы с настраиваемыми параметрами необходимо переносить вручную. + + + Это обновление содержит несколько новых функций и улучшений: + - Добавлена многоязычная поддержка с переводом на немецкий, испанский, французский, итальянский, японский, польский, украинский и китайский. + - Добавлены элементы управления видимостью и разрешениями для каждого изображения для более детального обмена. + - Добавлена дополнительная защита паролем для общих изображений. + - Добавлены даты истечения срока действия акций, чтобы они автоматически отзывались через выбранное время. + - Добавлена специальная страница для просмотра и управления всеми опубликованными вами общими ресурсами. + - Улучшена скорость загрузки страницы за счет устранения кратковременного мерцания пустого состояния при первой прорисовке. + - Улучшено поведение копирования в буфер обмена с тонким звуковым сигналом. + - Обновленный интерфейс с более компактным переключателем просмотра, адаптивной панелью поиска и обновленной страницей загрузки. + + + Полные примечания к выпуску можно найти по адресу https://github.com/andrii-kryvoviaz/slink/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/slink/docker-compose.yml b/slink/docker-compose.yml new file mode 100644 index 0000000..a22b7bd --- /dev/null +++ b/slink/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: slink_web_1 + APP_PORT: 3000 + + web: + image: anirdev/slink:v1.11.0@sha256:8a7476a8ec940f23d398ab836bc0da5adcf742f686be7cd31c086e64769e95de + user: "1000:1000" + restart: on-failure + environment: + TZ: UTC + ORIGIN: http://${DEVICE_DOMAIN_NAME}:8811 + REQUIRE_SSL: "false" + USER_APPROVAL_REQUIRED: "false" + USER_PASSWORD_MIN_LENGTH: 8 + USER_PASSWORD_REQUIREMENTS: 15 + IMAGE_MAX_SIZE: 15M + IMAGE_STRIP_EXIF_METADATA: "true" + IMAGE_COMPRESSION_QUALITY: 80 + STORAGE_PROVIDER: local + volumes: + - ${APP_DATA_DIR}/data/var:/app/var/data + - ${APP_DATA_DIR}/data/images:/app/slink/images diff --git a/snapdrop/data/config/.gitkeep b/snapdrop/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/snapdrop/dfwebos-app.yml b/snapdrop/dfwebos-app.yml new file mode 100644 index 0000000..51d27f5 --- /dev/null +++ b/snapdrop/dfwebos-app.yml @@ -0,0 +1,25 @@ +manifestVersion: 1 +id: snapdrop +category: files +name: Snapdrop +version: "b8b78cc2" +tagline: Альтернатива Airdrop с открытым исходным кодом +description: >- + Snapdrop — локальный обмен файлами в вашем браузере. Вдохновлен Airdrop от Apple. +developer: RobinLinus +website: https://snapdrop.net/ +dependencies: [] +repo: https://github.com/RobinLinus/snapdrop +support: https://github.com/RobinLinus/snapdrop/blob/master/docs/faq.md +port: 8222 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/290 +releaseNotes: >- + Это обновление включает улучшения производительности и исправления ошибок. \ No newline at end of file diff --git a/snapdrop/docker-compose.yml b/snapdrop/docker-compose.yml new file mode 100644 index 0000000..5d73a0b --- /dev/null +++ b/snapdrop/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: snapdrop_server_1 + APP_PORT: 80 + + server: + image: linuxserver/snapdrop:version-b8b78cc2@sha256:3e0af233372e6ae7ac711397d40cbe2797cefe13220d65e5e284a64252cc0c2c + volumes: + - ${APP_DATA_DIR}/data/config:/config + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 \ No newline at end of file diff --git a/snort/dfwebos-app.yml b/snort/dfwebos-app.yml new file mode 100644 index 0000000..e53ed1c --- /dev/null +++ b/snort/dfwebos-app.yml @@ -0,0 +1,74 @@ +manifestVersion: 1 +id: snort +category: social +name: Snort +version: "v0.5.3" +tagline: Быстрый Nostr интерфейс +description: >- + Snort — это клиент для Nostr, созданный с использованием React, быстрый и легкий, но при этом предлагающий широкий спектр функций. + Наша цель – предоставить пользователям простой в использовании интерфейс для взаимодействия с сетью Nostr, сделав его доступным для всех типов пользователей. + Благодаря чистому и интуитивно понятному дизайну Snort упрощает навигацию по сети Nostr и доступ к ее функциям, позволяя пользователям эффективно управлять своими данными. +releaseNotes: >- + # Основные моменты + + - **Усиление безопасности**: комплексные исправления аудита, включая проверку подписи Шнорра, защиту от подделки ретрансляционных сообщений NIP-46, улучшения шифрования PIN-кода и удаление доверия делегирования NIP-26. + + - **Производительность**: пакетная проверка Шнорра в WASM, ленивая загрузка маршрутов, предварительно скомпилированные переводы, пакетная оптимизация рабочих реле и устранение двойной проверки для каждого события. + + - **Стабильность**: исправлены многочисленные циклы рендеринга React, массивы зависимостей перехватчиков, устаревшие замыкания и утечки жизненного цикла/памяти во всем приложении. + + + # Добавлен + + - Комплексные тесты пути обработки запросов. + + - Загрузчик профилей приоритетов с пакетной загрузкой, уровнями приоритета и фрагментацией + + - Вид DVM: 7000, отображение счета-фактуры, требующего оплаты + + - Резервное реле по умолчанию, когда пул пуст. + + - Миграция манифеста Zapstore (nap.yaml → zapstore.yaml) + + + # Зафиксированный + + - Реальная проверка подписи Шнорра в isValid + + - Проблемы безопасности шифрования PIN-кода. + + - НИП-46 защищен от поддельных ретрансляционных сообщений и утечки секретов. + + - Удалено непроверенное доверие делегирования NIP-26 в getRootPubKey. + + - Обернуты все опасные вызовы JSON.parse в try/catch. + + - Добавлены таймауты для всех висящих обещаний. + + - Добавлено управление жизненным циклом и исправлены утечки таймера/памяти. + + — Циклы рендеринга в NoteReaction, закрепленных на странице профиля заметках, уведомлениях и NoteContext. + + - Реагировать на массивы зависимостей перехватчиков и устаревшие замыкания между компонентами. + + - Отложенный снимок NoteStore и мутация ввода OutboxModel. + + - Трассировки очередей для подключения реле с тестами системы запросов на крайние случаи. + + + https://github.com/v0l/snort/compare/v0.4.0...v0.5.0 +developer: Snort +website: https://snort.social +dependencies: [] +repo: https://git.v0l.io/Kieran/snort +support: https://t.me/snort_social +port: 52027 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Snort +submission: https://github.com/getumbrel/dfwebos-apps/pull/411 diff --git a/snort/docker-compose.yml b/snort/docker-compose.yml new file mode 100644 index 0000000..49cfd74 --- /dev/null +++ b/snort/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: snort_web_1 + APP_PORT: 8080 + + web: + image: voidic/snort:v0.5.3@sha256:410778efd4d74f001bb20e91e9f752bda8bb2e5d5f796a2020b253be8b9ca099 + init: true diff --git a/snowflake/data/.gitkeep b/snowflake/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/snowflake/data/index.html b/snowflake/data/index.html new file mode 100644 index 0000000..8f5404d --- /dev/null +++ b/snowflake/data/index.html @@ -0,0 +1,166 @@ + + + + + + Прокси Tor Snowflake + + + + + + + + +
+
+ + + + + + + + + + + + + + +
+ ● Запущено +

Прокси Tor Snowflake

+
+
+

+ Спасибо за установку прокси Tor Snowflake на ваш DFWebOS. Это помогает обходить цензуру Tor по всему миру. +

+

+ От вас больше ничего не требуется, кроме того, чтобы ваш DFWebOS оставался включенным. :) +

+
+

+ Ниже доступна почасовая статистика данных, переданных через ваш прокси. +

+
+
+
+
+ + + + + + + diff --git a/snowflake/dfwebos-app.yml b/snowflake/dfwebos-app.yml new file mode 100644 index 0000000..1212837 --- /dev/null +++ b/snowflake/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1.1 +id: snowflake +category: networking +name: Tor Snowflake Proxy +version: "v2.12.1" +tagline: Помогите победить интернет-цензуру +description: >- + Snowflake — это система борьбы с интернет-цензурой. Люди, которые + censored может использовать Snowflake для доступа в Интернет. Их связь идет + через прокси-серверы Snowflake, которыми управляют волонтеры. + + + Если ваш доступ в Интернет не подвергается цензуре, вам следует рассмотреть возможность использования прокси-сервера Snowflake, чтобы помочь пользователям в цензурируемых сетях. Нет необходимости беспокоиться о том, к каким веб-сайтам люди обращаются через ваш прокси. Их видимый IP-адрес просмотра будет соответствовать их выходному узлу Tor, а не вашему. +developer: The Tor Project, Inc. +website: https://snowflake.torproject.org/ +dependencies: [] +repo: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/tree/main +support: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues +port: 3800 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +releaseNotes: >- + Различные исправления и улучшения: + - Исправлена проблема с конвейером выпуска версии 2.12.0. + - Отключить периодическую статистику прокси, если суммарный интервал установлен на ноль. + - Установите для кода страны значение «неизвестно», если поиск по геолокации не удался. + - Добавлена поддержка скрытого транспорта DTLS в прокси и клиенте. + - Обновлен стек pion WebRTC с исправлениями безопасности и улучшениями производительности. + - Опрос прокси-сервера возможен только в том случае, если ретранслятор по умолчанию доступен. + - Добавлена поддержка нескольких каналов SQS. + - Добавлена опция обратного измерения оттока прокси у брокера. + - Добавлен показатель Prometheus для количества ответов прокси. + - Исправлено состояние гонки в безопасном помощнике по метрикам Prometheus. + - Четкая карта видимых IP-адресов прокси-серверов для предотвращения неограниченного роста. + - Извлечение IP-адреса клиента из SDP для рандеву кеша AMP. + - Исправлены отсутствующие метки в изображении Docker. + - Упрощение показателей брокера и удаление мьютексов. + - Обновление списка и зависимостей STUN-серверов. + + + Информация о выпуске: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/releases + + + Сравните с версией 2.11.0: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/compare/v2.11.0...v2.12.1 +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/1284 diff --git a/snowflake/docker-compose.yml b/snowflake/docker-compose.yml new file mode 100644 index 0000000..2fd397b --- /dev/null +++ b/snowflake/docker-compose.yml @@ -0,0 +1,23 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: snowflake_web_1 + APP_PORT: 3800 + + proxy: + image: thetorproject/snowflake-proxy:v2.12.1@sha256:53658adcf8183ed387a8abce383536f45d72b4688638e078d6c1686970199feb + restart: on-failure + stop_grace_period: 1m + command: "-log /data/snowflake.log -verbose" + volumes: + - ${APP_DATA_DIR}/data:/data + + web: + image: sorenisanerd/gotty:v1.6.0@sha256:23b4669973e96d8d7d37b3bfd9e6566bdd701aa1a56eee2dc0e0362bd927ed88 + restart: on-failure + stop_grace_period: 1m + command: gotty --port 3800 --index "/snowflake/index.html" --title-format "Tor Snowflake Proxy" bash -c 'tail -n 10000 -f /snowflake/snowflake.log | grep "Traffic Relayed"' + volumes: + - ${APP_DATA_DIR}/data:/snowflake diff --git a/snowflake/hooks/pre-start b/snowflake/hooks/pre-start new file mode 100755 index 0000000..018fa18 --- /dev/null +++ b/snowflake/hooks/pre-start @@ -0,0 +1,188 @@ +#!/usr/bin/env bash +set -euo pipefail + +### Обновите index.html для снежинки, если он не обновлен. + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="${APP_DIR}/data" + +INDEX_HTML_FILE="${APP_DATA_DIR}/index.html" + +# Мы используем маркер в верхней части файла, чтобы определить канонический index.html для снежинки. +MARKER_REGEX='^' + +# Проверяем, не существует ли файла index.html или он существует и маркер не актуален +if [[ ! -f "${INDEX_HTML_FILE}" ]] || ! grep -qx "${MARKER_REGEX}" "${INDEX_HTML_FILE}"; then + echo "Updating index.html file for snowflake." + # Перезапишите файл index.html. + cat >"${INDEX_HTML_FILE}" <<'EOF' + + + + + Tor Snowflake Proxy + + + + + + + + +
+
+ + + + + + + + + + + + + + +
+ ● Running +

Tor Snowflake Proxy

+
+
+

+ Thank you for installing Tor Snowflake Proxy on your DFWebOS to help defeat Tor censorship around the world. +

+

+ No further action is required from your end other than keeping your DFWebOS running. :) +

+
+

+ Hourly statistics of the data relayed through your proxy are available below. +

+
+
+
+
+ + + + + + + +EOF + +echo "Updated index.html file for snowflake." + +fi diff --git a/solidtime/data/app/.gitkeep b/solidtime/data/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/solidtime/data/app/app/.gitkeep b/solidtime/data/app/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/solidtime/data/app/framework/cache/.gitkeep b/solidtime/data/app/framework/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/solidtime/data/app/framework/views/.gitkeep b/solidtime/data/app/framework/views/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/solidtime/data/app/logs/.gitkeep b/solidtime/data/app/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/solidtime/data/db/.gitkeep b/solidtime/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/solidtime/dfwebos-app.yml b/solidtime/dfwebos-app.yml new file mode 100644 index 0000000..f759e49 --- /dev/null +++ b/solidtime/dfwebos-app.yml @@ -0,0 +1,55 @@ +manifestVersion: 1.1 +id: solidtime +name: Solidtime +tagline: Простое, безопасное и конфиденциальное приложение для отслеживания времени +category: files +version: "0.12.1" +port: 8770 +description: >- + 🕒 Solidtime — это простое, безопасное и конфиденциальное приложение для отслеживания времени, которое поможет вам следить за своим временем и оставаться продуктивным. Он прост в использовании и уважает вашу конфиденциальность, сохраняя ваши данные локально. + + + 📊Особенности: + - Отслеживайте свое время с помощью простого и интуитивно понятного интерфейса + - Просмотр подробных отчетов об использовании вашего времени + - Экспортируйте свои данные в CSV для дальнейшего анализа. + - Безопасно и конфиденциально: ваши данные хранятся локально на вашем DFWebOS. + + ⚠️ Новых пользователей пока можно создавать только через терминал. Пример: + + `sudo docker exec -i Solidtime_scheduler_1 bash -c "echo '<пароль' | php artisan admin:user:create '' '' --ask-for-password --verify-email"` + + + 💻 Чтобы иметь возможность использовать Desktop Client, необходим идентификатор клиента. + – Используйте приложение DFWebOS Files и перейдите в раздел **Apps/Solidtime**. + - Там можно найти файл `desktop_client_id.txt`, содержащий идентификатор, необходимый для начала работы. + + + Приложению требуется несколько минут, прежде чем оно станет доступным после установки. Пожалуйста, будьте терпеливы. +developer: Solidtime +website: https://www.solidtime.io/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/2588 +repo: https://github.com/solidtime-io/solidtime +support: https://github.com/solidtime-io/solidtime/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +defaultUsername: "dfwebos@dfwebos.local" +deterministicPassword: true +defaultPassword: "" +dependencies: [] +releaseNotes: >- + 🚨 Это обновление включает исправление безопасности. Пожалуйста, обновите его как можно скорее. + + + Это обновление включает исправление безопасности и новые функции: + - Исправлена уязвимость безопасности, позволяющая изменять записи времени в разных организациях. + - Имя проекта теперь предварительно заполняется при открытии модального окна создания проекта. + - Добавлена возможность отключить группировку похожих записей времени. + + + Полные примечания к выпуску можно найти на сайте https://github.com/solidtime-io/solidtime/releases. +path: "" diff --git a/solidtime/docker-compose.yml b/solidtime/docker-compose.yml new file mode 100644 index 0000000..366a0f6 --- /dev/null +++ b/solidtime/docker-compose.yml @@ -0,0 +1,215 @@ +services: + app_proxy: + environment: + APP_HOST: solidtime_app_1 + APP_PORT: 8000 + PROXY_AUTH_ADD: "false" + + app: + image: solidtime/solidtime:0.12.1@sha256:e6c67c722b7237193b77eba7d9808f2b6bc65bcb232caaa6ecd1306a2daecfd3 + user: "1000:1000" + restart: on-failure + volumes: + - "${APP_DATA_DIR}/data/app:/var/www/html/storage" + environment: + CONTAINER_MODE: "http" + AUTO_DB_MIGRATE: "true" + APP_NAME: "solidtime" + VITE_APP_NAME: "solidtime" + APP_ENV: "production" + APP_DEBUG: "false" + APP_URL: "http://${DEVICE_DOMAIN_NAME}:8770" + APP_FORCE_HTTPS: "false" + TRUSTED_PROXIES: "0.0.0.0/0,2000:0:0:0:0:0:0:0/3" + + # Аутентификация + SUPER_ADMINS: "dfwebos@dfwebos.local" + + # Ведение журнала + LOG_CHANNEL: "stderr_daily" + LOG_LEVEL: "debug" + + # База данных + DB_CONNECTION: "pgsql" + DB_HOST: "solidtime_db_1" + DB_PORT: "5432" + DB_SSLMODE: "require" + DB_DATABASE: "solidtime" + DB_USERNAME: "solidtime" + DB_PASSWORD: "solidtime" + + # Почта + MAIL_MAILER: "smtp" + MAIL_HOST: "" + MAIL_PORT: "" + MAIL_ENCRYPTION: "tls" + MAIL_FROM_ADDRESS: "no-reply@your-domain.com" + MAIL_FROM_NAME: "solidtime" + MAIL_USERNAME: "" + MAIL_PASSWORD: "" + + # Очередь + QUEUE_CONNECTION: "database" + + # Хранение файлов + FILESYSTEM_DISK: "local" + PUBLIC_FILESYSTEM_DISK: "public" + + # Услуги + GOTENBERG_URL: "http://solidtime_gotenberg_1:3000" + env_file: + - ${APP_DATA_DIR}/keys.env + healthcheck: + test: [ "CMD-SHELL", "curl --fail http://localhost:8000/health-check/up || exit 1" ] + depends_on: + db: + condition: service_healthy + + scheduler: + image: solidtime/solidtime:0.12.1@sha256:e6c67c722b7237193b77eba7d9808f2b6bc65bcb232caaa6ecd1306a2daecfd3 + user: "1000:1000" + restart: on-failure + volumes: + - "${APP_DATA_DIR}/data/app:/var/www/html/storage" + environment: + CONTAINER_MODE: scheduler + APP_NAME: "solidtime" + VITE_APP_NAME: "solidtime" + APP_ENV: "production" + APP_DEBUG: "false" + APP_URL: "http://${DEVICE_DOMAIN_NAME}:8770" + APP_FORCE_HTTPS: "false" + TRUSTED_PROXIES: "0.0.0.0/0,2000:0:0:0:0:0:0:0/3" + + # Аутентификация + SUPER_ADMINS: "dfwebos@dfwebos.local" + + # Ведение журнала + LOG_CHANNEL: "stderr_daily" + LOG_LEVEL: "debug" + + # База данных + DB_CONNECTION: "pgsql" + DB_HOST: "solidtime_db_1" + DB_PORT: "5432" + DB_SSLMODE: "require" + DB_DATABASE: "solidtime" + DB_USERNAME: "solidtime" + DB_PASSWORD: "solidtime" + + # Почта + MAIL_MAILER: "smtp" + MAIL_HOST: "" + MAIL_PORT: "" + MAIL_ENCRYPTION: "tls" + MAIL_FROM_ADDRESS: "no-reply@your-domain.com" + MAIL_FROM_NAME: "solidtime" + MAIL_USERNAME: "" + MAIL_PASSWORD: "" + + # Очередь + QUEUE_CONNECTION: "database" + + # Хранение файлов + FILESYSTEM_DISK: "local" + PUBLIC_FILESYSTEM_DISK: "public" + + # Услуги + GOTENBERG_URL: "http://solidtime_gotenberg_1:3000" + env_file: + - ${APP_DATA_DIR}/keys.env + healthcheck: + test: [ "CMD", "healthcheck" ] + depends_on: + db: + condition: service_healthy + + queue: + image: solidtime/solidtime:0.12.1@sha256:e6c67c722b7237193b77eba7d9808f2b6bc65bcb232caaa6ecd1306a2daecfd3 + user: "1000:1000" + restart: on-failure + volumes: + - "${APP_DATA_DIR}/data/app:/var/www/html/storage" + environment: + CONTAINER_MODE: worker + WORKER_COMMAND: "php /var/www/html/artisan queue:work" + APP_NAME: "solidtime" + VITE_APP_NAME: "solidtime" + APP_ENV: "production" + APP_DEBUG: "false" + APP_URL: "http://${DEVICE_DOMAIN_NAME}:8770" + APP_FORCE_HTTPS: "false" + TRUSTED_PROXIES: "0.0.0.0/0,2000:0:0:0:0:0:0:0/3" + + # Аутентификация + SUPER_ADMINS: "dfwebos@dfwebos.local" + + # Ведение журнала + LOG_CHANNEL: "stderr_daily" + LOG_LEVEL: "debug" + + # База данных + DB_CONNECTION: "pgsql" + DB_HOST: "solidtime_db_1" + DB_PORT: "5432" + DB_SSLMODE: "require" + DB_DATABASE: "solidtime" + DB_USERNAME: "solidtime" + DB_PASSWORD: "solidtime" + + # Почта + MAIL_MAILER: "smtp" + MAIL_HOST: "" + MAIL_PORT: "" + MAIL_ENCRYPTION: "tls" + MAIL_FROM_ADDRESS: "no-reply@your-domain.com" + MAIL_FROM_NAME: "solidtime" + MAIL_USERNAME: "" + MAIL_PASSWORD: "" + + # Очередь + QUEUE_CONNECTION: "database" + + # Хранение файлов + FILESYSTEM_DISK: "local" + PUBLIC_FILESYSTEM_DISK: "public" + + # Услуги + GOTENBERG_URL: "http://solidtime_gotenberg_1:3000" + env_file: + - ${APP_DATA_DIR}/keys.env + healthcheck: + test: [ "CMD", "healthcheck" ] + depends_on: + db: + condition: service_healthy + + db: + image: 'postgres:17.3@sha256:0321e2252ebfeecb8bc1a899755084d29bce872953e1a5a3e25ec0860b739098' + user: "1000:1000" + restart: on-failure + environment: + PGPASSWORD: 'soldtime' + POSTGRES_DB: 'solidtime' + POSTGRES_USER: 'solidtime' + POSTGRES_PASSWORD: 'solidtime' + volumes: + - '${APP_DATA_DIR}/data/db:/var/lib/postgresql/data' + healthcheck: + test: + - CMD + - pg_isready + - '-q' + - '-d' + - 'solidtime' + - '-U' + - 'solidtime' + retries: 3 + timeout: 5s + + gotenberg: + image: gotenberg/gotenberg:8.17.1@sha256:46e7b68adeadda1794a9ab194f1e2939f5b09ff21aadef6000e84102c9af6dd5 + user: "1000:1000" + restart: on-failure + healthcheck: + test: [ "CMD", "curl", "--silent", "--fail", "http://localhost:3000/health" ] diff --git a/solidtime/hooks/post-start b/solidtime/hooks/post-start new file mode 100755 index 0000000..b06a503 --- /dev/null +++ b/solidtime/hooks/post-start @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Sentinel-файл, чтобы проверить, был ли уже создан client_id +CLIENT_SENTINEL="${APP_DATA_DIR}/desktop_client_id.txt" + +# ──────────────────────────────────────────────────────────── +# Убедитесь, что desktop_client_id.txt существует. +# ──────────────────────────────────────────────────────────── +if [[ ! -s "$CLIENT_SENTINEL" ]]; then + echo "Solidtime: generating desktop client id…" + "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \ + run --rm scheduler php artisan passport:client --name=desktop --redirect_uri=solidtime://oauth/callback --public -n \ + | grep 'Client ID' | awk '{print $NF}' > "$CLIENT_SENTINEL" +fi diff --git a/solidtime/hooks/post-update b/solidtime/hooks/post-update new file mode 100755 index 0000000..9a56654 --- /dev/null +++ b/solidtime/hooks/post-update @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Пересчитать вычисленные атрибуты для SolidTime + +echo "Recalculating computed attributes for solidtime." +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" run --rm scheduler php artisan computed-attributes:generate +echo "Successfully recalculated computed attributes for solidtime." + +exit 0 diff --git a/solidtime/hooks/pre-start b/solidtime/hooks/pre-start new file mode 100755 index 0000000..6ddbfc8 --- /dev/null +++ b/solidtime/hooks/pre-start @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +KEYS_FILE="${APP_DIR}/keys.env" + +# Sentinel-файл, чтобы проверить, был ли уже инициализирован администратор +ADMIN_SENTINEL="${APP_DATA_DIR}/.admin_created" + +# имя пользователя и адрес электронной почты администратора +ADMIN_NAME="DFWebOS" +ADMIN_EMAIL="dfwebos@dfwebos.local" + +# максимальное количество попыток и время ожидания между ними (60 секунд) +MAX_TRIES=12 +SLEEP_SECS=5 + +# ──────────────────────────────────────────────────────────── +# Полностью пропустить загрузку, если администратор уже инициализирован. +# ──────────────────────────────────────────────────────────── +if [[ -f "$ADMIN_SENTINEL" ]]; then + echo "Solidtime: admin already initialised - skipping bootstrap." + exit 0 +fi + +# ──────────────────────────────────────────────────────────── +# Убедитесь, что keys.env существует. +# ──────────────────────────────────────────────────────────── +if [[ ! -s "$KEYS_FILE" ]]; then + echo "Solidtime: generating keys.env…" + "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \ + run --rm app php artisan self-host:generate-keys \ + | grep -v "Container mode:" > "$KEYS_FILE" +fi + +# ──────────────────────────────────────────────────────────── +# Подключите весь стек, чтобы миграция выполнялась автоматически. +# Вероятно, здесь можно вызвать только необходимые сервисы, но делаем это для простоты. +# --wait игнорируется в старых версиях Compose (DFWebOS < 1.0) +# ──────────────────────────────────────────────────────────── +echo "Solidtime: starting full stack to run migrations…" +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \ + up -d --wait --wait-timeout 90 + +# ──────────────────────────────────────────────────────────── +# Повторяйте попытку, пока не будет создан пользователь-администратор (максимум 60 секунд). +# Все контейнеры запущены, поэтому с первой попытки все должно получиться. +# Но включение цикла повторов для надежности +# ──────────────────────────────────────────────────────────── +echo "Solidtime: ensuring admin user exists…" +for ((try=1; try<=MAX_TRIES; try++)); do + # Введите пароль + подтверждение в неинтерактивном режиме (две строки, разделенные \n), + # затем запустите помощник Laravel внутри службы *scheduler*. + # - `printf … |` предоставляет стандартный ввод, поэтому команда никогда не запрашивает. + # - `compose … exec -T` отключает распределение TTY по умолчанию, делая стандартный ввод + # вести себя как обычный канал (требуется для ввода в сценарии). + # - В случае успеха помощник завершает работу из 0, сообщая включающему циклу, что мы закончили. + if printf '%s\n%s\n' "${APP_PASSWORD}" "${APP_PASSWORD}" | \ + "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \ + exec -T scheduler php artisan admin:user:create \ + "${ADMIN_NAME}" "${ADMIN_EMAIL}" \ + --ask-for-password --verify-email ; then + touch "$ADMIN_SENTINEL" + echo "Solidtime: admin user ready." + break + fi + echo " Attempt $try/$MAX_TRIES failed - retrying in ${SLEEP_SECS}s…" + sleep "$SLEEP_SECS" +done + +if [[ ! -f "$ADMIN_SENTINEL" ]]; then + echo "Solidtime ERROR: could not create admin user after $MAX_TRIES attempts." + exit 1 +fi + +# ──────────────────────────────────────────────────────────── +# Создайте клиент личного доступа Passport, если он отсутствует. +# ──────────────────────────────────────────────────────────── +if ! grep -q "^PASSPORT_PERSONAL_ACCESS_CLIENT_ID=" "$KEYS_FILE" 2>/dev/null; then + echo "Solidtime: creating Passport personal-access client…" + "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \ + run --rm app php artisan passport:client --personal --name="API" | + awk '/Client ID/ {printf "PASSPORT_PERSONAL_ACCESS_CLIENT_ID=%s\n", $NF} + /Client secret/ {printf "PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=%s\n", $NF}' \ + >> "$KEYS_FILE" + echo "Solidtime: Passport client created." +fi + +# ──────────────────────────────────────────────────────────── +# Отключите все контейнеры и позвольте DFWebOS запустить их заново. +# ──────────────────────────────────────────────────────────── +echo "Solidtime: bootstrap finished - stopping stack for clean start…" +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" stop diff --git a/solidtime/keys.env b/solidtime/keys.env new file mode 100644 index 0000000..e69de29 diff --git a/sonarr/data/config/.gitkeep b/sonarr/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/sonarr/dfwebos-app.yml b/sonarr/dfwebos-app.yml new file mode 100644 index 0000000..bbbe574 --- /dev/null +++ b/sonarr/dfwebos-app.yml @@ -0,0 +1,41 @@ +manifestVersion: 1.1 +id: sonarr +category: media +name: Sonarr +version: "4.0.17.2952" +tagline: Smart PVR для пользователей групп новостей и BitTorrent +description: >- + Sonarr — это PVR для пользователей Usenet и BitTorrent. Он может отслеживать несколько RSS-каналов на предмет новых эпизодов ваших любимых шоу, а также захватывать, сортировать и переименовывать их. Его также можно настроить на автоматическое повышение качества уже загруженных файлов, когда становится доступным формат более высокого качества. + + + 🛠️ ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Sonarr на DFWebOS автоматически подключится для загрузки клиентов, установленных из DFWebOS App Store. Выберите из Transmission, qBittorerent и SABnzbd. Просто установите предпочитаемый клиент(ы). + + + Все, что вам нужно сделать, это добавить индексатор, чтобы Sonarr мог искать шоу. Вы можете добавлять индексаторы непосредственно в Sonarr или установить Prowlarr из DFWebOS App Store, чтобы упростить управление индексаторами в нескольких приложениях. + Добавьте свои индексаторы в Prowlarr, и они будут автоматически доступны в Sonarr. +developer: Sonarr +website: https://sonarr.tv/ +dependencies: + - transmission +repo: https://github.com/Sonarr/Sonarr +support: https://github.com/Sonarr/Sonarr/issues +port: 8989 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +releaseNotes: >- + Это небольшое обновление с исправлениями ошибок и улучшениями. + + + Полные примечания к выпуску Sonarr можно найти по адресу https://github.com/Sonarr/Sonarr/releases. +defaultUsername: "" +defaultPassword: "" +torOnly: false +permissions: + - STORAGE_DOWNLOADS +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/commit/60878f278d544b204d8e7c96240c797f43a9b319 diff --git a/sonarr/docker-compose.yml b/sonarr/docker-compose.yml new file mode 100644 index 0000000..79a6da2 --- /dev/null +++ b/sonarr/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: sonarr_server_1 + APP_PORT: 8989 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: linuxserver/sonarr:4.0.17@sha256:76414c033f290d3c9f1f9dfad71150abe71d92592369a3377a5903d579e6e2b2 + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + restart: on-failure + + mac: + image: getumbrel/media-app-configurator:v1.3.0@sha256:67e75dd9f5a14402b7816119a8e20189bc2465484cea077909d164687e59742b + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + environment: + APP_ID: "sonarr" + APP_URL: "http://sonarr_server_1:8989" + TRANSMISSION_HOST: "transmission_server_1" + TRANSMISSION_PORT: 9091 + ROOT_FOLDER: "/downloads/shows" + # дополнительный клиент загрузки qBittorrent + QBITTORRENT_INSTALLED: ${APP_SONARR_QBITTORRENT_INSTALLED:-"false"} + QBITTORRENT_HOST: "qbittorrent_server_1" + QBITTORRENT_PORT: 8080 + # дополнительный клиент загрузки SABnzbd + SABNZBD_INSTALLED: ${APP_SONARR_SABNZBD_INSTALLED:-"false"} + SABNZBD_HOST: "sabnzbd_web_1" + SABNZBD_PORT: 8080 + SABNZBD_API_KEY: ${APP_SONARR_SABNZBD_API_KEY:-""} diff --git a/sonarr/exports.sh b/sonarr/exports.sh new file mode 100644 index 0000000..8446541 --- /dev/null +++ b/sonarr/exports.sh @@ -0,0 +1,13 @@ +# Проверьте, установлены ли qBittorrent и SABnzbd. +installed_apps=$("${DFWEBOS_ROOT}/scripts/app" ls-installed) + +if echo "$installed_apps" | grep --quiet 'qbittorrent'; then + export APP_SONARR_QBITTORRENT_INSTALLED="true" +fi + +if echo "$installed_apps" | grep --quiet 'sabnzbd'; then + export APP_SONARR_SABNZBD_INSTALLED="true" + # экспортируйте SABNZBD_API_KEY, который имеет формат: + # api_key = 98e3444f7fab45e592958673bf656g3 + export APP_SONARR_SABNZBD_API_KEY=$(grep -Po 'api_key = \K.*' "${DFWEBOS_ROOT}/app-data/sabnzbd/data/config/sabnzbd.ini") +fi diff --git a/sonarr/hooks/post-install b/sonarr/hooks/post-install new file mode 100755 index 0000000..844cdf1 --- /dev/null +++ b/sonarr/hooks/post-install @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -euo pipefail + +if "${DFWEBOS_ROOT}/scripts/app" ls-installed | grep --quiet 'prowlarr' +then + CONFIG_FILE="${APP_DATA_DIR}/data/config/config.xml" + + # Подождите, пока файл config.xml появится. + # Подождите, пока свойство ключа API () появится в файле конфигурации. + for attempt in $(seq 1 20); do + if [[ -f "${CONFIG_FILE}" ]] && cat "${CONFIG_FILE}" | grep --quiet ''; then + echo "config.xml file exists and xml key exists..." + + # Перезапустите Prowlarr, чтобы автоматически настроить его как приложение. + "${DFWEBOS_ROOT}/scripts/app" restart prowlarr + + exit + fi + sleep 1 + done + + >&2 echo "Error: Failed to locate inside: ${CONFIG_FILE}" + exit 1 +fi diff --git a/sparkkiosk/data/.gitkeep b/sparkkiosk/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/sparkkiosk/dfwebos-app.yml b/sparkkiosk/dfwebos-app.yml new file mode 100644 index 0000000..dcb69ba --- /dev/null +++ b/sparkkiosk/dfwebos-app.yml @@ -0,0 +1,30 @@ +manifestVersion: 1 +id: sparkkiosk +category: bitcoin +name: Sparkkiosk +version: "1.0.0-build-2" +tagline: Минимальный киоск LNURL +description: >- + Используйте Sparkkiosk, чтобы осуществлять молниеносные платежи с помощью распечатанных QR-кодов. + в киосках самообслуживания/кафе или других местах, где не предусмотрено POS-взаимодействие + Нужен или вариант. + + + Войдите в панель управления, создайте новый LNURL, установите валюту и сумму и загрузите QR для печати. Отслеживайте последние счета. +developer: Jens Gertsen +website: https://github.com/jensgertsen/sparkkiosk +dependencies: + - lightning +repo: https://github.com/jensgertsen/sparkkiosk +support: https://github.com/jensgertsen/sparkkiosk/discussions +port: 21214 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +torOnly: false +submitter: Jens Gertsen +submission: https://github.com/getumbrel/umbrel/pull/1312 +releaseNotes: "" \ No newline at end of file diff --git a/sparkkiosk/docker-compose.yml b/sparkkiosk/docker-compose.yml new file mode 100644 index 0000000..7f81710 --- /dev/null +++ b/sparkkiosk/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: sparkkiosk_web_1 + APP_PORT: 21214 + PROXY_AUTH_ADD: "false" + + web: + image: jensgertsen/sparkkiosk:v1.0.0@sha256:d49500ce9c47d04436e64dae7e336416aa32f83673058154aa8a983e1420008c + user: 1000:1000 + init: true + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + environment: + # ЛНД + LND_GRPC_ENDPOINT: $APP_LIGHTNING_NODE_IP + LND_GRPC_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + LND_GRPC_CERT: "/lnd/tls.cert" + LND_GRPC_MACAROON: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" + + # Приложение + APP_HIDDEN_SERVICE: http://$APP_HIDDEN_SERVICE + APP_PASSWORD: $APP_PASSWORD + APP_DOMAIN: $APP_DOMAIN diff --git a/specter-desktop/data/.gitkeep b/specter-desktop/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/specter-desktop/dfwebos-app.yml b/specter-desktop/dfwebos-app.yml new file mode 100644 index 0000000..5407067 --- /dev/null +++ b/specter-desktop/dfwebos-app.yml @@ -0,0 +1,63 @@ +manifestVersion: 1 +id: specter-desktop +category: bitcoin +name: Specter Desktop +version: "2.1.7" +tagline: Мультиподпись с аппаратными кошельками стала проще +description: >- + Spectre Desktop можно использовать для подключения к ядру Bitcoin, работающему на вашем DFWebOS или сервере Electrum. + Он функционирует как координатор только для просмотра для мультиподписей и одноключевых ключей. + Кошельки Bitcoin. На данный момент Spectre Desktop работает со всеми основными + аппаратные кошельки, в том числе: + + + - СидСигнер + + - Spectre DIY (опционально с воздушным зазором, с использованием QR-кодов) + + - Блокстрим Джейд + + - ColdCard (опционально с воздушным зазором, с использованием SD-карты) + + - Паспорт + + - БитБокс02 + + - Electrum (опционально с изолированным интерфейсом, если Electrum работает на защищенном компьютере/телефоне) + + - Keystone (с воздушным зазором, с использованием QR-кодов) + + - Трезор + + - Леджер + + - KeepKey + + + Spectre Desktop также поддерживает использование ядра Bitcoin на вашем DFWebOS в качестве горячего кошелька путем импорта или генерации случайной мнемоники BIP39, но эта функция является экспериментальной, и мы не рекомендуем использовать ее на данном этапе. Мы планируем добавить поддержку других аппаратных кошельков по мере их появления. +developer: Crypto Advance +website: https://specter.solutions +dependencies: + - bitcoin +repo: https://github.com/cryptoadvance/specter-desktop +support: https://t.me/spectersupport +port: 25441 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + Ключевые изменения в этом выпуске: + - Исправлен сбой при запуске, связанный с SQLAlchemy, путем обновления зависимости Spectrum. + - Исправлен сбой, когда ядро Bitcoin недоступно во время входа в систему. + - Исправлены различные проблемы с артефактами сборки macOS. + - Заменены операторы отладочной печати на правильный вход в код кошелька. + - Различные исправления ошибок и улучшения. + + + Полные примечания к выпуску и подробная информация доступны по адресу https://github.com/cryptoadvance/specter-desktop/releases. +submitter: k9ert +submission: https://github.com/getumbrel/umbrel/pull/339 diff --git a/specter-desktop/docker-compose.yml b/specter-desktop/docker-compose.yml new file mode 100644 index 0000000..ec65c01 --- /dev/null +++ b/specter-desktop/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: specter-desktop_web_1 + APP_PORT: 25441 + + web: + image: ghcr.io/cryptoadvance/specter-desktop:v2.1.7@sha256:585deac233ab0ff63f0362d5fbf9155d4613ea45296b0eb8cdce9febee718d44 + stop_signal: SIGINT + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + command: + - --host=0.0.0.0 + - --specter-data-folder=/data + environment: + # TODO: APP_PASSWORD + # Эти переменные env больше не работают, начиная с версии 2.0.0 (после введения опции общедоступного сервера Electrum). Сохраним их здесь для возможного использования в будущем, если Spectre Desktop снова добавит их поддержку. + BTC_RPC_USER: $APP_BITCOIN_RPC_USER + BTC_RPC_PASSWORD: $APP_BITCOIN_RPC_PASS + BTC_RPC_HOST: $APP_BITCOIN_NODE_IP + BTC_RPC_PORT: $APP_BITCOIN_RPC_PORT + BTC_RPC_PROTOCOL: http diff --git a/sphinx-relay/data/.gitkeep b/sphinx-relay/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/sphinx-relay/dfwebos-app.yml b/sphinx-relay/dfwebos-app.yml new file mode 100644 index 0000000..46873c0 --- /dev/null +++ b/sphinx-relay/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1.1 +id: sphinx-relay +category: social +name: Sphinx Relay +version: "2.5.2" +tagline: Общайтесь и платите в сети Lightning +description: >- + Sphinx Relay превращает ваш узел Lightning в персональный + коммуникационный сервер. Сообщения подвергаются сквозному шифрованию и передаются по + Сеть Bitcoin Lightning. Загрузите Sphinx на свой телефон с + https://sphinx.chat и соедините его с Sphinx Relay на DFWebOS. + + + Связь между узлами Sphinx Relay полностью осуществляется в сети Lightning, поэтому она децентрализована, неотслеживаема и зашифрована. Сообщения шифруются с использованием открытых ключей клиента в приложении Sphinx. + + + Вы можете присоединиться к племенам на https://tribes.sphinx.chat.. Если вы присоединяетесь к племени подкастов, вы можете слушать подкаст в Sphinx и передавать пожертвования хосту. +developer: Stakwork +website: https://sphinx.chat +dependencies: + - lightning +repo: https://github.com/stakwork/sphinx-relay +support: https://t.me/joinchat/Fb4OcRo4LrRD6NXfsNdeeQ +port: 3300 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: /connect +defaultUsername: "" +defaultPassword: "" +submitter: Stakwork +submission: https://github.com/getumbrel/umbrel/pull/341 +releaseNotes: >- + В этом выпуске Sphinx Relay обновляется до версии 2.5.2. + + + Ключевые улучшения в этом обновлении включают в себя: + - Улучшенная обработка счетов и обработка платежей. + - Улучшена обработка подписки MQTT после переподключения сети. + - Добавлена функция потоковой передачи сообщений. + - Реализовано ограничение скорости для повышения производительности. + - Улучшен прямой обмен сообщениями между пользователями на одном реле. + - Усиленные меры защиты от спама. + - Различные исправления ошибок и оптимизация производительности. + + + Полные примечания к выпуску и подробная информация доступны по адресу https://github.com/stakwork/sphinx-relay/releases. \ No newline at end of file diff --git a/sphinx-relay/docker-compose.yml b/sphinx-relay/docker-compose.yml new file mode 100644 index 0000000..4143d33 --- /dev/null +++ b/sphinx-relay/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: sphinx-relay_server_1 + APP_PORT: $APP_SPHINX_RELAY_PORT + PROXY_AUTH_ADD: "false" + + server: + image: sphinxlightning/sphinx-relay:v2.5.2@sha256:d37e2b72756cff670b759036fea6d4faad4cc10952256afd93f901ea36d652e2 + init: true + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + - ${APP_DATA_DIR}/data:/relay/.lnd/ + environment: + PUBLIC_URL: "$APP_HIDDEN_SERVICE:$APP_SPHINX_RELAY_PORT" + LND_IP: $APP_LIGHTNING_NODE_IP + CONNECT_UI: "true" + LND_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + TLS_LOCATION: /lnd/tls.cert + MACAROON_LOCATION: /lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/admin.macaroon + LND_LOG_LOCATION: /lnd/logs/bitcoin/${APP_BITCOIN_NETWORK}/lnd.log \ No newline at end of file diff --git a/sphinx-relay/exports.sh b/sphinx-relay/exports.sh new file mode 100644 index 0000000..30c1e9c --- /dev/null +++ b/sphinx-relay/exports.sh @@ -0,0 +1,2 @@ +export APP_SPHINX_RELAY_PORT="3300" +export APP_SPHINX_RELAY_TOR_HS_EXTRA_PORTS="${APP_SPHINX_RELAY_PORT}:sphinx-relay_server_1:${APP_SPHINX_RELAY_PORT}" \ No newline at end of file diff --git a/sqlitebrowser/data/config/.gitkeep b/sqlitebrowser/data/config/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/sqlitebrowser/data/config/.gitkeep @@ -0,0 +1 @@ + diff --git a/sqlitebrowser/dfwebos-app.yml b/sqlitebrowser/dfwebos-app.yml new file mode 100644 index 0000000..1ec0f81 --- /dev/null +++ b/sqlitebrowser/dfwebos-app.yml @@ -0,0 +1,52 @@ +manifestVersion: 1 +id: sqlitebrowser +name: SQLite Browser +tagline: Браузер базы данных для SQLite +category: developer +version: "3.13.1" +port: 8887 +description: >- + DB Browser для SQLite (DB4S) — это высококачественный визуальный инструмент с открытым исходным кодом для создания, проектирования и редактирования файлов базы данных, совместимых с SQLite. + + + DB4S предназначен для пользователей и разработчиков, которые хотят создавать, искать и редактировать базы данных. DB4S использует знакомый интерфейс, похожий на электронные таблицы, поэтому не нужно изучать сложные команды SQL. + + + Пользователям доступны элементы управления и мастера, позволяющие: + + - Создание и сжатие файлов базы данных. + + - Создание, определение, изменение и удаление таблиц + + - Создание, определение и удаление индексов + + - Просматривайте, редактируйте, добавляйте и удаляйте записи. + + - Поиск записей + + - Импорт и экспорт записей в виде текста + + - Импорт и экспорт таблиц из/в файлы CSV. + + - Импорт и экспорт баз данных из/в файлы дампа SQL. + + - Выполнение SQL-запросов и проверка результатов + + - Изучите журнал всех команд SQL, выдаваемых приложением. + + - Построение простых графиков на основе данных таблицы или запроса. +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +releaseNotes: "" +path: "" +defaultUsername: "" +defaultPassword: "" +developer: SQLiteBrowser +website: https://sqlitebrowser.org/ +repo: https://github.com/sqlitebrowser/sqlitebrowser +support: https://github.com/sqlitebrowser/sqlitebrowser/issues +submitter: dirstel +submission: https://github.com/getumbrel/dfwebos-apps/pull/2223 diff --git a/sqlitebrowser/docker-compose.yml b/sqlitebrowser/docker-compose.yml new file mode 100644 index 0000000..553c470 --- /dev/null +++ b/sqlitebrowser/docker-compose.yml @@ -0,0 +1,15 @@ +services: + app_proxy: + environment: + APP_HOST: sqlitebrowser_app_1 + APP_PORT: 3000 + + app: + image: linuxserver/sqlitebrowser:3.13.1@sha256:1b1e81f0af222af3353a4c8d3c4737264a1816a43e4410819430335fa099b1da + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/config:/config + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/CET diff --git a/squeaknode/dfwebos-app.yml b/squeaknode/dfwebos-app.yml new file mode 100644 index 0000000..63c2acf --- /dev/null +++ b/squeaknode/dfwebos-app.yml @@ -0,0 +1,31 @@ +manifestVersion: 1.1 +id: squeaknode +category: social +name: Squeaknode +version: "0.3.3" +tagline: Одноранговая лента статусов с монетизацией Lightning +description: >- + Squeaknode — это одноранговый микроблог, в котором сообщения разблокированы + Lightning Сетевые платежи. Приложение позволяет создавать, просматривать, покупать и продавать + скрипит. Писк — это пост, который может содержать до 280 символов. + + + Временная шкала Squeaknode упорядочена по высоте хеша блока Bitcoin, встроенного в каждый сигнал. Каждый писк должен быть подписан закрытым ключом автора. Squeaks можно загружать с любого узла на любой узел, но они остаются заблокированными до тех пор, пока загрузчик не внесет платеж Lightning для расшифровки контента. +developer: Jonathan Zernik +website: https://squeaknode.org +dependencies: + - bitcoin + - lightning +repo: https://github.com/squeaknode/squeaknode +support: https://github.com/squeaknode/squeaknode/discussions +port: 12994 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: dfwebos +deterministicPassword: true +submitter: Jonathan Zernik +submission: https://github.com/getumbrel/umbrel/pull/385 +releaseNotes: "" \ No newline at end of file diff --git a/squeaknode/docker-compose.yml b/squeaknode/docker-compose.yml new file mode 100644 index 0000000..46798e4 --- /dev/null +++ b/squeaknode/docker-compose.yml @@ -0,0 +1,58 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: squeaknode_web_1 + APP_PORT: $APP_SQUEAKNODE_PORT + + web: + image: ghcr.io/squeaknode/squeaknode:v0.3.3@sha256:021688519fc112bdec5d3e614719a80192065dae569fb85d8f5cd377ee1f9d65 + restart: on-failure + stop_grace_period: 1m + ports: + - "$APP_SQUEAKNODE_GRPC_PORT:$APP_SQUEAKNODE_GRPC_PORT" + volumes: + - ${APP_DATA_DIR}/sqk:/sqk + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + user: "1000:1000" + environment: + # Детали подключения Bitcoin Core + SQUEAKNODE_BITCOIN_RPC_HOST: $APP_BITCOIN_NODE_IP + SQUEAKNODE_BITCOIN_RPC_PORT: $APP_BITCOIN_RPC_PORT + SQUEAKNODE_BITCOIN_RPC_USER: $APP_BITCOIN_RPC_USER + SQUEAKNODE_BITCOIN_RPC_PASS: $APP_BITCOIN_RPC_PASS + + # Переменные среды LND + SQUEAKNODE_LIGHTNING_BACKEND: "lnd" + SQUEAKNODE_LIGHTNING_LND_RPC_HOST: $APP_LIGHTNING_NODE_IP + SQUEAKNODE_LIGHTNING_LND_RPC_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + SQUEAKNODE_LIGHTNING_LND_TLS_CERT_PATH: "/lnd/tls.cert" + SQUEAKNODE_LIGHTNING_LND_MACAROON_PATH: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" + + # Переменные среды Tor + SQUEAKNODE_TOR_PROXY_IP: "${TOR_PROXY_IP}" + SQUEAKNODE_TOR_PROXY_PORT: "${TOR_PROXY_PORT}" + + # Переменные среды приложения + SQUEAKNODE_WEBADMIN_ENABLED: "true" + SQUEAKNODE_WEBADMIN_USERNAME: "dfwebos" + SQUEAKNODE_WEBADMIN_PASSWORD: "${APP_PASSWORD}" + + SQUEAKNODE_NODE_NETWORK: "$APP_BITCOIN_NETWORK" + SQUEAKNODE_NODE_SQK_DIR_PATH: "/sqk" + SQUEAKNODE_NODE_MAX_SQUEAKS: 10000 + + SQUEAKNODE_SERVER_EXTERNAL_ADDRESS: $APP_SQUEAKNODE_P2P_HIDDEN_SERVICE + + DEBUG: "squeaknode:*" + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" \ No newline at end of file diff --git a/squeaknode/exports.sh b/squeaknode/exports.sh new file mode 100644 index 0000000..6e0d5bc --- /dev/null +++ b/squeaknode/exports.sh @@ -0,0 +1,7 @@ +export APP_SQUEAKNODE_PORT="12994" +export APP_SQUEAKNODE_GRPC_PORT="8994" +export APP_SQUEAKNODE_P2P_PORT="8555" +export APP_SQUEAKNODE_P2P_TESTNET_PORT="18555" + +squeaknode_p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname" +export APP_SQUEAKNODE_P2P_HIDDEN_SERVICE="$(cat "${squeaknode_p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" \ No newline at end of file diff --git a/squeaknode/hooks/pre-start b/squeaknode/hooks/pre-start new file mode 100755 index 0000000..7b79f76 --- /dev/null +++ b/squeaknode/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку Squeaknode до тех пор, пока скрытая служба Tor P2P не будет готова. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-p2p/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach web +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/squeaknode/sqk/.gitkeep b/squeaknode/sqk/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/squeaknode/torrc.template b/squeaknode/torrc.template new file mode 100644 index 0000000..a610e48 --- /dev/null +++ b/squeaknode/torrc.template @@ -0,0 +1,4 @@ +# Скрытый сервис Squeaknode p2p +HiddenServiceDir /data/app-$APP_ID-p2p +HiddenServicePort $APP_SQUEAKNODE_P2P_PORT squeaknode_web_1:$APP_SQUEAKNODE_P2P_PORT +HiddenServicePort $APP_SQUEAKNODE_P2P_TESTNET_PORT squeaknode_web_1:$APP_SQUEAKNODE_P2P_TESTNET_PORT \ No newline at end of file diff --git a/squeakroad/data/.gitkeep b/squeakroad/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/squeakroad/dfwebos-app.yml b/squeakroad/dfwebos-app.yml new file mode 100644 index 0000000..54278e6 --- /dev/null +++ b/squeakroad/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: squeakroad +category: bitcoin +name: Squeak Road +version: "0.1.14-build-2" +tagline: Запустите свой собственный анонимный рынок +description: >- + Squeak Road позволяет вам управлять анонимным рынком, где каждый может купить или продать что угодно. + + Как администратор вашего рынка, вы можете выбирать, какие листинги разрешены, и настраивать + ставка комиссии, которая будет взиматься с продаж. + + Покупатели могут оставлять оценки для каждой завершенной продажи, и эти оценки используются для расчета баллов. + за каждый аккаунт продавца. + + Предупреждение. Это приложение предоставляет открытый ключ вашего узла Lightning. Будьте осторожны и не используйте какое-либо другое приложение или счет, который связывает ваш узел Lightning с вашей личностью или вашим местоположением. +developer: Jonathan Zernik +website: https://github.com/yzernik/squeakroad +dependencies: + - lightning +repo: https://github.com/yzernik/squeakroad +support: https://t.me/squeakroad +port: 18200 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "dfwebos" +deterministicPassword: true +releaseNotes: >- + — Лучше показывать сообщение об ошибке при неудачной проверке регистрации пользователя. + — Не извлекайте ресурсы шрифтов из удаленного CDN. +submitter: Jonathan Zernik +submission: https://github.com/getumbrel/dfwebos-apps/pull/70 \ No newline at end of file diff --git a/squeakroad/docker-compose.yml b/squeakroad/docker-compose.yml new file mode 100644 index 0000000..18d047c --- /dev/null +++ b/squeakroad/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: squeakroad_web_1 + APP_PORT: 18200 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/yzernik/squeakroad:v0.1.14@sha256:8530514170ce43f85020f10cf2143d49d24b0c57ecc137b879118a03789fde61 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - $APP_LIGHTNING_NODE_DATA_DIR:/lnd-dir:ro + - ${APP_DATA_DIR}/data:/data + environment: + ROCKET_PORT: 18200 + ROCKET_ADDRESS: 0.0.0.0 + SQUEAKROAD_DB_URL: /data/db.sqlite + SQUEAKROAD_ADMIN_USERNAME: dfwebos + SQUEAKROAD_ADMIN_PASSWORD: ${APP_PASSWORD} + SQUEAKROAD_LND_HOST: $APP_LIGHTNING_NODE_IP + SQUEAKROAD_LND_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + SQUEAKROAD_LND_TLS_CERT_PATH: /lnd-dir/tls.cert + SQUEAKROAD_LND_MACAROON_PATH: /lnd-dir/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon diff --git a/stalwart/data/.gitkeep b/stalwart/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/stalwart/dfwebos-app.yml b/stalwart/dfwebos-app.yml new file mode 100644 index 0000000..64c9cac --- /dev/null +++ b/stalwart/dfwebos-app.yml @@ -0,0 +1,70 @@ +manifestVersion: 1.1 +id: stalwart +name: Stalwart +tagline: Универсальный сервер для почты и совместной работы +category: files +version: "v0.15.5" +port: 8745 +description: >- + 📧 Stalwart — это быстрый, безопасный и масштабируемый сервер с открытым исходным кодом для электронной почты, календарей, контактов и обмена файлами, встроенный в Rust для обеспечения высочайшего уровня производительности и безопасности. + + + Универсальная коммуникационная платформа + - Полная поддержка протоколов электронной почты: JMAP, IMAP4, POP3 и SMTP с расширенными возможностями аутентификации, безопасности и фильтрации. + - Инструменты для совместной работы: календари CalDAV, контакты CardDAV, хранилище файлов WebDAV и обмен ими. + - Защита от спама и фишинга: фильтрация на основе ИИ, черные списки DNS, серые списки, отслеживание репутации отправителей и многое другое. + + + Мощные функции для любого масштаба + - Гибкие серверные хранилища: PostgreSQL, MySQL, SQLite, S3, Redis, ElasticSearch и другие. + - Встроенное шифрование, 2FA и автоматические сертификаты TLS. + - Отказоустойчивая, готовая к кластеризации конструкция с поддержкой Kubernetes и Docker. + - Богатая панель администратора, мониторинг в реальном времени и инструменты самообслуживания пользователей. + + + Независимо от того, используете ли вы небольшой частный сервер или крупное предприятие, Stalwart обеспечивает современную, безопасную и эффективную связь, которой вы можете доверять. + + + Это настроенные сопоставления внешних портов: + - **10443:443** (HTTPS) + - **10025:25** (SMTP) + - **10465:465** (СМТПС) + - **10587:587** (отправка SMTP) + - **10143:143** (IMAP) + - **10993:993** (IMAPS) + - **14190:4190** (Сито) + - **10110:110** (POP3) + - **10995:995** (POP3S) + + + Более подробную информацию о том, как правильно настроить экземпляр, можно найти здесь: https://stalw.art/docs/install/platform/docker/. +developer: Stalwart Labs +website: https://stalw.art/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/4112 +repo: https://github.com/stalwartlabs/stalwart +support: https://github.com/stalwartlabs/stalwart/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + ⚠️ Если вы обновляетесь с версии 0.14.x и ниже, эта версия включает в себя несколько критических изменений. Перед обновлением обязательно сделайте резервную копию: https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING/v0_15.md. + + + Исправления ошибок в этом выпуске: + - Исправлены проблемы с памятью при обработке циклических структур MIME в IMAP и JMAP. + - Исправлена индексация трассировки при использовании отдельных магазинов. + - Улучшена обработка изменений запросов JMAP и вычисление состояния. + - Исправлен JMAP для включения созданных идентификаторов при наличии свойства. + - Решен JMAP для учета аргументов запроса в Email/queryChanges. + - Исправлен возврат идентификатора изменения контейнера и предмета, когда изменений нет. + + + Полные примечания к выпуску можно найти по адресу https://github.com/stalwartlabs/stalwart/releases. +dependencies: [] +path: "" +deterministicPassword: true +defaultUsername: admin diff --git a/stalwart/docker-compose.yml b/stalwart/docker-compose.yml new file mode 100644 index 0000000..d4c5fea --- /dev/null +++ b/stalwart/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.9" + +services: + app_proxy: + environment: + APP_HOST: stalwart_server_1 + APP_PORT: 8080 + PROXY_AUTH_ADD: "false" + + server: + image: stalwartlabs/stalwart:v0.15.5@sha256:dcf575db2d53d9ef86d6ced8abe4ba491984659a0f8862cc6079ee7b41c3c568 + user: "1000:1000" + ports: + - 10443:443 # HTTPS + - 10025:25 # SMTP + - 10465:465 # SMTPS + - 10587:587 # SMTP Submission + - 10143:143 # IMAP + - 10993:993 # IMAPS + - 14190:4190 # Sieve + - 10110:110 # POP3 + - 10995:995 # POP3S + volumes: + - ${APP_DATA_DIR}/data:/opt/stalwart + restart: on-failure diff --git a/stalwart/hooks/post-start b/stalwart/hooks/post-start new file mode 100755 index 0000000..043f8af --- /dev/null +++ b/stalwart/hooks/post-start @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Этот скрипт адаптирует пароль по умолчанию Stalwart. + +APP_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" +APP_DATA_DIR="$APP_DIR/data" +CONFIG_FILE="$APP_DATA_DIR/etc/config.toml" + +# Файл Sentinel для проверки, был ли уже инициализирован администратор +ADMIN_SENTINEL="${APP_DATA_DIR}/.admin_created" + +# Максимальное количество попыток проверки файла конфигурации +MAX_RETRIES=10 +RETRY_DELAY=2 + +# Проверьте, инициализирован ли уже пароль администратора +check_already_processed() { + if [ -f "$ADMIN_SENTINEL" ]; then + echo "Admin already initialized. Skipping..." + exit 0 + fi +} + +# Подождите, пока файл конфигурации станет доступен с повторными попытками. +wait_for_config() { + local retries=0 + while [ $retries -lt $MAX_RETRIES ]; do + if [ -f "$CONFIG_FILE" ]; then + echo "Config file found at $CONFIG_FILE" + return 0 + fi + + retries=$((retries + 1)) + echo "Config file not found. Retry $retries/$MAX_RETRIES in ${RETRY_DELAY}s..." + sleep $RETRY_DELAY + done + + echo "Error: Config file not found at $CONFIG_FILE after $MAX_RETRIES attempts" + exit 1 +} + +# Замените секрет в файле конфигурации +update_secret() { + if [ -z "${APP_PASSWORD:-}" ]; then + echo "Error: APP_PASSWORD environment variable not set" + exit 1 + fi + + # Создайте новый секрет, используя ту же соль + NEW_SECRET=$(openssl passwd -6 -salt 8woP51TKJO.JKOp9 "${APP_PASSWORD}") + + # Проверьте, существует ли раздел Fallback-admin. + if ! grep -q "\[authentication.fallback-admin\]" "$CONFIG_FILE"; then + echo "Error: [authentication.fallback-admin] section not found in config file" + exit 1 + fi + + # Заменить секретное значение + sed -i.bak "/^\[authentication\.fallback-admin\]/,/^\[/s|^secret = .*|secret = \"$NEW_SECRET\"|" "$CONFIG_FILE" + + # Удалить файл резервной копии + rm -f "$CONFIG_FILE.bak" + + # Создайте дозорный файл, чтобы пометить администратора как инициализированного. + touch "$ADMIN_SENTINEL" + + echo "Successfully updated admin password in $CONFIG_FILE" + + echo "Restarting app to apply new password..." + "${DFWEBOS_ROOT}/scripts/app" restart "${APP_ID}" & +} + +# Основное исполнение +echo "Starting Stalwart post-start configuration..." + +# Проверьте, обработано ли оно уже +check_already_processed + +# Подождите файл конфигурации +wait_for_config + +# Обновить секрет +update_secret + +echo "Stalwart post-start configuration completed." diff --git a/stirling-pdf/data/configs/.gitkeep b/stirling-pdf/data/configs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/stirling-pdf/data/logs/.gitkeep b/stirling-pdf/data/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/stirling-pdf/data/pipeline/.gitkeep b/stirling-pdf/data/pipeline/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/stirling-pdf/data/tessdata/.gitkeep b/stirling-pdf/data/tessdata/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/stirling-pdf/dfwebos-app.yml b/stirling-pdf/dfwebos-app.yml new file mode 100644 index 0000000..0d42756 --- /dev/null +++ b/stirling-pdf/dfwebos-app.yml @@ -0,0 +1,71 @@ +manifestVersion: 1 +id: stirling-pdf +name: Stirling PDF +tagline: С легкостью объединяйте, разделяйте, вращайте и конвертируйте PDF-файлы. +category: files +version: "2.10.0" +port: 27829 +description: >- + Stirling PDF — это надежный локально размещенный веб-инструмент для манипуляции PDF, который предлагает полный набор функций для решения + все ваши требования PDF. Он позволяет выполнять различные операции с файлами PDF, включая разделение, слияние, преобразование, + реорганизация, добавление изображений, вращение, сжатие и многое другое. Все операции выполняются локально, обеспечивая максимальную конфиденциальность. + и безопасность ваших файлов. + + + ⚠️ Примечание + + После установки запуск Stirling PDF занимает несколько минут. Пожалуйста, наберитесь терпения и подождите, пока приложение загрузит пакеты и шрифты. + + + 📄 Операции со страницами + + Stirling PDF предоставляет полный интерактивный графический интерфейс для объединения, разделения, поворота и перемещения PDF-файлов и их страниц. Вы можете просмотреть и + изменяйте многостраничные PDF-файлы с помощью настраиваемых параметров просмотра, сортировки и поиска. Функции редактирования на странице, такие как аннотации, рисование и + добавление текста и изображений также доступно. Вы также можете реорганизовать страницы PDF в разном порядке, повернуть PDF-файлы на 90 градусов. + приращения и удаления страниц. + + + 🔄️ Конверсионные операции + + Конвертируйте PDF-файлы в изображения и обратно, конвертируйте любой обычный файл в PDF и конвертируйте PDF в Word, PowerPoint и другие форматы. Вы можете + также конвертируйте HTML, URL-адреса и Markdown в PDF. + + + 🛡️ Безопасность и разрешения + + Добавляйте и удаляйте пароли, изменяйте или устанавливайте разрешения PDF, добавляйте водяные знаки, сертифицируйте или подписывайте PDF-файлы, очищайте PDF-файлы и автоматически редактируйте текст. + для повышения безопасности. + + + 🛠️Другие операции: + + Добавляйте, создавайте или записывайте подписи, восстанавливайте PDF-файлы, обнаруживайте и удаляйте пустые страницы, сравнивайте два PDF-файла и показывайте различия в тексте, добавляйте + изображения в PDF-файлы, сжимать PDF-файлы для уменьшения их размера, извлекать изображения из PDF, добавлять номера страниц, выполнять распознавание текста на PDF, конвертировать PDF/A, + редактируйте метаданные, выравнивайте PDF-файлы и получайте всю информацию о PDF для просмотра или экспорта как JSON. +developer: Stirling Tools +website: https://stirlingtools.com/ +submitter: Sharknoon +submission: https://github.com/getumbrel/dfwebos-apps/pull/1111 +repo: https://github.com/Stirling-Tools/Stirling-PDF +support: https://github.com/Stirling-Tools/Stirling-PDF/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Этот выпуск включает в себя новые функции и исправления ошибок: + - Установите вид при запуске по умолчанию и настройки масштабирования Reader для рабочего стола. + - Новый режим сравнения пикселей в инструменте сравнения PDF для выявления различий в форматировании. + - Повышена эффективность использования памяти для вызовов API. + - Более быстрый и надежный рендеринг миниатюр. + - При нажатии на аннотации комментариев теперь открывается боковая панель комментариев. + - Исправлены проблемы с общим доступом к файлам для пользователей SSO. + - Исправлено зашифрованное модальное окно PDF, работающее некорректно. + - Исправлено использование QR-кода на рабочем столе. + - Исправлено зависание заполнения формы при выравнивании с пустыми значениями. + - Исправлена ошибка перевода края. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Stirling-Tools/Stirling-PDF/releases. +dependencies: [] +path: "" diff --git a/stirling-pdf/docker-compose.yml b/stirling-pdf/docker-compose.yml new file mode 100644 index 0000000..875f355 --- /dev/null +++ b/stirling-pdf/docker-compose.yml @@ -0,0 +1,26 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: stirling-pdf_app_1 + APP_PORT: 8080 + PROXY_AUTH_WHITELIST: "/api/*" + app: + image: stirlingtools/stirling-pdf:2.10.0@sha256:4d9abedcd57a9aa4d36ffb8fc9a4801aea2d295bf6ad349e23dd4b45661a5e42 + # Stirling PDF не работает с пользовательским пользователем + #user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + # Требуется для дополнительных языков OCR. + - ${APP_DATA_DIR}/data/tessdata:/usr/share/tessdata + - ${APP_DATA_DIR}/data/configs:/configs + - ${APP_DATA_DIR}/data/logs:/logs + - ${APP_DATA_DIR}/data/pipeline:/pipeline + environment: + # Не требуется, поскольку DFWebOS аутентифицирует пользователя. + DOCKER_ENABLE_SECURITY: "false" + INSTALL_BOOK_AND_ADVANCED_HTML_OPS: "true" + LANGS: ALL + SECURITY_ENABLELOGIN: "false" diff --git a/strix/dfwebos-app.yml b/strix/dfwebos-app.yml new file mode 100644 index 0000000..7ff8302 --- /dev/null +++ b/strix/dfwebos-app.yml @@ -0,0 +1,32 @@ +manifestVersion: 1 +id: strix +category: automation +name: Strix +version: "2.1.0" +tagline: Инструмент обнаружения потоков IP-камер для Frigate +description: >- + Поиск рабочих потоков для ваших камер. Большинство IP-камер, особенно китайские NVR и бюджетные модели, поставляются без документации. Никаких URL-адресов RTSP, никаких спецификаций протоколов, никакого способа подключить их к Frigate. Strix решает эту проблему, сопоставляя вашу камеру с базой данных, содержащей более 100 000 шаблонов URL-адресов для 67 000 моделей, тестируя их и возвращая только рабочие потоки. + + + Введите IP-адрес вашей камеры, модель, имя пользователя и пароль. Strix проверяет все соответствующие шаблоны URL-адресов и предоставляет вам рабочие потоки за считанные секунды. + + + Затем вставьте существующий frgate.yml — даже с 500 камерами — и Strix добавит камеру 501 с основным и дополнительным потоком через go2rtc, ничего не нарушая. Работает с камерами, которые не поддерживают RTSP или ONVIF — находит BUBBLE, MJPEG, JPEG, HTTP-FLV и многие другие протоколы, которые постоянно добавляются. +developer: eduard256 +website: https://github.com/eduard256/Strix +repo: https://github.com/eduard256/Strix +support: https://github.com/eduard256/Strix/issues +port: 4567 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: "" +path: "" +defaultUsername: "" +defaultPassword: "" +dependencies: [] +submitter: eduard256 +submission: https://github.com/getumbrel/dfwebos-apps/pull/5114 diff --git a/strix/docker-compose.yml b/strix/docker-compose.yml new file mode 100644 index 0000000..ac876ad --- /dev/null +++ b/strix/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: strix_web_1 + APP_PORT: 4567 + + web: + image: eduard256/strix:2.1.0@sha256:d34883001c2acf812446863281fe17a411cb16696f070d3fe4ae24b0be177ee5 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m diff --git a/super-productivity/dfwebos-app.yml b/super-productivity/dfwebos-app.yml new file mode 100644 index 0000000..5e1e0e1 --- /dev/null +++ b/super-productivity/dfwebos-app.yml @@ -0,0 +1,73 @@ +manifestVersion: 1 +id: super-productivity +name: Super Productivity +tagline: Эффективный способ управлять задачами, временем и проектами в одном месте. +category: files +version: "18.3.0" +port: 8020 +description: >- + ⚠️ По умолчанию Super Productivity сохраняет ваши данные (например, задачи и настройки) в браузере на устройстве, которое вы используете для доступа к ним. + Это означает, что ваши данные остаются привязанными к этому браузеру и устройству, они не будут автоматически синхронизироваться где-либо еще и могут быть потеряны, если вы очистите данные браузера или используете другое устройство. + + + ⚙️ Чтобы сохранить и синхронизировать данные на разных устройствах, вы можете перейти к настройкам приложения и подключиться к Dropbox или пользовательскому серверу WebDAV, например Nextcloud. + + + Super Productivity — это комплексное приложение для повышения производительности с открытым исходным кодом, созданное для того, чтобы помочь отдельным людям и командам с легкостью организовать свою работу. Этот инструмент идеально подходит для разработчиков, менеджеров проектов, фрилансеров и всех, кто ищет оптимизированный подход к управлению задачами и временем. Он сочетает в себе основные функции в одной интуитивно понятной платформе. + + + Благодаря Super Productivity пользователи могут создавать подробные списки дел, управлять задачами в проектах и ​​эффективно отслеживать прогресс. Вы можете легко расставлять приоритеты задач, устанавливать сроки и отслеживать свою продуктивность с помощью встроенных функций отслеживания времени. Независимо от того, работаете ли вы над одним проектом или совмещаете несколько задач, это приложение позволяет вам оставаться организованным и быть в курсе своей работы. + + + Ключевые особенности включают в себя: + + + 📅 Управление задачами и проектами: создавайте, организуйте и расставляйте приоритеты задач. Группируйте их в проекты, назначайте сроки выполнения и отслеживайте статус завершения. + + + 🕒 Учет времени: записывайте рабочее время прямо в приложении, чтобы получить представление о том, как расходуется ваше время. Вы также можете отслеживать свою продуктивность с помощью таймера Pomodoro или ввода времени вручную. + + + 🔗 Super Productivity интегрируется с такими популярными инструментами, как Jira, GitHub и GitLab, поэтому вы можете импортировать задачи и управлять ими, не выходя из рабочего процесса. + + + 📊 Отчеты и аналитика: создавайте отчеты о времени, чтобы проанализировать, сколько времени вы потратили на задачи и проекты, что поможет вам принимать решения на основе данных о своих рабочих привычках. + + 📴 Автономный режим: приложение работает в автономном режиме, то есть вы можете продолжать управлять своими задачами и отслеживать время даже без подключения к Интернету. + + + 🛡️ Конфиденциальность и безопасность данных. Будучи приложением с открытым исходным кодом, Super Productivity гарантирует, что ваши данные остаются конфиденциальными и хранятся локально, обеспечивая безопасное и настраиваемое решение для ваших потребностей в производительности. + + + Super Productivity предназначен для тех, кто хочет повысить свою производительность, сохраняя при этом контроль над своими данными. Он идеально подходит для людей, которые предпочитают простой, но мощный инструмент, а также для команд, которым необходимо эффективное управление задачами и проектами, не полагаясь на сложное программное обеспечение. Super Productivity, доступный для Windows, macOS, Linux и в виде веб-приложения, представляет собой универсальный инструмент, который вписывается в ваш рабочий процесс независимо от того, работаете ли вы в одиночку или сотрудничаете с другими. +developer: Johannes Schickling +website: https://super-productivity.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/1812 +repo: https://github.com/johannesjo/super-productivity +support: https://github.com/johannesjo/super-productivity/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Некоторые из ключевых моментов этого выпуска включают в себя: + - Добавлены параметры сортировки на турецком языке и сообщения об ошибках. + - В плагины сообщества добавлена Super Productivity MCP. + - Добавлена поддержка отображения режима цикла, когда интервал равен единице. + - Добавлена опция «Включить запросы на включение» в поставщик задач GitHub. + - Добавлена поддержка обнаружения простоя Wayland через бэкэнд ext-idle-notify. + - Добавлен reInitData API для плагинов. + - Исправлен заголовок вложения, используемый в качестве имени задачи при вставке простого URL-адреса. + - Исправлен текст Календаря Google, выходящий за фон. + - Исправлены URL-адреса плагина AutoPlan, обновленные до Codeberg. + - Исправлены сопоставления полей поставщика проблем для правильной передачи номера проблемы в контексте плагина. + — Уменьшено перекрытие между панелью сведений о задаче и контекстным меню. + + + Полные примечания к выпуску можно найти по адресу https://github.com/johannesjo/super-productivity/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/super-productivity/docker-compose.yml b/super-productivity/docker-compose.yml new file mode 100644 index 0000000..a0144c6 --- /dev/null +++ b/super-productivity/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: super-productivity_web_1 + APP_PORT: 80 + + web: + image: johannesjo/super-productivity:v18.3.0@sha256:4b84c54a4b1221712896fdcf67fcbdd3b3118c972a45f57e11b0fd2a2164d1d2 + restart: on-failure diff --git a/sure/data/postgres/.gitkeep b/sure/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/sure/data/rails/.gitkeep b/sure/data/rails/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/sure/data/redis/.gitkeep b/sure/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/sure/dfwebos-app.yml b/sure/dfwebos-app.yml new file mode 100644 index 0000000..e957e4d --- /dev/null +++ b/sure/dfwebos-app.yml @@ -0,0 +1,38 @@ +manifestVersion: 1 +id: sure +name: Sure +tagline: Приложение для личных финансов для всех +category: finance +version: "0.6.9" +description: >- + Получите полный контроль над своими деньгами с помощью Sure, универсального приложения для личных финансов, созданного для любого этапа жизни. Свяжите свои банковские счета, акции, криптовалюту и кредитные карты из более чем 10 000 учреждений или добавьте их вручную с помощью импорта CSV. Все визуализируется в одном месте, поэтому вы всегда точно знаете, где находитесь. + + + Управление транзакциями никогда не было таким простым. Создавайте и редактируйте доходы, расходы и переводы с помощью пользовательских категорий, продавцов и тегов. Настройте правила автоматизации для автоматической классификации расходов и используйте мощные фильтры, чтобы за считанные секунды найти именно то, что вам нужно. + + + Бюджетирование простое и гибкое. Устанавливайте лимиты расходов по категориям, отслеживайте излишки, сравнивайте тенденции с течением времени и используйте разумное распределение, чтобы каждый месяц принимать более разумные финансовые решения. + + + Sure также поставляется со встроенным помощником ИИ, который может анализировать ваши финансы, прогнозировать тенденции, определять структуру расходов и быстро отвечать на любые вопросы о ваших деньгах. + + + Sure создан на основе радикальной прозрачности и имеет полностью открытый исходный код. Вы можете просмотреть код, внести свой вклад в его разработку или даже разместить его самостоятельно для полного контроля. Ваши данные защищены надежным шифрованием и безопасной аутентификацией, поскольку ваша финансовая конфиденциальность имеет значение. +developer: Sure Finances +website: https://sure.am +repo: https://github.com/we-promise/sure +support: https://github.com/we-promise/sure/discussions +submitter: cergmin +submission: https://github.com/getumbrel/dfwebos-apps/pull/4559 +dependencies: [] +port: 3064 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: "" +path: "" +defaultUsername: "" +defaultPassword: "" +backupIgnore: + - data/redis/* diff --git a/sure/docker-compose.yml b/sure/docker-compose.yml new file mode 100644 index 0000000..e57027f --- /dev/null +++ b/sure/docker-compose.yml @@ -0,0 +1,85 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: sure_web_1 + APP_PORT: 3000 + + web: + image: ghcr.io/we-promise/sure:0.6.9@sha256:3d899b3eced520d8d3166a3d53184cbb1356670fb52d050f94f8e62e59754d70 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/rails:/rails/storage + restart: on-failure + environment: + POSTGRES_USER: sure_user + POSTGRES_PASSWORD: sure_password + POSTGRES_DB: sure_production + SECRET_KEY_BASE: $APP_SEED + SELF_HOSTED: "true" + RAILS_FORCE_SSL: "false" + RAILS_ASSUME_SSL: "false" + DB_HOST: sure_db_1 + DB_PORT: 5432 + REDIS_URL: redis://sure_redis_1:6379/1 + depends_on: + db: + condition: service_healthy + redis: + condition: service_healthy + + worker: + image: ghcr.io/we-promise/sure:0.6.9@sha256:3d899b3eced520d8d3166a3d53184cbb1356670fb52d050f94f8e62e59754d70 + user: "1000:1000" + command: bundle exec sidekiq + volumes: + - ${APP_DATA_DIR}/data/rails:/rails/storage + restart: on-failure + depends_on: + db: + condition: service_healthy + redis: + condition: service_healthy + environment: + POSTGRES_USER: sure_user + POSTGRES_PASSWORD: sure_password + POSTGRES_DB: sure_production + SECRET_KEY_BASE: $APP_SEED + SELF_HOSTED: "true" + RAILS_FORCE_SSL: "false" + RAILS_ASSUME_SSL: "false" + DB_HOST: sure_db_1 + DB_PORT: 5432 + REDIS_URL: redis://sure_redis_1:6379/1 + + db: + image: postgres:18.3-alpine@sha256:52098013b4b64a746626437d38afc03cabff6cdeb4d3d92e2342aa95f0ce56ea + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/postgres:/data + environment: + POSTGRES_USER: sure_user + POSTGRES_PASSWORD: sure_password + POSTGRES_DB: sure_production + PGDATA: /data/pgdata + healthcheck: + test: "pg_isready -U sure_user -h localhost -d sure_production" + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + + redis: + image: redis:8.4.2@sha256:4b0ab81cf4d84e610215d0159dcc218d4ec6180f869a9bc83c33a1945d6f3e42 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data + healthcheck: + test: redis-cli ping + interval: 5s + timeout: 5s + retries: 5 + start_period: 30s diff --git a/suredbits-wallet/data/log/.gitkeep b/suredbits-wallet/data/log/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/suredbits-wallet/data/wallet/.gitkeep b/suredbits-wallet/data/wallet/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/suredbits-wallet/dfwebos-app.yml b/suredbits-wallet/dfwebos-app.yml new file mode 100644 index 0000000..4f4e888 --- /dev/null +++ b/suredbits-wallet/dfwebos-app.yml @@ -0,0 +1,33 @@ +manifestVersion: 1.1 +id: suredbits-wallet +category: bitcoin +name: Suredbits Wallet +version: "1.9.7" +tagline: Универсальный кошелек DLC. +description: >- + Кошелек Suredbits — это универсальный магазин для создания Discreet + Журнал контрактов. С нашим кошельком вы можете делать ставки, такие как Трамп против Байдена. + президентские выборы в США 2020 года или сложные производные финансовые инструменты, такие как + контракты на разницу, которые можно использовать для хеджирования рисков или участия в + спекуляция. + + + ВНИМАНИЕ: это альфа-программа, не вкладывайте слишком много денег. +releaseNotes: > + - Исправлена ​​ошибка, из-за которой мы неправильно классифицировали DLC по версии протокола. +developer: Suredbits +website: https://suredbits.com +dependencies: + - bitcoin +repo: https://github.com/bitcoin-s/bitcoin-s +support: https://t.me/suredbits +port: 3020 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +submitter: Suredbits +submission: https://github.com/getumbrel/umbrel/pull/1147 diff --git a/suredbits-wallet/docker-compose.yml b/suredbits-wallet/docker-compose.yml new file mode 100644 index 0000000..c695f80 --- /dev/null +++ b/suredbits-wallet/docker-compose.yml @@ -0,0 +1,64 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: suredbits-wallet_web_1 + APP_PORT: 3002 + + web: + image: bitcoinscala/wallet-server-ui:1.9.7@sha256:50da55b6d607d03775041aa2c056c5fe281a33f0e471d58e07a99dd2670718e3 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/wallet:/bitcoin-s + - ${APP_DATA_DIR}/data/log:/log + environment: + LOG_PATH: "/log/" + BITCOIN_S_HOME: "/bitcoin-s/" + #MEMPOOL_API_URL: "http://dfwebos.local:${APP_MEMPOOL_PORT}/api" + WALLET_SERVER_API_URL: "http://suredbits-wallet_walletserver_1:9999/" + WALLET_SERVER_WS: "ws://suredbits-wallet_walletserver_1:19999/events" + TOR_PROXY: socks5://${TOR_PROXY_IP}:${TOR_PROXY_PORT} + DEFAULT_UI_PASSWORD: "none" + BITCOIN_S_SERVER_RPC_PASSWORD: $APP_PASSWORD + depends_on: + - walletserver + + walletserver: + image: bitcoinscala/bitcoin-s-server:1.9.7@sha256:cee2c4682d6172d6af2f0edfae016e3cc7aacc15ba56eb0652d9d65d31e7baf3 + entrypoint: ["/opt/docker/bin/bitcoin-s-server", "--datadir", "/bitcoin-s", "--conf", "/opt/docker/docker-application.conf"] + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/wallet:/bitcoin-s + environment: + BITCOIN_S_NODE_MODE: "bitcoind" + BITCOIN_S_NETWORK: $APP_BITCOIN_NETWORK + BITCOIN_S_KEYMANAGER_ENTROPY: $APP_SEED + BITCOIN_S_PROXY_ENABLED: "false" + BITCOIN_S_TOR_ENABLED: "false" + BITCOIN_S_TOR_PROVIDED: "true" + BITCOIN_S_DLCNODE_PROXY_ENABLED: "true" + BITCOIN_S_DLCNODE_PROXY_SOCKS5: "${TOR_PROXY_IP}:${TOR_PROXY_PORT}" + BITCOIN_S_DLCNODE_EXTERNAL_IP: $APP_SUREDBITS_WALLET_P2P_HIDDEN_SERVICE + BITCOIN_S_BITCOIND_HOST: $APP_BITCOIN_NODE_IP + BITCOIN_S_BITCOIND_PORT: $APP_BITCOIN_RPC_PORT + BITCOIN_S_BITCOIND_USER: $APP_BITCOIN_RPC_USER + BITCOIN_S_BITCOIND_PASSWORD: $APP_BITCOIN_RPC_PASS + BITCOIN_S_SERVER_RPC_PASSWORD: $APP_PASSWORD + JAVA_OPTS: "-Xmx756m" + DISABLE_JLINK: "1" + ports: + - "$APP_SUREDBITS_WALLET_P2P_PORT:$APP_SUREDBITS_WALLET_P2P_PORT" + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/suredbits-wallet/exports.sh b/suredbits-wallet/exports.sh new file mode 100644 index 0000000..4074875 --- /dev/null +++ b/suredbits-wallet/exports.sh @@ -0,0 +1,4 @@ +export APP_SUREDBITS_WALLET_P2P_PORT="2862" + +suredbits_wallet_p2p_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-p2p/hostname" +export APP_SUREDBITS_WALLET_P2P_HIDDEN_SERVICE="$(cat "${suredbits_wallet_p2p_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")" \ No newline at end of file diff --git a/suredbits-wallet/hooks/pre-start b/suredbits-wallet/hooks/pre-start new file mode 100755 index 0000000..b3250f6 --- /dev/null +++ b/suredbits-wallet/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Отложите загрузку кошелька Suredbits до тех пор, пока скрытая служба Tor P2P не будет готова. + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-p2p/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach walletserver +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/suredbits-wallet/torrc.template b/suredbits-wallet/torrc.template new file mode 100644 index 0000000..05c2334 --- /dev/null +++ b/suredbits-wallet/torrc.template @@ -0,0 +1,3 @@ +# Suredbits-кошелек P2P Скрытая служба +HiddenServiceDir /data/app-$APP_ID-p2p +HiddenServicePort $APP_SUREDBITS_WALLET_P2P_PORT suredbits-wallet_walletserver_1:$APP_SUREDBITS_WALLET_P2P_PORT \ No newline at end of file diff --git a/swingmusic/data/config/.gitkeep b/swingmusic/data/config/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/swingmusic/data/config/.gitkeep @@ -0,0 +1 @@ + diff --git a/swingmusic/data/music/.gitkeep b/swingmusic/data/music/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/swingmusic/data/music/.gitkeep @@ -0,0 +1 @@ + diff --git a/swingmusic/dfwebos-app.yml b/swingmusic/dfwebos-app.yml new file mode 100644 index 0000000..bb8180f --- /dev/null +++ b/swingmusic/dfwebos-app.yml @@ -0,0 +1,44 @@ +manifestVersion: 1 +id: swingmusic +name: Swing Music +tagline: Самостоятельная потоковая передача музыки +category: media +version: "2.1.4" +port: 1970 +description: >- + 🎵 Swing Music — это самостоятельное приложение для потоковой передачи музыки — современное, чистое и мощное. + + Он позволяет вам создать свой собственный частный сервис, подобный Spotify, дома. + + + 🧑‍💻 Создано с учетом конфиденциальности. + + + Swing Music сохраняет ваши данные локально. Разместите свою музыкальную библиотеку, транслируйте ее из любого браузера и наслаждайтесь полным контролем. +developer: Mungai Njoroge +website: https://github.com/swing-opensource/swingmusic +submitter: panie18 +submission: https://github.com/getumbrel/dfwebos-apps/pull/3412 +repo: https://github.com/swing-opensource/swingmusic +support: https://github.com/swing-opensource/swingmusic/issues +defaultUsername: "admin" +defaultPassword: "admin" +dependencies: [] +releaseNotes: >- + 🚨 В этом выпуске исправлена ​​критическая уязвимость безопасности (обход пути на конечной точке браузера каталогов). Если вы используете более старую версию, немедленно обновите ее, особенно если ваш сервер подключен к Интернету. + + + Что нового в этом выпуске: + - Исправлена ошибка, из-за которой скробблы Last.fm сохранялись не для того пользователя. + - Исправлен сбой при попытке отключить роль администратора. + - Исправлен сбой Windows при запуске. + - Обновлен разделенный список игнорирования исполнителей по умолчанию. + - Альбомы, заканчивающиеся на «альбом», теперь классифицируются как саундтреки. + + + Полные примечания к выпуску можно найти по адресу https://github.com/swing-opensource/swingmusic/releases. +path: "/" +gallery: + - 1.jpg + - 2.jpg + - 3.jpg diff --git a/swingmusic/docker-compose.yml b/swingmusic/docker-compose.yml new file mode 100644 index 0000000..9d06068 --- /dev/null +++ b/swingmusic/docker-compose.yml @@ -0,0 +1,19 @@ +version: "3.9" + +services: + app_proxy: + environment: + APP_HOST: swingmusic_app_1 + APP_PORT: 1970 + PROXY_AUTH_ADD: "false" + + app: + image: ghcr.io/swingmx/swingmusic:v2.1.4@sha256:89009c016848946c35418eb8459fee9eba044fb3a4cd6808160a510ecb8b22f6 + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${APP_DATA_DIR}/data/music:/music:rw + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads diff --git a/synapse/data/synapse/.gitkeep b/synapse/data/synapse/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/synapse/dfwebos-app.yml b/synapse/dfwebos-app.yml new file mode 100644 index 0000000..b4b4dcd --- /dev/null +++ b/synapse/dfwebos-app.yml @@ -0,0 +1,54 @@ +manifestVersion: 1.1 +id: synapse +category: social +name: Synapse +version: "1.151.0" +tagline: Домашний сервер матрицы +description: >- + Synapse — это реализация домашнего сервера Matrix с открытым исходным кодом, написанная и поддерживаемая Element. Matrix — это открытый стандарт для безопасной и совместимой связи в реальном времени. + + + 💡 Как это работает + + + Чтобы общаться с помощью Matrix, вам понадобится клиент. Список популярных клиентов вы можете найти здесь: https://matrix.org/ecosystem/clients/ + + + В Matrix каждый пользователь управляет одним или несколькими клиентами Matrix, которые подключаются к домашнему серверу Matrix. Домашний сервер хранит всю личную историю чатов и информацию об учетных записях пользователей, подобно тому, как почтовый клиент подключается к серверу IMAP/SMTP. + Как и в случае с электронной почтой, вы можете либо запустить собственный домашний сервер Matrix, чтобы контролировать и владеть своими сообщениями и историей, либо использовать размещенный сервер (например, Matrix.org). У Matrix нет единой точки контроля или обязательного поставщика услуг, в отличие от WhatsApp, Facebook, Hangouts и т. д. + + + 🛠️ Подключение клиента + + + Для начала установите приложение «Элемент» на свой DFWebOS или любой другой клиент Matrix на устройство по вашему выбору. Когда вы регистрируетесь или входите в систему через клиент, вам нужно будет изменить адрес домашнего сервера, на который вы входите, со значения по умолчанию Matrix.org на http://dfwebos.local:8008 для локального доступа. + + + Для бесперебойного подключения, даже если ваш клиент не подключен к той же сети, что и ваш DFWebOS, просто установите приложение Tailscale на свой DFWebOS и свое клиентское устройство и используйте http://dfwebos:8008 в качестве адреса вашего сервера. +developer: Element +website: https://element-hq.github.io/synapse/latest/ +dependencies: [] +repo: https://github.com/element-hq/synapse +support: https://github.com/element-hq/synapse/issues +port: 8008 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/c9f0975e766e79d4bd6adf4255cd081f54d654cb +releaseNotes: >- + Основные моменты этого выпуска: + - Добавлена стабильная поддержка серверов политики (MSC4284). + - Добавлена стабильная поддержка получения общих комнат с другим пользователем. + - Добавлена возможность использовать HTTP/2 вместо открытого текста при подключении к службе аутентификации Matrix. + - Исправлены сбои синхронизации, которые могли возникнуть для комнат, версия которых отсутствовала в базе данных. + - Исправлены API-интерфейсы администратора карантинных носителей, которые иногда возвращали неточные значения для удаленных носителей. + - Исправлена ошибка, из-за которой Synapse не запускался при сбое обнаружения провайдера OpenID Connect. + + + Полные примечания к выпуску можно найти по адресу https://github.com/element-hq/synapse/releases. \ No newline at end of file diff --git a/synapse/docker-compose.yml b/synapse/docker-compose.yml new file mode 100644 index 0000000..183354a --- /dev/null +++ b/synapse/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: synapse_server_1 + APP_PORT: $APP_SYNAPSE_PORT + PROXY_AUTH_ADD: "false" + + server: + image: matrixdotorg/synapse:v1.151.0@sha256:184dc8757daef019b511e7f96fc6e5edfb880fd074d8cf702c7e3aa899d188c8 + restart: on-failure + stop_grace_period: 1m + entrypoint: "bash" + command: "-c './start.py generate && ./start.py migrate_config && echo -e \"\nenable_registration_without_verification: true\" >> /data/homeserver.yaml && exec ./start.py'" + volumes: + - ${APP_DATA_DIR}/data/synapse:/data + environment: + UID: "1000" + GID: "1000" + SYNAPSE_HTTP_PORT: "${APP_SYNAPSE_PORT}" + SYNAPSE_SERVER_NAME: "${APP_HIDDEN_SERVICE}" + SYNAPSE_REPORT_STATS: "yes" + SYNAPSE_ENABLE_REGISTRATION: "yes" + SYNAPSE_NO_TLS: "yes" diff --git a/synapse/exports.sh b/synapse/exports.sh new file mode 100644 index 0000000..8007a03 --- /dev/null +++ b/synapse/exports.sh @@ -0,0 +1,2 @@ +export APP_SYNAPSE_PORT="8008" +export APP_SYNAPSE_TOR_HS_EXTRA_PORTS="${APP_SYNAPSE_PORT}:synapse_server_1:${APP_SYNAPSE_PORT}" \ No newline at end of file diff --git a/syncthing/data/.gitkeep b/syncthing/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/syncthing/dfwebos-app.yml b/syncthing/dfwebos-app.yml new file mode 100644 index 0000000..497e58d --- /dev/null +++ b/syncthing/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1 +id: syncthing +category: files +name: Syncthing +version: "2.0.16" +tagline: Одноранговая синхронизация файлов между вашими устройствами +description: >- + Syncthing — это одноранговая непрерывная синхронизация файлов. + программа. Он синхронизирует файлы между двумя или более компьютерами в режиме реального времени. + надежно защищен от посторонних глаз. Ваши данные — это только ваши данные, и вы + заслуживают выбора, где они будут храниться, будут ли они переданы третьим лицам. + вечеринке и о том, как она передается через Интернет. + + + Установите приложение Syncthing на свой DFWebOS и соедините его с приложением Syncthing на своем телефоне или компьютере, чтобы получить самостоятельное решение для однорангового резервного копирования. +developer: The Syncthing Foundation +website: https://syncthing.net +dependencies: [] +repo: https://github.com/syncthing/syncthing +support: https://forum.syncthing.net +port: 8384 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +releaseNotes: >- + Этот выпуск включает в себя несколько исправлений и улучшений: + - Исправлена обработка протокола путем проверки длины сжатого сообщения перед распаковкой. + - Исправлена служба systemd для поддержки переопределения владения синхронизацией. + - Исправлена песочница systemd для восстановления отсутствующих системных вызовов, связанных с chown. + - Повышена надежность соединения за счет использования одинакового интервала повторного подключения для QUIC и TCP. + - Улучшена производительность SQLite за счет уменьшения максимального числа открытых соединений и сохранения их открытыми постоянно. + + + Полные примечания к выпуску можно найти по адресу https://github.com/syncthing/syncthing/releases. +submitter: Sam Cymbaluk +submission: https://github.com/getumbrel/umbrel/pull/1092 diff --git a/syncthing/docker-compose.yml b/syncthing/docker-compose.yml new file mode 100644 index 0000000..ae18dfb --- /dev/null +++ b/syncthing/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: syncthing_server_1 + APP_PORT: 8384 + + server: + image: syncthing/syncthing:2.0.16@sha256:4a961394ca471f4e48f31ad2cef50697e502c8799e2e98477a1c3844e0c5bc54 + restart: on-failure + stop_grace_period: 1m + hostname: dfwebos + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data:/var/syncthing + ports: + - 22000:22000/tcp + - 22000:22000/udp diff --git a/tailscale/data/.gitkeep b/tailscale/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tailscale/dfwebos-app.yml b/tailscale/dfwebos-app.yml new file mode 100644 index 0000000..db039fa --- /dev/null +++ b/tailscale/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1 +id: tailscale +category: networking +name: Tailscale +version: "v1.96.5" +tagline: Нулевая настройка VPN для доступа к вашему DFWebOS из любого места +description: >- + Tailscale — это VPN без настройки, который создает безопасную сеть между + вашим DFWebOS и другими вашими устройствами. Даже если они разделены межсетевыми экранами или + подсети, Tailscale просто работает. + + + Tailscale назначит вашему DFWebOS стабильный IP-адрес и автоматически назначенный домен, который останется неизменным независимо от того, к какой сети подключен ваш DFWebOS. Это как локальная сеть, которая работает везде. + + + Tailscale опирается на протокол шифрования Noise WireGuard®, проверенный и заслуживающий доверия стандарт. +developer: Tailscale Inc. +website: https://tailscale.com +dependencies: [] +repo: https://github.com/tailscale/tailscale +support: https://tailscale.com/contact/support +port: 8240 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/pull/1248 +releaseNotes: >- + Этот выпуск включает исправления ошибок и улучшения. + + + Полные примечания к выпуску доступны по адресу https://tailscale.com/changelog#service. \ No newline at end of file diff --git a/tailscale/docker-compose.yml b/tailscale/docker-compose.yml new file mode 100644 index 0000000..9aa3f50 --- /dev/null +++ b/tailscale/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.7" + +services: + web: + network_mode: "host" # TODO: We can remove this later with some iptables magic + image: tailscale/tailscale:v1.96.5@sha256:dbeff02d2337344b351afac203427218c4d0a06c43fc10a865184063498472a6 + restart: on-failure + stop_grace_period: 1m + command: "sh -c 'tailscale web --listen 0.0.0.0:8240 & exec tailscaled --tun=userspace-networking'" + volumes: + - ${APP_DATA_DIR}/data:/var/lib diff --git a/tailscale/exports.sh b/tailscale/exports.sh new file mode 100644 index 0000000..dd27d3d --- /dev/null +++ b/tailscale/exports.sh @@ -0,0 +1,18 @@ +# Обнаружить, что мы выполняем установку Tailscale +if ! cat "${DFWEBOS_ROOT}/db/user.json" | grep --quiet '"tailscale"' +then + + # Исправляйте только немодифицированный сценарий приложения версии 0.5.0, чтобы предотвратить бесконечный цикл или внесение странных изменений в будущие сценарии приложения. + if sha256sum "${DFWEBOS_ROOT}/scripts/app" | grep '43d41ead6963780289e381a172ea346603e36ae650f9e5c878e93aa5c1f78e15\|1620d0e2cfd9cb70e300e28cd3c93a03c00ee65175fe0281a71f62793cc05e19' + then + echo "Detected Tailscale install, we need to patch the install script so this doesn't fail!" + + echo "Patching app script..." + sed -i 's/^ wait_for_tor_hs/ [[ "${app}" != "tailscale" ]] \&\& wait_for_tor_hs/g' "${DFWEBOS_ROOT}/scripts/app" + + echo "Attempting new install after patch" + "${DFWEBOS_ROOT}/scripts/app" install tailscale + + exit # this kills the original install script process + fi +fi diff --git a/tallycoin-connect/data/.gitkeep b/tallycoin-connect/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tallycoin-connect/dfwebos-app.yml b/tallycoin-connect/dfwebos-app.yml new file mode 100644 index 0000000..4951ece --- /dev/null +++ b/tallycoin-connect/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1.2 +id: tallycoin-connect +category: bitcoin +name: Tallycoin Connect +version: "1.8.0-1" +tagline: Пожертвования Crowfund непосредственно на ваш узел DFWebOS с помощью Tallycoin +description: >- + ⚠️ Уведомление об устаревании: разработчики проекта объявили это приложение устаревшим и поэтому больше не будут получать обновления. + Платформа Tallycoin закрылась 1 июня 2024 года. Поэтому сервис Tallycoin Connect не будет работать. + + + Tallycoin — это краудфандинговая платформа с пожертвованиями в биткойнах и молниях. Вместе с приложением Tallycoin Connect вы можете получать пожертвования непосредственно на свой узел DFWebOS. Ноль комиссий! +developer: djbooth007 +website: https://tallycoin.app/connect/ +dependencies: + - lightning +repo: https://github.com/djbooth007/tallycoin_connect +support: https://github.com/djbooth007/tallycoin_connect/issues +port: 8124 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +releaseNotes: >- + 🚨 ВАЖНО: Если вы используете на своем DFWebOS приложения Tallycoin Connect и Home Assistant, + пожалуйста, обновите Tallycoin Connect до последней версии перед обновлением Home Assistant. Этот шаг + обеспечивает бесперебойную работу, предотвращая конфликты портов между двумя приложениями. + + + Это обновление изменяет порт, на котором работает Tallycoin Connect, с 8123 на 8124. Это сделано во избежание + конфликт порта с приложением Home Assistant, которое теперь работает на порту 8123. + + + Для самого приложения Tallycoin Connect обновлений нет. +submitter: d11n +submission: https://github.com/getumbrel/umbrel/pull/1052 +disabled: true diff --git a/tallycoin-connect/docker-compose.yml b/tallycoin-connect/docker-compose.yml new file mode 100644 index 0000000..3c24322 --- /dev/null +++ b/tallycoin-connect/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: tallycoin-connect_web_1 + APP_PORT: 8123 + + web: + image: djbooth007/tallycoin_connect:v1.8.0@sha256:818868d99fcec7e0c371ff9b169b413627bc032218aa3aa0b7a99f14d0c598fd + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + - ${APP_DATA_DIR}/data:/data + environment: + LND_SOCKET: "$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT" + LND_MACAROON_PATH: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" + LND_TLSCERT_PATH: "/lnd/tls.cert" + CONFIG_FILE: "/data/tallycoin_api.key" + TALLYCOIN_PASSWD_CLEARTEXT: "$APP_PASSWORD" diff --git a/tallycoin-connect/hooks/post-update b/tallycoin-connect/hooks/post-update new file mode 100755 index 0000000..29b11ec --- /dev/null +++ b/tallycoin-connect/hooks/post-update @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# перезапустите приложение, чтобы новый номер порта был получен правильно +"${DFWEBOS_ROOT}/scripts/app" restart "${APP_ID}" & \ No newline at end of file diff --git a/tautulli/dfwebos-app.yml b/tautulli/dfwebos-app.yml new file mode 100644 index 0000000..01b642e --- /dev/null +++ b/tautulli/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: tautulli +category: media +name: tautulli +version: "2.17.0" +tagline: Контролируйте свой медиа-сервер Plex +description: >- + Tautulli — это стороннее приложение, которое вы можете запускать вместе с медиасервером Plex для мониторинга активности и отслеживания различной статистики. + Самое главное, что эта статистика включает в себя то, что смотрели, кто это смотрел, когда и где они это смотрели и как это смотрели. + Единственное, чего не хватает, это «почему они это посмотрели», но кто я такой, чтобы подвергать сомнению ваши 42 пьесы «Холодного сердца». + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Во время первоначальной настройки вам потребуется ввести IP-адрес вашего устройства DFWebOS для подключения к медиасерверу Plex. + Вы можете узнать IP-адрес вашего устройства, посетив панель администратора вашего маршрутизатора или используя инструмент сканирования IP, например Angry IP Scanner. +developer: Tautulli +website: https://tautulli.com/ +dependencies: [] +repo: https://github.com/Tautulli/Tautulli +support: https://github.com/Tautulli/Tautulli/wiki +port: 8212 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +releaseNotes: >- + ⚠️ В версиях Tautulli <=2.16.1 обнаружено несколько уязвимостей безопасности. Пользователям настоятельно рекомендуется обновиться до последней версии. + + + Это обновление включает в себя несколько исправлений и улучшений безопасности: + - Исправлена уязвимость удаленного выполнения кода при оценке текста уведомления (CVE-2026-28505). + — Исправлена уязвимость SQL-инъекции в команде get_home_stats API (CVE-2026-31799). + - Исправлен обход пути без аутентификации в конечной точке изображения информационного бюллетеня (CVE-2026-31831). + - Исправлен необработанный параметр обратного вызова JSONP (CVE-2026-32275). + — Добавлена аутентификация для конечной точки прокси-сервера образа PMS (CVE-2026-31804). + - Добавлена возможность экспорта квадратных изображений и музыкальной темы. + - Исправлено окно истории, которое не открывалось при нажатии на графики. + - Исправлен информационный бюллетень, в котором не отображались медиафайлы из определенных библиотек Plex. + + + Полные примечания к выпуску и подробная информация доступны по адресу https://github.com/Tautulli/Tautulli/releases. +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/673 diff --git a/tautulli/docker-compose.yml b/tautulli/docker-compose.yml new file mode 100644 index 0000000..fa346f9 --- /dev/null +++ b/tautulli/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: tautulli_web_1 + APP_PORT: 8181 + + web: + image: linuxserver/tautulli:2.17.0@sha256:b7ab997603ac54ce9cebd0e546f2c626c646d9f5b9841d8842b8a75edbc3326a + volumes: + - ${APP_DATA_DIR}/data/config:/config + restart: on-failure + environment: + - PUID=1000 + - PGID=1000 diff --git a/tdex/caddy-data/Caddyfile b/tdex/caddy-data/Caddyfile new file mode 100644 index 0000000..49c053a --- /dev/null +++ b/tdex/caddy-data/Caddyfile @@ -0,0 +1,6 @@ +:8080 { + handle_path /api/* { + reverse_proxy tdex_tdexd_1:9092 + } + reverse_proxy tdex_dashboard_1:8080 +} diff --git a/tdex/dfwebos-app.yml b/tdex/dfwebos-app.yml new file mode 100644 index 0000000..d0b9599 --- /dev/null +++ b/tdex/dfwebos-app.yml @@ -0,0 +1,57 @@ +manifestVersion: 1.1 +id: tdex +category: bitcoin +name: TDEX Provider +version: "1.0.1-hotfix" +tagline: Обеспечьте ликвидность в сети TDEX, открытом протоколе для торговли активами Liquid Network. +description: >- + Поставщик ликвидности хранит ликвидные резервы BASE_ASSET-QUOTE_ASSET в своем некастодиальном горячем кошельке Liquid, + применение автоматизированных стратегий маркет-мейкинга с оракулом или без него. Провайдеры заинтересованы в том, чтобы + быть всегда включенным и должен предоставить общедоступную доступную конечную точку либо через Clearnet, либо с помощью скрытой службы Onion. + + + Небольшую комиссию провайдера можно вычесть из каждой сделки и добавить в резервы. Поставщик ликвидности имеет полный контроль + над рыночной стратегией, необходимой для расчета рыночной ставки, по которой можно принимать сделки. При этом, + есть возможность применить автоматизированную стратегию маркет-мейкинга, опираясь только на остатки резервов и запрошенную сумму + трейдером без необходимости подключения к внешнему источнику цен. Стратегией по умолчанию демона альфа является + постоянное создание рынка продукции. Короче говоря, эта модель генерирует полную книгу заказов на основе начальной цены на рынке. + Каждая транзакция, происходящая на этом рынке, соответствующим образом корректирует рыночные цены. +releaseNotes: >- + Это выпуск исправления, исправляющий ошибку, препятствующую работе новых установок приложения TDEX Provider. + + + Примечания к предыдущей версии 1.0.1: + + + 🚨 ВАЖНО: ПЕРЕД обновлением убедитесь, что у вас записана фраза восстановления из 24 слов. + Это обновление потребует от вас восстановить свой кошелек с помощью фразы восстановления из 24 слов. + + + Это крупное обновление демона TDEX, содержащее ряд изменений, в том числе: + + - Обновление до TDEXv2: интерфейс Trade демона реализует спецификации нового протокола TDEX v2. С этим обновлением демон делает + использование PSETv2 как способа описания и построения транзакций (вместо старого PSETv0), а также предоставляет некоторые новые конечные точки в соответствии с + по спец. + + - Отсоединение кошелька: демону теперь требуется подключение к кошельку Ocean, который полностью отвечает за получение новых пар ключей. + и просканируйте цепочку на их наличие. Кошелек генерирует события, потребляемые демоном для подтвержденных/неподтвержденных транзакций и utxos. + Это значительно улучшает общую производительность службы. + Вам больше не нужно вручную запрашивать средства, переведенные на счет дамеона. + + - Встроенный механизм подачи цен: демон позволяет вам настраивать потоки цен для ваших рынков с подключаемыми стратегиями, чтобы их цены всегда были актуальными. +dependencies: [] +developer: TDEX Network +website: https://dev.tdex.network +repo: https://github.com/tdex-network/tdex-daemon +support: https://t.me/tdexnetwork +submitter: TDEX Network (tiero) +submission: https://github.com/getumbrel/dfwebos-apps/pull/151 +port: 9094 +torOnly: false +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" \ No newline at end of file diff --git a/tdex/docker-compose.yml b/tdex/docker-compose.yml new file mode 100644 index 0000000..8005084 --- /dev/null +++ b/tdex/docker-compose.yml @@ -0,0 +1,68 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: tdex_caddy_1 + APP_PORT: 8080 + + oceand: + image: ghcr.io/vulpemventures/oceand:v0.1.17@sha256:37b813b43b068e32d918b9f42539c33287308cc81d00909c742b7164dfefc0c4 + tty: true + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/ocean-data:/home/ocean/.oceand + environment: + OCEAN_LOG_LEVEL: 5 + OCEAN_DB_TYPE: "badger" + OCEAN_NO_TLS: "true" + OCEAN_NO_PROFILER: "true" + OCEAN_UTXO_EXPIRY_DURATION_IN_SECONDS: 240 + + tdexd: + image: ghcr.io/tdex-network/tdexd:v1.0.1@sha256:eef1f31e98208e9a35ddf308317bc1df71065e189fa0915c769c7a01394ef79a + tty: true + restart: on-failure + depends_on: + - oceand + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/tdexd:/home/tdex/.tdex-daemon + ports: + - ${APP_TDEX_PORT}:${APP_TDEX_PORT} + environment: + TDEX_LOG_LEVEL: 5 + TDEX_OPERATOR_LISTENING_PORT: "${APP_TDEX_PORT}" + TDEX_TRADE_LISTENING_PORT: "${APP_TDEX_PORT}" + TDEX_NO_OPERATOR_TLS: "true" + TDEX_WALLET_ADDR: oceand:18000 + # эти переменные используются для создания соединения URL + # мы предполагаем всегда показывать внешнюю конечную точку + # доступен удаленно с других панелей мониторинга через Tor + TDEX_CONNECT_ADDR: "${APP_TDEX_DAEMON_HIDDEN_SERVICE}" + TDEX_CONNECT_PROTO: http + + dashboard: + image: ghcr.io/tdex-network/dashboard:v1.0.2@sha256:71d598afb0d5ec9966306f4ef0d5f6839a9d7dc50726a935f3d0bb38f1925d78 + restart: on-failure + environment: + USE_PROXY: "false" + IS_PACKAGED: "true" + TRADER_HIDDEN_SERVICE: "${APP_TDEX_DAEMON_HIDDEN_SERVICE}" + + caddy: + image: caddy:2.6.4-alpine@sha256:4dfec6c3b22c36b63ea4a3633c7cdbdaa9926d1324c27db2b0e2b70ef9cd105a + restart: on-failure + volumes: + - ${APP_DATA_DIR}/caddy-data/Caddyfile:/etc/caddy/Caddyfile + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/tdex/exports.sh b/tdex/exports.sh new file mode 100644 index 0000000..947ba40 --- /dev/null +++ b/tdex/exports.sh @@ -0,0 +1,4 @@ +export APP_TDEX_PORT="9092" + +daemon_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-daemon/hostname" +export APP_TDEX_DAEMON_HIDDEN_SERVICE="$(cat "${daemon_hidden_service_file}" 2>/dev/null || echo "daemon_not_yet_set.onion")" diff --git a/tdex/hooks/pre-start b/tdex/hooks/pre-start new file mode 100755 index 0000000..27e6b12 --- /dev/null +++ b/tdex/hooks/pre-start @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)" + +# Обновите Caddyfile, добавив новый порт tdexd. +CADDYFILE_PATH="${APP_DATA_DIR}/caddy-data/Caddyfile" +sed -i 's/tdex_tdexd_1:9090/tdex_tdexd_1:9092/g' "${CADDYFILE_PATH}" + +# Убедитесь, что каталог Ocean-data существует для приложений, обновляющихся из старой версии, в которой его не было. +OCEAN_DATA_DIR="${APP_DATA_DIR}/ocean-data" + +[ ! -d "${OCEAN_DATA_DIR}" ] && mkdir -p "${OCEAN_DATA_DIR}" && chown 1000:1000 "${OCEAN_DATA_DIR}" + +# Убедитесь, что новый каталог tdexd существует для приложений, которые обновляются из старой структуры каталогов tdex-data. +TDEXD_DATA_DIR="${APP_DATA_DIR}/tdexd" + +[ ! -d "${TDEXD_DATA_DIR}" ] && mkdir -p "${TDEXD_DATA_DIR}" && chown 1000:1000 "${TDEXD_DATA_DIR}" + +# Отложите загрузку TDEX до тех пор, пока скрытая служба Tor не будет готова. +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-daemon/hostname" +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach oceand +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach tdexd + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi diff --git a/tdex/ocean-data/.gitkeep b/tdex/ocean-data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tdex/tdexd/.gitkeep b/tdex/tdexd/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tdex/torrc.template b/tdex/torrc.template new file mode 100644 index 0000000..61d653d --- /dev/null +++ b/tdex/torrc.template @@ -0,0 +1,3 @@ +# TDEX Скрытый интерфейс публичного трейдера +HiddenServiceDir /data/app-$APP_ID-daemon +HiddenServicePort 80 tdex_tdexd_1:$APP_TDEX_PORT diff --git a/teamspeak/data/.gitkeep b/teamspeak/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/teamspeak/dfwebos-app.yml b/teamspeak/dfwebos-app.yml new file mode 100644 index 0000000..254c8ca --- /dev/null +++ b/teamspeak/dfwebos-app.yml @@ -0,0 +1,85 @@ +manifestVersion: 1 +id: teamspeak +name: TeamSpeak +tagline: Простая, безопасная и качественная связь для игр, обучения, бизнеса и многого другого. +category: social +version: "3.13.7" +port: 50371 +description: >- + ⚠️ Это приложение было временно удалено из DFWebOS App Store, пока мы работаем над решением для запуска TeamSpeak на устройствах Arm64. Существующие установки продолжат работать в обычном режиме. TeamSpeak скоро вернется! + + + Используйте кристально чистый звук для общения с товарищами по команде на разных платформах с безопасностью военного уровня, производительностью без задержек и + непревзойденная надежность и время безотказной работы. + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + 1) Загрузите клиент TeamSpeak для предпочитаемой вами платформы: https://www.teamspeak.com/downloads.. + Вы подключите своего клиента к приложению TeamSpeak на своем DFWebOS. + + + 2) Войдите в приложение TeamSpeak на своем устройстве DFWebOS, используя следующие данные для входа: + + - Сервер: Teamspeak_server_1 + + - Порт: 10011 + + - SSH: выключено + + - Имя: serveradmin (имя пользователя по умолчанию, отображаемое здесь в магазине приложений и при щелчке правой кнопкой мыши по значку приложения на главном экране) + + - Пароль: (пароль по умолчанию, показанный здесь в магазине приложений и при щелчке правой кнопкой мыши по значку приложения на главном экране) + + 3) Заявите права на свой сервер из клиента TeamSpeak, создав привилегированный ключ в приложении TeamSpeak на вашем DFWebOS и активировав его в клиенте. + + + 🎙️ Непревзойденное качество передачи голоса + + Получите кристально чистое общение без задержек благодаря встроенной автоматической регулировке громкости микрофона и снижению фонового шума. + и эхоподавление. + + + 🎭 Встроенная конфиденциальность + + Разработанный с учетом конфиденциальности, мы не имеем доступа к данным вашего голосового или текстового чата, и регистрация не требуется. + + + 🛡️ БЕЗОПАСНОСТЬ, КАК НИКАКАЯ ДРУГАЯ + + Интегрированная безопасность военного уровня в стандартной комплектации. С помощью TS3 шифрование на основе AES можно включить для всего сервера или даже только для него. + конкретные каналы. + + + 🎚️ Расширенная система разрешений + + Получите полный контроль с помощью нашей мощной, лучшей на рынке иерархической системы разрешений. Решите, кто может говорить, кто может присоединяться к каналам + и многое другое. + + + 🔊 Потрясающий объемный звук + + Будьте в центре событий с позиционным звуком. Слушайте своих товарищей по команде в звуковом пространстве на 360°, что дает вам преимущество при выполнении действий. + ваш следующий план игры. + + + 🎨 Безграничная настройка + + Сделайте TeamSpeak своим собственным и настройте свой клиент в соответствии со своим личным стилем с помощью включенных плагинов, пакетов звуков и значков, а также + темы. Выбирайте из сотен дополнений, созданных сообществом пользователей, или даже создавайте свои собственные. +developer: TeamSpeak Systems, Inc. +website: https://www.teamspeak.com +repo: "" +submitter: Sharknoon +submission: https://github.com/getumbrel/dfwebos-apps/pull/1112 +support: https://support.teamspeak.com +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: "" +dependencies: [] +path: "" +defaultUsername: serveradmin +deterministicPassword: true +disabled: true \ No newline at end of file diff --git a/teamspeak/docker-compose.yml b/teamspeak/docker-compose.yml new file mode 100644 index 0000000..6111c92 --- /dev/null +++ b/teamspeak/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: teamspeak_ui_1 + APP_PORT: 8080 + + ui: + image: joni1802/ts3-manager:v2.2.1@sha256:d69890c323e8715cef0f625036c7c51ec7e7da321438897633fff5df83da1e39 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + JWT_SECRET: $APP_SEED + + server: + image: teamspeak:3.13.7@sha256:b5bdec55bc87b992c5658e739f3ce465644efa6d997633110b12be3dc3a10796 + # TeamSpeak не поддерживает работу с другим пользователем. + #user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + ports: + - 9987:9987/udp + - 10011:10011 + - 30033:30033 + volumes: + - ${APP_DATA_DIR}/data:/var/ts3server + environment: + TS3SERVER_LICENSE: accept + TS3SERVER_SERVERADMIN_PASSWORD: $APP_PASSWORD \ No newline at end of file diff --git a/technitium-dns/data/.gitkeep b/technitium-dns/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/technitium-dns/dfwebos-app.yml b/technitium-dns/dfwebos-app.yml new file mode 100644 index 0000000..0c38c04 --- /dev/null +++ b/technitium-dns/dfwebos-app.yml @@ -0,0 +1,42 @@ +manifestVersion: 1 +id: technitium-dns +category: networking +name: Technitium DNS Server +version: "14.2.0" +tagline: Блокируйте рекламу и вредоносное ПО на уровне DNS для всей вашей сети. +description: >- + DNS-сервер Technitium — это авторитетный, а также рекурсивный DNS-сервер с открытым исходным кодом, который можно использовать для самостоятельного размещения DNS-сервера в целях конфиденциальности и безопасности. + Он работает «из коробки» без каких-либо настроек или с минимальной настройкой. +releaseNotes: >- + 🚨 Этот основной выпуск обновляется до среды выполнения .NET 9 и включает важные исправления безопасности. Все узлы кластера необходимо обновлять вместе, чтобы обеспечить совместимость. + + + Основные моменты этого выпуска: + - Исправлена уязвимость отказа в обслуживании при реализации ограничения скорости с переработанными параметрами QPM. + - Исправлена уязвимость отравления кэша из-за атак фрагментации IP. + - Исправлена уязвимость понижения версии DNSSEC, которая могла обойти проверку. + - Добавлена функция кластеризации для управления несколькими экземплярами DNS-сервера с единой консоли. + - Добавлена поддержка двухфакторной аутентификации (2FA) с TOTP. + - Добавлено приложение MISP Connector для блокировки вредоносных доменов из каналов MISP. + - Обновлено приложение расширенной блокировки с настраиваемым сроком жизни для заблокированных ответов. + - Улучшенное приложение Log Exporter с поддержкой ведения журналов EDNS. + - Улучшена поддержка записей комментариев в URL-адресах разрешенных/блокированных списков. + - Множество исправлений ошибок при анализе файлов зоны, проверке сеанса и загрузке конфигурации приложения. + + + Полные примечания к выпуску можно найти по адресу https://github.com/TechnitiumSoftware/DnsServer/blob/master/CHANGELOG.md. +developer: Technitium +website: https://technitium.com/dns/ +dependencies: [] +repo: https://github.com/TechnitiumSoftware/DnsServer +support: https://github.com/TechnitiumSoftware/DnsServer/discussions +port: 5380 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: admin +deterministicPassword: true +submitter: highghlow +submission: https://github.com/getumbrel/umbrel/pull/1046 diff --git a/technitium-dns/docker-compose.yml b/technitium-dns/docker-compose.yml new file mode 100644 index 0000000..b954c98 --- /dev/null +++ b/technitium-dns/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3.7" + +services: + dns-server: + image: technitium/dns-server:14.2.0@sha256:b6a39621a5c6b37e6ca8c4b428a7e39531041e19be4b28285657c8c74374950b + network_mode: host + # порты: + # - "5380:5380/tcp" #DNS веб-консоль (HTTP) + # - "53443:53443/tcp" #DNS веб-консоль (HTTPS) + # - сервис "53:53/udp" #DNS + # - сервис "53:53/tcp" #DNS + # - сервис "853:853/udp" #DNS-over-QUIC + # - сервис "853:853/tcp" #DNS-over-TLS + # - Сервис "443:443/udp" #DNS-over-HTTPS (HTTP/3) + # - Сервис "443:443/tcp" #DNS-over-HTTPS (HTTP/1.1, HTTP/2) + # - Служба "80:80/tcp" #DNS-over-HTTP (используется с обратным прокси-сервером или продлением сертификата certbot) + # - Сервис "8053:8053/tcp" #DNS-over-HTTP (использовать с обратным прокси) + # - сервис "67:67/udp" #DHCP + environment: + - DNS_SERVER_DOMAIN=${DEVICE_DOMAIN_NAME} #The primary domain name used by this DNS Server to identify itself. + - DNS_SERVER_ADMIN_PASSWORD=${APP_PASSWORD} #DNS web console admin user password. + # - DNS_SERVER_ADMIN_PASSWORD_FILE=password.txt #The path to a file that contains a plain text password for the DNS web console admin user. + # - DNS_SERVER_PREFER_IPV6=false #DNS Server will use IPv6 for querying whenever possible with this option enabled. + # - DNS_SERVER_WEB_SERVICE_HTTP_PORT=5380 #The TCP port number for the DNS web console over HTTP protocol. + # - DNS_SERVER_WEB_SERVICE_HTTPS_PORT=53443 #The TCP port number for the DNS web console over HTTPS protocol. + # - DNS_SERVER_WEB_SERVICE_ENABLE_HTTPS=false #Enables HTTPS for the DNS web console. + # - DNS_SERVER_WEB_SERVICE_USE_SELF_SIGNED_CERT=false #Enables self signed TLS certificate for the DNS web console. + # - DNS_SERVER_OPTIONAL_PROTOCOL_DNS_OVER_HTTP=false #Enables DNS server optional protocol DNS-over-HTTP on TCP port 8053 to be used with a TLS terminating reverse proxy like nginx. + # - DNS_SERVER_RECURSION=AllowOnlyForPrivateNetworks #Recursion options: Allow, Deny, AllowOnlyForPrivateNetworks, UseSpecifiedNetworks. + # - DNS_SERVER_RECURSION_DENIED_NETWORKS=1.1.1.0/24 #Comma separated list of IP addresses or network addresses to deny recursion. Valid only for `UseSpecifiedNetworks` recursion option. + # - DNS_SERVER_RECURSION_ALLOWED_NETWORKS=127.0.0.1, 192.168.1.0/24 #Comma separated list of IP addresses or network addresses to allow recursion. Valid only for `UseSpecifiedNetworks` recursion option. + # - DNS_SERVER_ENABLE_BLOCKING=false #Sets the DNS server to block domain names using Blocked Zone and Block List Zone. + # - DNS_SERVER_ALLOW_TXT_BLOCKING_REPORT=false #Specifies if the DNS Server should respond with TXT records containing a blocked domain report for TXT type requests. + # - DNS_SERVER_BLOCK_LIST_URLS= #A comma separated list of block list URLs. + # - DNS_SERVER_FORWARDERS=1.1.1.1, 8.8.8.8 #Comma separated list of forwarder addresses. + # - DNS_SERVER_FORWARDER_PROTOCOL=Tcp #Forwarder protocol options: Udp, Tcp, Tls, Https, HttpsJson. + # - DNS_SERVER_LOG_USING_LOCAL_TIME=true #Enable this option to use local time instead of UTC for logging. + volumes: + - ${APP_DATA_DIR}/data:/etc/dns + restart: on-failure + # системные файлы: + # - net.ipv4.ip_local_port_range=1024 65000 diff --git a/termix/data/.gitkeep b/termix/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/termix/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/termix/dfwebos-app.yml b/termix/dfwebos-app.yml new file mode 100644 index 0000000..b5a4db2 --- /dev/null +++ b/termix/dfwebos-app.yml @@ -0,0 +1,78 @@ +manifestVersion: 1 +id: termix +name: Termix +tagline: Управляйте своими серверами с помощью встроенного SSH, туннелей и доступа к файлам. +category: developer +version: "2.1.0" +port: 6444 +description: >- + 💻 Termix предназначен для упрощения администрирования сервера за счет объединения мощных инструментов управления в едином унифицированном интерфейсе. По своей сути он обеспечивает прямой доступ к терминалам SSH внутри браузера, устраняя необходимость во внешних клиентах. Сеансы можно открывать во вкладках или организовывать в виде разделенных экранов, что позволяет администраторам с легкостью выполнять несколько задач и одновременно управлять различными системами. Терминал отличается быстротой реагирования и надежностью, что гарантирует быстрое выполнение рутинных задач, таких как настройка, обновление и устранение неполадок. + + + Помимо терминального доступа, Termix предлагает расширенное управление туннелями, которое обеспечивает безопасные и постоянные соединения между серверами и службами. Эти туннели можно создавать, отслеживать и при необходимости автоматически переподключать, что дает администраторам уверенность в том, что критически важные каналы остаются доступными без постоянного ручного вмешательства. Эта функция особенно полезна для поддержания стабильной связи в средах, где соединения могут прерываться или их необходимо часто восстанавливать. + + + Управление файлами — еще один ключевой аспект Termix. По удаленным каталогам можно перемещаться так же, как если бы они были локальными, с поддержкой загрузки новых файлов, переименования или удаления существующих, а также редактирования контента непосредственно в интерфейсе. Встроенный редактор обеспечивает подсветку синтаксиса для различных языков программирования и конфигурации, что позволяет легко настраивать файлы конфигурации или сценарии, не полагаясь на отдельные инструменты. Эта бесшовная интеграция снижает трение и ускоряет повседневные задачи по техническому обслуживанию. + + + Для поддержки работы с несколькими серверами Termix включает в себя диспетчер хостов, в котором соединения можно организовывать и группировать. Теги и папки упрощают классификацию различных сред, будь то системы разработки, промежуточные или производственные системы. Такая структура гарантирует, что администраторы смогут быстро найти нужный хост и подключиться к нему, не просматривая длинные списки сохраненных учетных данных. + + + Еще одна важная возможность Termix — мониторинг в реальном времени. Приложение представляет подробную статистику по системным ресурсам, включая загрузку процессора, использование памяти и потребление хранилища. Эти сведения помогают администраторам выявлять потенциальные проблемы до того, как они перерастут в критические. + + + Все эти функции заключены в чистый и современный интерфейс, в котором приоритет отдается удобству использования. Дизайн подчеркивает ясность и эффективность, позволяя как опытным администраторам, так и новичкам напрямую взаимодействовать со сложными системами. Termix превращает управление сервером из фрагментированного набора инструментов в целостный, доступный и удобный для пользователя процесс. +developer: LukeGus +website: https://docs.termix.site/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3845 +repo: https://github.com/Termix-SSH/Termix/ +support: https://github.com/Termix-SSH/Termix/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Новые функции и улучшения в этом выпуске: + - Интеграция Tmux для терминалов + - Множество новых тем интерфейс, включая Дракулу и полуночный эспрессо. + - Кнопка переподключения для отключенных сеансов SSH. + - Меню правой кнопки мыши в терминале для копирования, вставки и открытия в файловом менеджере. + - Переключение истории команд в профиле пользователя. + - Обмен фрагментами с пользователями и ролями + - Экспортируйте все хосты как JSON. + - Поддержка пробуждения по локальной сети + - Стук порта для соединений SSH + - Конфигурация таймаута сеанса в настройках администратора. + - Настраиваемый уровень журнала в настройках администратора. + - Выбор встроенного провайдера OPKSSH в диалоговом окне. + - Переключение на соседнюю вкладку при закрытии текущей вкладки. + - Добавлены кнопки «Выбрать все» и «Отменить выбор всех» для выбора фрагмента терминала. + + + Исправления ошибок: + - Применено множество исправлений, связанных с безопасностью. + - Значительно уменьшен размер изображения Docker. + - Исправлена аутентификация на основе файлов cookie для соединений WebSocket. + - Сеансы SSH теперь привязаны к пользователю и проверяются при доступе. + - Конфиденциальные данные удалены из вывода журнала. + - Учетные данные в виде открытого текста удалены из ответов внутреннего хоста API. + - Сессии аннулируются при изменении или сбросе пароля. + - Исправлен файловый менеджер, показывающий устаревшее содержимое каталога. + - Исправлен вывод звука RDP и динамическое изменение размера сеанса. + - Исправлена страница администратора, неправильно отображающая статус администратора. + - Исправлена ошибка, из-за которой не удалось изменить порядок фрагментов. + - Исправлен клиент Windows, который не мог подключиться к серверам SSH после перезагрузки. + - Исправлен сбой при загрузке файла при отказе в разрешении. + - Исправлена очистка туннеля, чтобы предотвратить уничтожение новых соединений. + - Исправлена вставка буфера обмена с хоста в сеанс RDP. + - Сохранен режим удаленного файла после записи SFTP. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Termix-SSH/Termix/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/termix/docker-compose.yml b/termix/docker-compose.yml new file mode 100644 index 0000000..7adfff7 --- /dev/null +++ b/termix/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: termix_web_1 + APP_PORT: 8080 + + web: + image: ghcr.io/lukegus/termix:release-2.1.0@sha256:52e45c1ea3fb85be5b3ade5ff42eed0946fe81131cbd834f6960e00797f17f86 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/app/data diff --git a/thelounge/data/.gitkeep b/thelounge/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/thelounge/dfwebos-app.yml b/thelounge/dfwebos-app.yml new file mode 100644 index 0000000..d70c3e6 --- /dev/null +++ b/thelounge/dfwebos-app.yml @@ -0,0 +1,32 @@ +manifestVersion: 1.1 +id: thelounge +category: social +name: The Lounge +version: "4.4.3" +tagline: Современный веб-клиент IRC, предназначенный для самостоятельного хостинга. +description: >- + The Lounge — это современный веб-клиент IRC (Internet Relay Chat) с открытым исходным кодом, который обеспечивает постоянное подключение, позволяя пользователям оставаться на связи с серверами IRC даже в автономном режиме, а также обеспечивает адаптивный интерфейс, совместимый с настольными компьютерами, смартфонами и планшетами. + + + Он переносит IRC в 21 век с такими функциями, как push-уведомления, предварительный просмотр ссылок и загрузка файлов, а также поддерживает несколько учетных записей пользователей, позволяя совместно использовать сервер друзьям или членам команды. + + + Для обеспечения оптимальной производительности Lounge можно установить на постоянно работающий сервер, предоставляя пользователям доступ через браузеры или мобильные устройства. + + + Он предлагает как приватный режим, сочетающий в себе функции вышибалы и клиента для современного чата, так и публичный режим, позволяющий открыть доступ к чату без регистрации. +developer: The Lounge Team +website: https://thelounge.chat +dependencies: [] +repo: https://github.com/thelounge/thelounge +support: https://github.com/thelounge/thelounge/issues +port: 9003 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "dfwebos" +deterministicPassword: true +submitter: oren-z0 +submission: https://github.com/getumbrel/dfwebos-apps/pull/2412 diff --git a/thelounge/docker-compose.yml b/thelounge/docker-compose.yml new file mode 100644 index 0000000..5798683 --- /dev/null +++ b/thelounge/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: thelounge_web_1 + APP_PORT: 9000 + PROXY_AUTH_ADD: "false" + + web: + image: ghcr.io/thelounge/thelounge:v4.4.3@sha256:c0565787e0c44951df4ea77840519a41cfe6a4ec040bf1bda928a91866cc3e5e + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/var/opt/thelounge diff --git a/thelounge/hooks/pre-start b/thelounge/hooks/pre-start new file mode 100755 index 0000000..32b5890 --- /dev/null +++ b/thelounge/hooks/pre-start @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Цель этого предстартового хука — добавить пользователя гостиной + +APP_DATA_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..")" + +# дозорный файл, чтобы проверить, был ли уже инициализирован пользователь +USER_SENTINEL="${APP_DATA_DIR}/.user_created" + +# имя пользователя и адрес электронной почты +USER_NAME="dfwebos" + +# максимальное количество попыток и время ожидания между ними (60 секунд) +MAX_TRIES=12 +SLEEP_SECS=5 + +# ──────────────────────────────────────────────────────────── +# Полностью пропустить загрузку, если пользователь уже инициализирован +# ──────────────────────────────────────────────────────────── +if [[ -f "$USER_SENTINEL" ]]; then + echo "thelounge: user already initialised - skipping bootstrap." + exit 0 +fi + +# ──────────────────────────────────────────────────────────── +# Поднимите веб-сервис, чтобы все было готово к запуску. +# ──────────────────────────────────────────────────────────── +echo "thelounge: starting full stack to run migrations…" +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" \ + up -d --wait --wait-timeout 90 web + +# ──────────────────────────────────────────────────────────── +# Повторяйте попытку, пока пользователь не будет создан (максимум 60 секунд). +# Это должно добиться успеха с первой попытки +# Но включение цикла повторов для надежности +# ──────────────────────────────────────────────────────────── +echo "thelounge: ensuring user exists…" +for ((try=1; try<=MAX_TRIES; try++)); do + if "${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" exec -T web thelounge add "${USER_NAME}" --password "${APP_PASSWORD}" \ ; then + touch "$USER_SENTINEL" + echo "thelounge: user ready." + break + fi + echo " Attempt $try/$MAX_TRIES failed - retrying in ${SLEEP_SECS}s…" + sleep "$SLEEP_SECS" +done + +if [[ ! -f "$USER_SENTINEL" ]]; then + echo "thelounge ERROR: could not create user after $MAX_TRIES attempts." + exit 1 +fi + +# ──────────────────────────────────────────────────────────── +# Отключите все контейнеры и позвольте DFWebOS запустить их заново. +# ──────────────────────────────────────────────────────────── +echo "thelounge: bootstrap finished - stopping stack for clean start…" +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" stop diff --git a/thinkdashboard/data/.gitkeep b/thinkdashboard/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/thinkdashboard/dfwebos-app.yml b/thinkdashboard/dfwebos-app.yml new file mode 100644 index 0000000..f9cec4e --- /dev/null +++ b/thinkdashboard/dfwebos-app.yml @@ -0,0 +1,35 @@ +manifestVersion: 1 +id: thinkdashboard +category: files +name: ThinkDashboard +version: "0.7.6" +tagline: Легкая панель закладок с сочетаниями клавиш. +description: >- + ThinkDashboard — это легкая, автономная панель закладок с сочетаниями клавиш. + + + ✨ Особенности + - Минималистичный дизайн: чистый текстовый интерфейс. + - Сочетания клавиш: назначайте сочетания клавиш для быстрого открытия закладок. + - Настраиваемые категории: распределяйте закладки по категориям. + - Поддержка тем: темные и светлые темы. + - Настройка темы: полная поддержка настройки темы с возможностью создания бесконечных вариантов. + - Адаптивный дизайн: работает на настольных и мобильных устройствах. +developer: MatiasDesuu +website: https://github.com/MatiasDesuu/ThinkDashboard +repo: https://github.com/MatiasDesuu/ThinkDashboard +support: https://github.com/MatiasDesuu/ThinkDashboard/issues +port: 8229 +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3960 +releaseNotes: "" +dependencies: [] +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +permissions: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/thinkdashboard/docker-compose.yml b/thinkdashboard/docker-compose.yml new file mode 100644 index 0000000..77ccaff --- /dev/null +++ b/thinkdashboard/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: thinkdashboard_server_1 + APP_PORT: "8080" + + server: + image: ghcr.io/matiasdesuu/thinkdashboard:v0.7.6@sha256:3bd3ac29fcd0329673a1b4946e4e63ecc55239e6221a00bd4b407a5343c55079 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/app/data + environment: + - PORT=8080 diff --git a/threema/dfwebos-app.yml b/threema/dfwebos-app.yml new file mode 100644 index 0000000..0a41525 --- /dev/null +++ b/threema/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1 +id: threema +name: Threema Web +tagline: Интуитивно понятный и безопасный веб-клиент для пользователей Threema. +category: files +version: "2.6.3" +port: 8855 +description: >- + 📱 Threema Web — это безопасный и удобный способ использовать приложение для обмена сообщениями Threema непосредственно из веб-браузера, сохраняя при этом полное сквозное шифрование. Сканируя QR-код с помощью приложения Threema, пользователи устанавливают прямое соединение между своим смартфоном и компьютером, гарантируя, что никакие сообщения или метаданные не будут храниться на внешних серверах. Связь осуществляется через WebRTC, который обеспечивает частное и зашифрованное одноранговое соединение. + + + С помощью Threema Web пользователи могут отправлять и получать сообщения, обмениваться изображениями и файлами, а также управлять беседами, используя полноразмерную клавиатуру и большой экран. Поскольку все данные остаются на устройствах пользователя и никогда не загружаются в облако, Threema Web обеспечивает высокий уровень конфиденциальности и безопасности. Это делает его идеальным решением для тех, кому нужен беспрепятственный обмен сообщениями на разных устройствах без ущерба для конфиденциальности. +developer: Threema GmbH +website: https://threema.ch/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2226 +repo: https://github.com/threema-ch/threema-web +support: https://github.com/threema-ch/threema-web/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Это обновление включает в себя новые функции, исправления ошибок и улучшения. + + + Ключевые особенности этой версии: + - Добавлен финский перевод + — Обеззаражен заголовок диалога в SendFileDialog. + - Обновлены зависимости + + + Полный список изменений вы можете найти на https://github.com/threema-ch/threema-web/blob/master/CHANGELOG.md. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/threema/docker-compose.yml b/threema/docker-compose.yml new file mode 100644 index 0000000..118bed7 --- /dev/null +++ b/threema/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: threema_web_1 + APP_PORT: 80 + + web: + image: dennysubke/threema-web:v2.6.3@sha256:8c65ceb537a7a85bb98ef38263860dc6bede8faef620143ec01a584dec26878d + # не может работать без рута + #user: "1000:1000" + restart: on-failure diff --git a/thunderhub/data/thubConfig.yaml b/thunderhub/data/thubConfig.yaml new file mode 100644 index 0000000..f4b68f2 --- /dev/null +++ b/thunderhub/data/thubConfig.yaml @@ -0,0 +1,13 @@ +accounts: + - name: 'DFWebOS' + serverUrl: '{YML_ENV_1}' + certificatePath: '/lnd/tls.cert' + macaroonPath: '/lnd/data/chain/bitcoin/mainnet/admin.macaroon' + - name: 'DFWebOS Testnet' + serverUrl: '{YML_ENV_1}' + certificatePath: '/lnd/tls.cert' + macaroonPath: '/lnd/data/chain/bitcoin/testnet/admin.macaroon' + - name: 'DFWebOS Regtest' + serverUrl: '{YML_ENV_1}' + certificatePath: '/lnd/tls.cert' + macaroonPath: '/lnd/data/chain/bitcoin/regtest/admin.macaroon' diff --git a/thunderhub/dfwebos-app.yml b/thunderhub/dfwebos-app.yml new file mode 100644 index 0000000..de69144 --- /dev/null +++ b/thunderhub/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1 +id: thunderhub +category: bitcoin +name: ThunderHub +version: "0.15.4" +tagline: Получите полный контроль над своим узлом Lightning +description: >- + ThunderHub позволяет вам получить полный контроль над вашим узлом Lightning. + с красивым и потрясающим интерфейс. Изучите все возможности ThunderHub + предложение, от отправки и получения платежей Lightning до проверки вашего узла + статистику работоспособности и даже более продвинутые опции, такие как ребалансировка каналов и + многолучевые молниеотводы. + + + Управление и мониторинг вашего узла никогда не было проще благодаря отчетам о транзакциях, графикам и огромному набору различных функций, объединенных в этот замечательный инструмент. +developer: Anthony Potdevin +website: https://thunderhub.io/ +dependencies: + - lightning +repo: https://github.com/apotdevin/thunderhub +support: https://t.me/thunderhub +port: 3000 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +deterministicPassword: true +releaseNotes: >- + ThunderHub 0.15.4 представляет обновленный интерфейс с улучшенным стилем всего приложения и расширенными возможностями обмена с новыми потоками ввода и вывода средств. + + + Полные примечания к выпуску можно найти по адресу https://github.com/apotdevin/thunderhub/releases/tag/v0.15.4. +submitter: Anthony Potdevin +submission: https://github.com/getumbrel/umbrel/pull/343 diff --git a/thunderhub/docker-compose.yml b/thunderhub/docker-compose.yml new file mode 100644 index 0000000..05a83e5 --- /dev/null +++ b/thunderhub/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: thunderhub_web_1 + APP_PORT: 3000 + + web: + image: apotdevin/thunderhub:0.15.4@sha256:62c71058ee811c7027f3e78dcf261db483d34e188e0414b1f284cb2ec811f974 + # Теперь нам нужно запускать от имени пользователя root, чтобы избежать ошибок разрешения schema.gql. + # user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + - ${APP_DATA_DIR}/data:/data + environment: + MASTER_PASSWORD_OVERRIDE: "$APP_PASSWORD" + NO_VERSION_CHECK: "true" + LOG_LEVEL: "debug" + ACCOUNT_CONFIG_PATH: "/data/thubConfig.yaml" + YML_ENV_1: "$APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT" + TOR_PROXY_SERVER: "socks://$TOR_PROXY_IP:$TOR_PROXY_PORT" diff --git a/tools/translate-hash-comments.js b/tools/translate-hash-comments.js new file mode 100644 index 0000000..32bec0c --- /dev/null +++ b/tools/translate-hash-comments.js @@ -0,0 +1,259 @@ +const fs = require('fs'); +const path = require('path'); + +const workspaceRoot = path.resolve(__dirname, '..'); +const skipDirs = new Set(['.git', 'node_modules', '.venv']); +const skipExtensions = new Set(['.md', '.png', '.jpg', '.jpeg', '.gif', '.webp', '.ico', '.svg', '.pdf', '.zip', '.tar', '.gz', '.7z']); +const nonHashCommentExtensions = new Set(['.html', '.htm', '.css', '.scss', '.sass', '.less', '.js', '.jsx', '.ts', '.tsx']); +const translationCache = new Map(); + +function sleep(delayMs) { + return new Promise((resolve) => setTimeout(resolve, delayMs)); +} + +const protectedPattern = /https?:\/\/\S+|www\.\S+|\$\{?[A-Z0-9_]+\}?|\/[A-Za-z0-9._\-/]+|\b[a-z0-9._-]+\/[a-z0-9._-]+\b|\b[a-z0-9._-]+\.[a-z]{2,}\b|\*[A-Za-z]+|`[^`]+`|"[^"]+"|'[^']+'/g; + +function shouldSkipFile(filePath) { + const ext = path.extname(filePath).toLowerCase(); + return skipExtensions.has(ext); +} + +function supportsHashComments(filePath) { + const ext = path.extname(filePath).toLowerCase(); + return !nonHashCommentExtensions.has(ext); +} + +function listFiles(dirPath) { + const entries = fs.readdirSync(dirPath, { withFileTypes: true }); + const files = []; + for (const entry of entries) { + if (entry.isDirectory()) { + if (skipDirs.has(entry.name)) { + continue; + } + files.push(...listFiles(path.join(dirPath, entry.name))); + continue; + } + const filePath = path.join(dirPath, entry.name); + if (!shouldSkipFile(filePath)) { + files.push(filePath); + } + } + return files; +} + +function isProbablyTextFile(filePath) { + const buffer = fs.readFileSync(filePath); + const length = Math.min(buffer.length, 1024); + for (let index = 0; index < length; index += 1) { + if (buffer[index] === 0) { + return false; + } + } + return true; +} + +function hasCyrillic(text) { + return /[А-Яа-яЁё]/.test(text); +} + +function isCodeLikeComment(text) { + const trimmed = text.trim(); + if (!trimmed) { + return true; + } + if (/^#[A-Za-z_-][A-Za-z0-9_-]*\s*[>{.{:\[]/.test(trimmed)) { + return true; + } + if (/^[!\/]/.test(trimmed)) { + return true; + } + if (/^[\[\]{}()<>:=,$"'`*_./\\-]+$/.test(trimmed)) { + return true; + } + if (/^[A-Za-z0-9_.-]+\s*:\s*[^\s].*$/.test(trimmed) && !/\s{2,}|\b(is|are|if|when|for|with|without|must|can|will|should|here|example)\b/i.test(trimmed)) { + return true; + } + if (/^[A-Za-z0-9_.-]+\s*=\s*[^\s].*$/.test(trimmed) && !/\b(is|are|if|when|for|with|without|must|can|will|should|here|example)\b/i.test(trimmed)) { + return true; + } + if (/^-\s*[A-Z0-9_]+\s*=/.test(trimmed)) { + return true; + } + if (/^[A-Za-z0-9_.-]+\/$/.test(trimmed)) { + return true; + } + return false; +} + +function protectTerms(text) { + const tokens = []; + const protectedText = text.replace(protectedPattern, (match) => { + const placeholder = `ZXQQ${tokens.length}QQXZ`; + tokens.push(match); + return placeholder; + }); + return { protectedText, tokens }; +} + +function restoreTerms(text, tokens) { + let restored = text; + tokens.forEach((token, index) => { + restored = restored.replace(new RegExp(`ZXQQ${index}QQXZ`, 'g'), token); + }); + return restored; +} + +function postProcess(text) { + return text + .replace(/\bUI\b/g, 'интерфейс') + .replace(/\bAPI\b/g, 'API') + .replace(/\bHTTP\b/g, 'HTTP') + .replace(/\bHTTPS\b/g, 'HTTPS') + .replace(/\bSSH\b/g, 'SSH') + .replace(/\bDNS\b/g, 'DNS') + .replace(/\bTor\b/g, 'Tor') + .replace(/\bDocker Compose\b/g, 'Docker Compose') + .replace(/\bDFWebOS\b/g, 'DFWebOS'); +} + +async function translateText(text) { + if (!text.trim() || hasCyrillic(text)) { + return text; + } + if (translationCache.has(text)) { + return translationCache.get(text); + } + + const { protectedText, tokens } = protectTerms(text); + const url = `https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=ru&dt=t&q=${encodeURIComponent(protectedText)}`; + let response; + for (let attempt = 0; attempt < 4; attempt += 1) { + response = await fetch(url, { headers: { 'User-Agent': 'Mozilla/5.0' } }); + if (response.ok) { + break; + } + if (response.status < 500 || attempt === 3) { + throw new Error(`Translation failed with status ${response.status}`); + } + await sleep(500 * (attempt + 1)); + } + + if (!response.ok) { + throw new Error(`Translation failed with status ${response.status}`); + } + + const payload = await response.json(); + const translated = payload[0].map((item) => item[0]).join(''); + const restored = restoreTerms(translated, tokens); + const processed = postProcess(restored); + translationCache.set(text, processed); + return processed; +} + +function splitInlineComment(text) { + const marker = text.indexOf(' # '); + if (marker === -1) { + return null; + } + return { + head: text.slice(0, marker + 1), + tail: text.slice(marker + 3), + }; +} + +async function translateCommentLine(line) { + const match = line.match(/^(\s*#+)(\s*)(.*)$/); + if (!match) { + return { changed: false, line }; + } + + const prefix = match[1]; + const spacing = match[2]; + const body = match[3]; + + if (prefix.startsWith('#!')) { + return { changed: false, line }; + } + if (!body.trim()) { + return { changed: false, line }; + } + + const inlineComment = splitInlineComment(body); + if (inlineComment && isCodeLikeComment(inlineComment.head.trim())) { + const translatedTail = await translateText(inlineComment.tail); + const updated = `${prefix}${spacing}${inlineComment.head} # ${translatedTail}`; + return { changed: updated !== line, line: updated }; + } + + if (isCodeLikeComment(body)) { + return { changed: false, line }; + } + + const translated = await translateText(body); + const updated = `${prefix}${spacing}${translated}`; + return { changed: updated !== line, line: updated }; +} + +async function processFile(filePath) { + if (!supportsHashComments(filePath)) { + return false; + } + + if (!isProbablyTextFile(filePath)) { + return false; + } + + const source = fs.readFileSync(filePath, 'utf8').replace(/\r\n/g, '\n'); + if (!/^\s*#/m.test(source)) { + return false; + } + + const lines = source.split('\n'); + let changed = false; + + for (let index = 0; index < lines.length; index += 1) { + const result = await translateCommentLine(lines[index]); + if (result.changed) { + lines[index] = result.line; + changed = true; + } + } + + if (changed) { + fs.writeFileSync(filePath, lines.join('\n')); + } + return changed; +} + +async function main() { + const args = process.argv.slice(2); + const filePaths = args.length + ? args.map((filePath) => path.resolve(workspaceRoot, filePath)) + : listFiles(workspaceRoot); + + let updated = 0; + const failedFiles = []; + for (const filePath of filePaths) { + try { + const changed = await processFile(filePath); + if (changed) { + updated += 1; + console.log(`translated ${path.relative(workspaceRoot, filePath)}`); + } + } catch (error) { + failedFiles.push(path.relative(workspaceRoot, filePath)); + console.warn(`failed ${path.relative(workspaceRoot, filePath)}: ${error.message}`); + } + } + console.log(`updated files: ${updated}`); + if (failedFiles.length > 0) { + console.log(`failed files: ${failedFiles.length}`); + process.exitCode = 1; + } +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); \ No newline at end of file diff --git a/tools/translate-manifests.js b/tools/translate-manifests.js new file mode 100644 index 0000000..2c7d3d3 --- /dev/null +++ b/tools/translate-manifests.js @@ -0,0 +1,260 @@ +const fs = require('fs'); +const path = require('path'); + +const workspaceRoot = path.resolve(__dirname, '..'); +const targetFields = ['releaseNotes', 'tagline', 'description']; +const skipDirs = new Set(['.git', 'node_modules', '.venv']); +const translationCache = new Map(); + +const protectedPattern = /https?:\/\/\S+|www\.\S+|\b(?:OpenAI|TypeScript|Typescript|JavaScript|Docker|GitHub|OAuth2|OAuth|MCP|API|SDK|UI|CLI|AI|AWS|JSON|CSV|FFMPEG|VCF|PDF|BTC|S3|PostgreSQL|Redis|npmjs\.com|DFWebOS|dfwebOS|Copilot|Docker Compose|MySQL|SQLite|PostgreSQL|WebDAV|WebRTC|Nostr|Bitcoin|Lightning|Tor|TLS|SSH|REST|GraphQL|WebSocket|Prometheus|Grafana|InfluxDB|MongoDB|MariaDB|Node\.js|Nextcloud|OpenStreetMap|YouTube|Plex|Sonarr|Radarr|Lidarr|Readarr|Prowlarr|SABnzbd|qBittorrent|Transmission|Home Assistant|WordPress)\b/g; + +function listManifestFiles(dirPath) { + const entries = fs.readdirSync(dirPath, { withFileTypes: true }); + const files = []; + for (const entry of entries) { + if (entry.isDirectory()) { + if (skipDirs.has(entry.name)) { + continue; + } + files.push(...listManifestFiles(path.join(dirPath, entry.name))); + continue; + } + if (entry.name === 'dfwebos-app.yml') { + files.push(path.join(dirPath, entry.name)); + } + } + return files; +} + +function hasCyrillic(text) { + return /[А-Яа-яЁё]/.test(text); +} + +function parseTopLevelField(source, key) { + const lines = source.split('\n'); + const startIndex = lines.findIndex((line) => line.startsWith(`${key}:`)); + if (startIndex === -1) { + return null; + } + + let endIndex = lines.length; + for (let index = startIndex + 1; index < lines.length; index += 1) { + if (/^[^\s#][^:]*:/.test(lines[index])) { + endIndex = index; + break; + } + } + + const firstLine = lines[startIndex]; + const inlineValue = firstLine.slice(`${key}:`.length).trim(); + let style = 'plain'; + let value = ''; + + if (inlineValue === '>' || inlineValue === '>-' || inlineValue === '|' || inlineValue === '|-') { + style = inlineValue; + value = lines + .slice(startIndex + 1, endIndex) + .map((line) => (line.startsWith(' ') ? line.slice(2) : line)) + .join('\n'); + } else if (inlineValue.startsWith('"') && inlineValue.endsWith('"')) { + style = 'double-quoted'; + value = JSON.parse(inlineValue); + } else if (inlineValue.startsWith("'") && inlineValue.endsWith("'")) { + style = 'single-quoted'; + value = inlineValue.slice(1, -1).replace(/''/g, "'"); + } else { + style = 'plain'; + value = inlineValue; + } + + return { startIndex, endIndex, style, value }; +} + +function protectTerms(text) { + const tokens = []; + const protectedText = text.replace(protectedPattern, (match) => { + const placeholder = `ZXQQ${tokens.length}QQXZ`; + tokens.push(match); + return placeholder; + }); + return { protectedText, tokens }; +} + +function restoreTerms(text, tokens) { + let restored = text; + tokens.forEach((token, index) => { + restored = restored.replace(new RegExp(`ZXQQ${index}QQXZ`, 'g'), token); + }); + return restored; +} + +function postProcessTranslation(text) { + return text + .replace(/\bUI\b/g, 'интерфейс') + .replace(/\bAI\b/g, 'ИИ') + .replace(/AI-/g, 'ИИ-') + .replace(/\bself-hosted\b/gi, 'самостоятельно размещаемый') + .replace(/\bopen source\b/gi, 'с открытым исходным кодом') + .replace(/\bbug fixes\b/gi, 'исправления ошибок') + .replace(/\brelease notes\b/gi, 'примечания к выпуску') + .replace(/\bkey features\b/gi, 'ключевые возможности') + .replace(/\benterprise-ready\b/gi, 'готовность к корпоративному использованию') + .replace(/\bAI provider\b/gi, 'провайдер ИИ') + .replace(/\bhot reloading\b/gi, 'горячая перезагрузка'); +} + +async function translateText(text) { + if (!text.trim()) { + return text; + } + if (hasCyrillic(text)) { + return text; + } + if (translationCache.has(text)) { + return translationCache.get(text); + } + + const { protectedText, tokens } = protectTerms(text); + const url = `https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=ru&dt=t&q=${encodeURIComponent(protectedText)}`; + const response = await fetch(url, { + headers: { + 'User-Agent': 'Mozilla/5.0', + }, + }); + + if (!response.ok) { + throw new Error(`Translation request failed with ${response.status}`); + } + + const payload = await response.json(); + const translated = payload[0].map((item) => item[0]).join(''); + const restored = restoreTerms(translated, tokens); + const processed = postProcessTranslation(restored); + translationCache.set(text, processed); + return processed; +} + +function splitIntoChunks(value) { + const parts = value.split(/(\n{2,})/); + const chunks = []; + + for (const part of parts) { + if (!part) { + continue; + } + if (/^\n+$/.test(part)) { + chunks.push({ type: 'separator', text: part }); + continue; + } + + if (part.length <= 1500) { + chunks.push({ type: 'text', text: part }); + continue; + } + + const lines = part.split('\n'); + let current = []; + let currentLength = 0; + + for (const line of lines) { + const nextLength = currentLength + line.length + (current.length ? 1 : 0); + if (current.length && nextLength > 1500) { + chunks.push({ type: 'text', text: current.join('\n') }); + current = [line]; + currentLength = line.length; + } else { + current.push(line); + currentLength = nextLength; + } + } + + if (current.length) { + chunks.push({ type: 'text', text: current.join('\n') }); + } + } + + return chunks; +} + +async function translateMultiline(value) { + const chunks = splitIntoChunks(value); + const translatedChunks = []; + + for (const chunk of chunks) { + if (chunk.type === 'separator' || !chunk.text.trim()) { + translatedChunks.push(chunk.text); + continue; + } + translatedChunks.push(await translateText(chunk.text)); + } + + return translatedChunks.join(''); +} + +function quoteSingle(text) { + return `'${text.replace(/'/g, "''")}'`; +} + +function formatField(key, style, value) { + if (style === '>' || style === '>-' || style === '|' || style === '|-') { + return [`${key}: ${style}`, ...value.split('\n').map((line) => ` ${line}`)].join('\n'); + } + if (style === 'double-quoted') { + return `${key}: ${JSON.stringify(value)}`; + } + if (style === 'single-quoted') { + return `${key}: ${quoteSingle(value)}`; + } + if (/^[\p{L}\p{N} .,!?:;()\-\/]+$/u.test(value)) { + return `${key}: ${value}`; + } + return `${key}: ${JSON.stringify(value)}`; +} + +async function processManifest(filePath) { + const source = fs.readFileSync(filePath, 'utf8').replace(/\r\n/g, '\n'); + const lines = source.split('\n'); + const replacements = []; + + for (const field of targetFields) { + const parsed = parseTopLevelField(source, field); + if (!parsed || hasCyrillic(parsed.value)) { + continue; + } + const translated = await translateMultiline(parsed.value); + replacements.push({ ...parsed, field, translated }); + } + + if (!replacements.length) { + return false; + } + + replacements.sort((left, right) => right.startIndex - left.startIndex); + for (const replacement of replacements) { + const rendered = formatField(replacement.field, replacement.style, replacement.translated).split('\n'); + lines.splice(replacement.startIndex, replacement.endIndex - replacement.startIndex, ...rendered); + } + + fs.writeFileSync(filePath, lines.join('\n')); + return true; +} + +async function main() { + const files = listManifestFiles(workspaceRoot); + let changedCount = 0; + + for (const filePath of files) { + const changed = await processManifest(filePath); + if (changed) { + changedCount += 1; + console.log(`translated ${path.relative(workspaceRoot, filePath)}`); + } + } + + console.log(`updated manifests: ${changedCount}`); +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); \ No newline at end of file diff --git a/torbrowser/config/.gitkeep b/torbrowser/config/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/torbrowser/config/.gitkeep @@ -0,0 +1 @@ + diff --git a/torbrowser/dfwebos-app.yml b/torbrowser/dfwebos-app.yml new file mode 100644 index 0000000..150dda1 --- /dev/null +++ b/torbrowser/dfwebos-app.yml @@ -0,0 +1,43 @@ +manifestVersion: 1 +id: torbrowser +name: Tor Browser +tagline: Невидимый щит для вашего просмотра +category: networking +version: "15.0.1" +port: 5832 +description: >- + 🧅 Браузер Tor — мощный инструмент, предназначенный для обеспечения анонимного, безопасного и частного доступа в Интернет. Браузер Tor, созданный на основе Mozilla Firefox и оптимизированный для обеспечения конфиденциальности, использует сеть Tor (луковый маршрутизатор) для защиты личности и местоположения пользователей путем шифрования и ретрансляции их интернет-трафика через несколько узлов по всему миру. Этот процесс, известный как «луковая маршрутизация», скрывает IP-адреса пользователей, в результате чего веб-сайтам, рекламодателям или организациям наблюдения чрезвычайно сложно отслеживать действия в Интернете или определять местоположение. + + + Для тех, кто ценит конфиденциальность или сталкивается с ограниченной интернет-средой, браузер Tor предлагает ключевые функции конфиденциальности. Он блокирует файлы cookie, трекеры и технологии снятия отпечатков пальцев, которые обычно отслеживают пользователей на веб-сайтах, а также автоматически очищает историю просмотров и файлы cookie при каждом сеансе. Это обеспечивает высокую степень анонимности и защищает от сбора данных способами, недоступными стандартным браузерам. + + + Помимо повышенной конфиденциальности, браузер Tor обеспечивает неограниченный доступ к открытой сети, позволяя пользователям обходить местную цензуру и получать доступ к контенту, который в противном случае может быть заблокирован в определенных регионах или сетях. Хотя некоторые компромиссы включают немного более низкую скорость просмотра из-за многоузловой маршрутизации, браузер Tor является одним из наиболее эффективных инструментов для безопасного доступа в Интернет без цензуры. Оно дает пользователям возможность свободно и уверенно пользоваться Интернетом, обеспечивая более безопасный и конфиденциальный опыт работы в Интернете. + + + ℹ️ Для Raspberry Pi и других устройств ARM используйте старый неофициальный порт сообщества (версия 13.0.9), поскольку проект Tor в настоящее время не предоставляет официального выпуска. +developer: The Tor Project +website: https://www.torproject.org/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/1928 +repo: https://github.com/torproject/tor +support: https://support.torproject.org/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + ℹ️ Устройства Raspberry Pi/ARM продолжают использовать неофициальный порт сообщества 13.0.9, поскольку официальная версия проекта Tor недоступна. + + + Этот выпуск включает в себя несколько новых функций и улучшений: + + - Перебазирован на Firefox ESR 140.5.0 с исправлениями безопасности из Firefox 145. + - Обновлен NoScript 13.4 и добавлена опция поиска DuckDuckGo «No ИИ». + - Исправлен порядок в поисковых системах и восстановлено стабильное поведение масштабирования. + - Исправлены отсутствующие уведомления об обновлении на настольных платформах. + - Восстановлены шрифты Noto CJK и решены проблемы с рендерингом текста в Linux. + - Обновлен GeckoView 140.5.0esr и исправлены задания обновления расширений Android. + - Улучшенная система сборки с восстановленной версией экспертного пакета и обновлением Go 1.24.10. +dependencies: [] +path: "" diff --git a/torbrowser/docker-compose.yml b/torbrowser/docker-compose.yml new file mode 100644 index 0000000..ee2c12a --- /dev/null +++ b/torbrowser/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: torbrowser_web_1 + APP_PORT: 5800 + web: + image: dennysubke/torbrowser:15.0.1@sha256:81269f7ec6494e5d7d4fc88391256bfb311165bb1d18124984ada296268c6962 + restart: on-failure + environment: + - DARK_MODE=1 + - WEB_AUDIO=1 + volumes: + - ${APP_DATA_DIR}/config:/config diff --git a/torq/data/passwd b/torq/data/passwd new file mode 100644 index 0000000..3bf07a1 --- /dev/null +++ b/torq/data/passwd @@ -0,0 +1 @@ +user:x:1000:1000:,,,:/tmp:/bin/bash \ No newline at end of file diff --git a/torq/data/torq/.gitkeep b/torq/data/torq/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/torq/dfwebos-app.yml b/torq/dfwebos-app.yml new file mode 100644 index 0000000..c6ed8ba --- /dev/null +++ b/torq/dfwebos-app.yml @@ -0,0 +1,77 @@ +manifestVersion: 1 +id: torq +category: bitcoin +name: Torq +version: "v2.2.2" +tagline: Масштабируемое программное обеспечение для управления узлами +description: >- + Эксплуатация узла Lightning требует много работы. Вам необходимо следить за своими каналами, балансировать их, отслеживать комиссии и многое другое. + + + С Torq вы можете собирать и анализировать свои данные с помощью все более совершенных инструментов. + + + Функции: + + - Усовершенствованный механизм принятия решений для автоматизации. Создайте свою собственную логику визуально с помощью рабочих процессов. + + - Уведомления через Telegram, Discord и Slack (с расширенной логикой и шаблонами) + + - Быстро даже при более чем 1000 каналах. + + - Расширенные диаграммы и визуализация агрегированной статистики пересылки. + + - Управление несколькими узлами одновременно. + + - Фильтровать, сортировать и группировать данные + + - Хранит все события с вашего узла, включая события HTLC, изменения ставок комиссии и события включения/отключения канала. + + - Сохраняйте пользовательские конфигурации представлений таблиц для быстрого поиска нужной информации. + + - Извлечение и анализ данных в любой момент времени + + - Перемещайтесь по времени (дни, недели, месяцы), чтобы отслеживать свой прогресс. + + - Помечайте каналы и узлы специальными метками (Обмен, Узел маршрутизации, Приемник, Источник или что-нибудь еще). +developer: Torq +website: https://torq.co +dependencies: + - lightning +repo: "" +support: https://github.com/lncapital/torq/issues/new +port: 7028 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Основные моменты: + - Группировка дескрипторов узла Torq API + - Возможность создания иерархии узлов, которые используются в Torq API. + - Например: в первую очередь используйте узел A, но если он недоступен, используйте узел B. Или: используйте узел A 70% времени и узел B 30% времени. + - Порог простоя импорта данных узла. + — Настраиваемый порог для запуска событий и импорта данных узла в зависимости от того, как долго Torq был отключен. + - Например: существует рабочий процесс, который настроен на срабатывание при «Оплате». Затем на узле произошла оплата, пока Torq не работал. Если Torq снизился меньше установленного порога, рабочий процесс **запускается** при запуске Torq, а если Torq снизился дольше порогового значения, рабочий процесс **не запускается**. + - Возможность добавлять/удалять теги через меню «Теги» -> «Управление». + - Показать историю тегов на странице «Проверка канала». + - Исправлены ошибки и незначительные улучшения: + - Статус узла Bitcoind теперь отображается в «модальном окне статуса». + - Исправлен фильтр «последнее изменение баланса» и сделана сортировка столбцов по «последнему изменению баланса». + - Исправлена ошибка при обновлении сведений о подключении узла CLN. + - Упорядоченный список тегов на странице «Теги» в алфавитном порядке. + - Исправлен счет Bolt11, не работающий в Signet. + - Более точный «неподтвержденный» баланс на узле bitcoind. + - параметр mempool-url conf теперь позволяет использовать косую черту в конце + - Исправлена ошибка интерфейс, приводившая к ошибке в интерфейс при осуществлении внутрисетевого платежа. + - Текст «Связаться со службой поддержки» в нижнем колонтитуле теперь доступен для кликов и открывает окно чата поддержки.- В более ранней версии была добавлена ​​внутренняя таблица «попыток платежа», которая сохраняет каждую попытку платежа, даже если узел, с помощью которого можно совершить платеж, недоступен. Это может слишком сильно раздуть базу данных, если платежей будет много. В этом выпуске добавлен новый параметр для установки количества дней, в течение которых они хранятся перед удалением из базы данных (если ноль, удаляются через 1 час). + - Исправлен CLN, показывающий удвоенный баланс, когда транзакция внутри сети не подтверждена. + - Исправлено состояние гонки в кэше баланса канала LND, которое могло привести к сбою Torq. + - Исправлены ошибки, из-за которых в некоторых случаях баланс канала не обновлялся, а «общий локальный баланс однорангового канала» не обновлялся. +path: "" +defaultUsername: "" +deterministicPassword: false +submitter: Torq +submission: https://github.com/getumbrel/dfwebos-apps/pull/549 diff --git a/torq/docker-compose.yml b/torq/docker-compose.yml new file mode 100644 index 0000000..a3c0928 --- /dev/null +++ b/torq/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: torq_web_1 + APP_PORT: 7028 + + web: + image: lncapital/torq:2.2.2@sha256:28cfac8c81f92e7d4e021a780b2d3f2dc766a37c7ebeef68f6105f682f3b196f + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + command: + - --torq.port + - "7028" + - --db.host + - torq_db_1 + - --db.password + - moneyprintergobrrr + - --torq.password + - ${APP_PASSWORD} + - --lnd.url + - ${APP_LIGHTNING_NODE_IP}:${APP_LIGHTNING_NODE_GRPC_PORT} + - --lnd.macaroon-path + - /lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/admin.macaroon + - --lnd.tls-path + - /lnd/tls.cert + - --torq.auto-login + - start + + db: + image: timescale/timescaledb:2.8.1-pg14@sha256:96c3a5587a24bb336437403b394f5927f639322cf3fcc0eff4ee0294da540dd7 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + environment: + POSTGRES_PASSWORD: moneyprintergobrrr + volumes: + - ${APP_DATA_DIR}/data/torq:/var/lib/postgresql/data + - ${APP_DATA_DIR}/data/passwd:/etc/passwd:ro # Enables postgres to init on user 1000 diff --git a/toshi-moto/data/db/diagnostic.data/.gitkeep b/toshi-moto/data/db/diagnostic.data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/toshi-moto/data/db/journal/.gitkeep b/toshi-moto/data/db/journal/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/toshi-moto/data/proxy/nginx.conf b/toshi-moto/data/proxy/nginx.conf new file mode 100644 index 0000000..16dbe12 --- /dev/null +++ b/toshi-moto/data/proxy/nginx.conf @@ -0,0 +1,36 @@ +proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g + inactive=60m use_temp_path=off; + +log_format cache '$remote_addr - $remote_user [$time_local] ' + '"$request" $status $body_bytes_sent ' + '"$http_referer" "$http_user_agent" ' + 'Cache: $upstream_cache_status'; +server { + listen 8021; + + + location /sw.js { + root /usr/share/nginx/html; + add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0"; + add_header Pragma "no-cache"; + add_header Expires "0"; + + # Отправьте файл с правильным типом MIME для сервисных работников. + default_type application/javascript; + try_files $uri =404; + } + + location /api/ { + proxy_pass http://toshi-moto_api_web_1:8121/api/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html =404; + + } +} diff --git a/toshi-moto/data/server-logs/.gitkeep b/toshi-moto/data/server-logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/toshi-moto/dfwebos-app.yml b/toshi-moto/dfwebos-app.yml new file mode 100644 index 0000000..b85c192 --- /dev/null +++ b/toshi-moto/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1.1 +id: toshi-moto +category: finance +name: Toshi Moto +version: "1.37.1" +website: https://toshimoto.app +tagline: Безопасный мониторинг портфеля Bitcoin с дизайном, ориентированным на конфиденциальность +description: >- + Toshi Moto — это кошелек Bitcoin, предназначенный только для просмотра, предназначенный для безопасного мониторинга портфеля и отслеживания транзакций. + + + Ключевые особенности: + + - Импортируйте свой расширенный открытый ключ (Xpub) для одновременного мониторинга нескольких адресов Bitcoin. + + - Агрегация баланса в реальном времени по всем вашим кошелькам и адресам + + - Полная история транзакций и возможности мониторинга. + + - Конфиденциальность: все данные остаются локальными в вашем браузере - никакая конфиденциальная информация не передается на серверы. + + - Безопасность только для чтения: невозможно проводить или подписывать транзакции, обеспечивая безопасность ваших средств. + + + Идеально подходит для энтузиастов Bitcoin, которые хотят надежно контролировать свои активы без ущерба для конфиденциальности и безопасности. +developer: Toshi Moto +dependencies: + - bitcoin + - mempool +repo: https://github.com/toshimoto821/toshi-moto +support: https://github.com/toshimoto821/toshi-moto +port: 8021 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +releaseNotes: >- + Это обновление toshi-moto содержит следующие изменения: + - добавляет поддержку автономных адресов (ручные кошельки без xpubs) + + + Полные изменения можно найти здесь: https://github.com/toshimoto821/toshi-moto/compare/web-ui-1.36.1...web-ui-1.37.1. +defaultUsername: "" +deterministicPassword: false +submitter: Toshi Moto +submission: https://github.com/getumbrel/dfwebos-apps/pull/3203 diff --git a/toshi-moto/docker-compose.yml b/toshi-moto/docker-compose.yml new file mode 100644 index 0000000..c75fa79 --- /dev/null +++ b/toshi-moto/docker-compose.yml @@ -0,0 +1,39 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: toshi-moto_web_1 + APP_PORT: 8021 + PROXY_AUTH_ADD: "false" + + api_web: + image: toshimoto821/toshi-moto-api:1.8.4@sha256:750927ef2d0b0bbcffcbb57632d861e567a8b7243381c0285b2b2660dc31244a + restart: on-failure + stop_grace_period: 1m + user: 1000:1000 + depends_on: + - mongodb + environment: + PORT: 8121 + MONGODB_URI: "mongodb://toshi-moto_mongodb_1:27017/toshi-moto" + + web: + image: toshimoto821/toshi-moto:1.37.1@sha256:c4317ae166e7d4fd57acb5822f44cf2edaef71f5bf032ca0c866b8a12c71a470 + restart: on-failure + user: 1000:1000 + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/proxy/nginx.conf:/etc/nginx/conf.d/default.conf:ro + depends_on: + - api_web + environment: + PORT: 8021 + + mongodb: + image: mongo:8.0.10@sha256:15fb53a5160ebabff5ecade8f8b5d48721b68ea190957a7f35b5b38e8340e62b + stop_grace_period: 1m + user: 1000:1000 + command: mongod --noauth + volumes: + - ${APP_DATA_DIR}/data/db:/data/db diff --git a/transmission/data/config/.gitkeep b/transmission/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/transmission/dfwebos-app.yml b/transmission/dfwebos-app.yml new file mode 100644 index 0000000..5aa3de4 --- /dev/null +++ b/transmission/dfwebos-app.yml @@ -0,0 +1,91 @@ +manifestVersion: 1 +id: transmission +category: networking +name: Transmission +version: "4.1.1" +tagline: Быстрый, простой и бесплатный клиент BitTorrent. +description: >- + Transmission создан для простого и эффективного использования. Мы установили настройки по умолчанию, чтобы они просто работали, и для настройки расширенных функций, таких как каталоги просмотра, черные списки плохих одноранговых узлов и веб-интерфейс, требуется всего несколько щелчков мышью. Когда Ubuntu выбрала Transmission в качестве клиента BitTorrent по умолчанию, одной из наиболее часто упоминаемых причин была простота обучения. + + + Transmission имеет одно из самых низких требований к памяти и ресурсам среди всех крупных клиентов BitTorrent. Небольшие накладные расходы Transmission — одна из причин, почему он так хорошо подходит для домашних NAS и медиа-серверов. Transmission, используемый Western Digital, Zyxel и Belkin, обеспечивает поистине впечатляющую производительность практически на любом совместимом оборудовании. + + + Transmission — это проект с открытым исходным кодом, основанный на волонтерах. В отличие от некоторых клиентов BitTorrent, Transmission не играет со своими пользователями в игры с целью заработать деньги. + + + Мы не объединяем панели инструментов, всплывающие окна, флэш-рекламу, инструменты Твиттера или что-либо еще. Он не ограничивает некоторые функции платной версии. Мы не отслеживаем наших пользователей. На нашем сайте и форумах нет сторонней рекламы или аналитики. + + + ⚠️ Transmission скачивает торренты через Clearnet, а не Tor. +developer: Transmission +website: https://transmissionbt.com/ +dependencies: [] +repo: https://github.com/transmission/transmission +support: https://github.com/transmission/transmission/issues +port: 9091 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "/transmission/web/" +defaultUsername: "" +defaultPassword: "" +torOnly: false +releaseNotes: >- + Этот выпуск исправлений исправляет более 20 ошибок и включает улучшения производительности: + - Исправлен порядок очереди торрентов, который иногда терялся между сеансами. + - Исправлен сбой при одновременной приостановке торрента и редактировании его списка трекеров. + - Исправлен сбой на устройствах Arm32. + - Исправлено изменение RPC, которое нарушало работу некоторых сторонних клиентов, возвращая неправильные типы чисел для полей ограничения скорости. + - Исправлен зависающий пользовательский интерфейс при высокой загрузке полосы пропускания. + - Улучшен алгоритм сетевого трафика для более равномерного распределения пропускной способности между узлами. + - Исправлены неработающие значки в списке торрентов в Windows. + - Исправлены магнитные ссылки, которые нельзя было добавить из диалогового окна «Добавить URL» в GTK. + - Исправлены неработающие сочетания клавиш при сборке с помощью GTK3. + - Исправлен неправильный режим шифрования, отображаемый в диалоговом окне настроек GTK. + - Отменено изменение веб-клиента, в результате которого были объединены диалоговые окна подтверждения «Удалить торрент» и «Удалить торрент». + + + Полные примечания к выпуску доступны по адресу https://github.com/transmission/transmission/releases. +permissions: + - STORAGE_DOWNLOADS +widgets: + - id: "status" + type: "four-stats" + refresh: "5s" + endpoint: "widget-server:80/widgets/status" + link: "" + example: + type: "four-stats" + link: "" + items: + - title: "Downloading" + text: "3" + subtext: "torrents" + - title: "Seeding" + text: "1" + subtext: "torrents" + - title: "Stopped" + text: "0" + subtext: "torrents" + - title: "Queued" + text: "2" + subtext: "torrents" + - id: "torrent-list" + type: "list" + refresh: "2s" + endpoint: "widget-server:80/widgets/torrent-list" + link: "" + example: + type: "list" + link: "" + items: + - text: "33% • Ubuntu 22.04.3 amd64 ISO image" + subtext: "↓4.4Mbps ↑1.2Mbps" + - text: "100% • Ubuntu 21.1.0 amd64 ISO image" + subtext: "↓0Mbps ↑78Kbps" + - text: "100% • Debian 11.0 amd64 ISO image" + subtext: "↓0Mbps ↑827Kbps" +submitter: DFWebOS +submission: https://github.com/getumbrel/dfwebos-apps/commit/60878f278d544b204d8e7c96240c797f43a9b319 diff --git a/transmission/docker-compose.yml b/transmission/docker-compose.yml new file mode 100644 index 0000000..d3a9bf4 --- /dev/null +++ b/transmission/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: transmission_server_1 + APP_PORT: 9091 + + server: + image: linuxserver/transmission:4.1.1@sha256:d2183a00bbd5dbb083b14dcd65419379bfd91e0965b52849642354ec3d246452 + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${DFWEBOS_ROOT}/data/storage/downloads:/downloads + ports: + - 51413:51413 + - 51413:51413/udp + restart: on-failure + + widget-server: + image: getumbrel/umbrel-transmission-widget-server:v1.0.0@sha256:0ee30f1eecbf6f4f3f62e3f6d5c1626bd31d15ace7e97cacff5fc091836650cf + environment: + - TRANSMISSION_URL=http://transmission_server_1 + - TRANSMISSION_PORT=9091 + restart: on-failure diff --git a/trilium-notes/data/.gitkeep b/trilium-notes/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/trilium-notes/dfwebos-app.yml b/trilium-notes/dfwebos-app.yml new file mode 100644 index 0000000..ef43055 --- /dev/null +++ b/trilium-notes/dfwebos-app.yml @@ -0,0 +1,77 @@ +manifestVersion: 1 +id: trilium-notes +category: files +name: Trilium Notes +version: "v0.102.2" +tagline: Создайте свою личную базу знаний с помощью Trilium Notes. +description: >- + Функции + + + - Заметки могут быть организованы в дерево произвольной глубины. Одну заметку можно разместить в нескольких местах дерева (см. клонирование). + + - Богатое редактирование заметок WYSIWYG, включая, например. таблицы, изображения и математические вычисления с автоформатом уценки + + - Поддержка редактирования заметок с исходным кодом, включая подсветку синтаксиса. + + - Быстрая и простая навигация между заметками, полнотекстовый поиск и подъем заметок. + + - Бесшовное управление версиями заметок + + - Атрибуты заметок можно использовать для организации заметок, выполнения запросов и расширенных сценариев. + + - Синхронизация с локальным сервером синхронизации (есть сторонняя служба для размещения сервера синхронизации) + + - Обмен (публикация) заметок в общедоступном Интернете. + + - Надежное шифрование заметок с детализацией для каждой заметки. + + - Создание эскизов схем с помощью встроенного Excalidraw (тип заметки «холст») + + - Карты отношений и карты ссылок для визуализации заметок и их отношений. + + - Скрипты - см. Расширенные витрины. + + - REST API для автоматизации + + - Хорошо масштабируется как по удобству использования, так и по производительности до 100 000 заметок. + + - Сенсорный оптимизированный мобильный интерфейс для смартфонов и планшетов. + + - Ночная тема + + - Импорт и экспорт Evernote и Markdown + + - Web Clipper для удобного сохранения веб-контента. +developer: TriliumNext +website: https://github.com/TriliumNext +dependencies: [] +repo: https://github.com/TriliumNext/Trilium +support: https://github.com/TriliumNext/Trilium/wiki +port: 3779 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: /#root +defaultUsername: "" +defaultPassword: "" +torOnly: false +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/199 +releaseNotes: >- + 🚨 Этот выпуск содержит важные исправления безопасности. Всем пользователям настоятельно рекомендуется немедленно обновиться. + + + Улучшения безопасности в версии 0.102.2: + - Улучшена обработка содержимого SVG в общих маршрутах и основном API. + - Улучшен рендеринг контента в редакторе диаграмм Mermaid. + - Исправлены всплывающие уведомления для правильного экранирования содержимого. + - Добавлена проверка атрибутов имени документа. + - Добавлена проверка типа MIME для загрузки изображений через API. + - При импорте больше не сохраняются идентификаторы именованных заметок во избежание потенциальных конфликтов. + - OpenID Connect теперь использует более безопасный генератор случайных чисел. + + + Полные примечания к выпуску доступны по адресу https://github.com/TriliumNext/Trilium/releases. \ No newline at end of file diff --git a/trilium-notes/docker-compose.yml b/trilium-notes/docker-compose.yml new file mode 100644 index 0000000..a6a19f8 --- /dev/null +++ b/trilium-notes/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: trilium-notes_server_1 + APP_PORT: 8080 + PROXY_AUTH_WHITELIST: "/api/*" + + server: + image: triliumnext/trilium:v0.102.2@sha256:f1a2fd88e7032d60f863231ce94348e906bcd6a5fa043801badd5896c20c064d + restart: on-failure + environment: + - TRILIUM_DATA_DIR=/data + volumes: + - ${APP_DATA_DIR}/data:/data diff --git a/trip/data/app/.gitkeep b/trip/data/app/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/trip/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/trip/dfwebos-app.yml b/trip/dfwebos-app.yml new file mode 100644 index 0000000..5efe287 --- /dev/null +++ b/trip/dfwebos-app.yml @@ -0,0 +1,46 @@ +manifestVersion: 1 +id: trip +name: Trip +tagline: Минималистичный трекер карт и планировщик поездок +category: files +version: "1.43.2" +port: 8980 +description: >- + 🗺️ TRIP — это автономный минималистичный трекер карт и планировщик поездок, позволяющий визуализировать ваши достопримечательности (POI) и систематизировать детали вашего следующего приключения. + + + Основные характеристики: + - Составляйте карту и управляйте POI на интерактивных картах. + - Планируйте многодневные поездки с подробными маршрутами. + - Сотрудничать и делиться с попутчиками + + + Никакой телеметрии. Никакого отслеживания. Никакой рекламы. Бесплатно, навсегда. +developer: itskovacs +website: https://itskovacs-trip.netlify.app/ +repo: https://github.com/itskovacs/trip +support: https://github.com/itskovacs/trip/issues +submitter: itskovacs +submission: https://github.com/getumbrel/dfwebos-apps/pull/3830 +releaseNotes: >- + Новые возможности: + - Автоматизированное создание и развертывание документации. + + Улучшения интерфейс/UX: + - Исправлены проблемы с синхронизацией общих поездок. + + Исправления ошибок: + - Исправлена ошибка неизвестной категории API. + + + Полные примечания к выпуску можно найти по адресу https://github.com/itskovacs/trip/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg diff --git a/trip/docker-compose.yml b/trip/docker-compose.yml new file mode 100644 index 0000000..7a90372 --- /dev/null +++ b/trip/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: trip_app_1 + APP_PORT: 8000 + + app: + image: ghcr.io/itskovacs/trip:1.43.2@sha256:9e63c48d8c11b681d67e1a4178ca9b1818a2aba53e8541df30fcd8bdb40c3ad5 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/app:/app/storage + command: ["fastapi", "run", "/app/trip/main.py", "--host", "0.0.0.0"] diff --git a/tubearchivist/data/cache/.gitkeep b/tubearchivist/data/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tubearchivist/data/elasticsearch/.gitkeep b/tubearchivist/data/elasticsearch/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tubearchivist/data/media/.gitkeep b/tubearchivist/data/media/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tubearchivist/data/redis/.gitkeep b/tubearchivist/data/redis/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tubearchivist/dfwebos-app.yml b/tubearchivist/dfwebos-app.yml new file mode 100644 index 0000000..054bf5c --- /dev/null +++ b/tubearchivist/dfwebos-app.yml @@ -0,0 +1,48 @@ +manifestVersion: 1 +id: tubearchivist +category: media +name: Tube Archivist +version: "0.5.10" +tagline: Самостоятельный медиа-сервер YouTube +description: >- + Как только ваша коллекция видео YouTube вырастет, станет сложно искать конкретное видео. + Вот тут-то и приходит на помощь Tube Archivist: индексируя свою коллекцию видео с метаданными из YouTube, вы можете организовывать, искать и наслаждаться заархивированными видео YouTube без проблем в автономном режиме через удобный веб-интерфейс. + + + Основная функциональность включает в себя: + - Подпишитесь на любимые каналы YouTube. + - Загрузите видео с помощью yt-dlp. + - Индексируйте и делайте видео доступными для поиска. + - Воспроизведение видео + - Следите за просмотренными и непросмотренными видео +backupIgnore: + - data/cache + - data/redis +developer: tubearchivist +website: https://www.tubearchivist.com/ +dependencies: [] +repo: https://github.com/tubearchivist/tubearchivist +support: https://github.com/tubearchivist/tubearchivist/issues +port: 8079 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "admin" +deterministicPassword: true +torOnly: false +submitter: Kanishk Pachauri +submission: https://github.com/getumbrel/dfwebos-apps/pull/3944 +releaseNotes: >- + В этом выпуске исправлены и улучшены Tube Archivist: + - Поддержка загрузки секретов из файлов + - Улучшен процесс повторной загрузки для лучшего сохранения метаданных. + - Улучшена обработка ошибок для обнаружения ботов во время загрузок. + - Исправлено удаление видео из плейлистов при рассинхронизации. + - Исправлены ошибки внедрения метаданных в пустых описаниях. + - Улучшена совместимость с Elasticsearch 9. + - Различные улучшения и исправления поставщиков токенов PO. + + + Полные примечания к выпуску можно найти по адресу https://github.com/tubearchivist/tubearchivist/releases. \ No newline at end of file diff --git a/tubearchivist/docker-compose.yml b/tubearchivist/docker-compose.yml new file mode 100644 index 0000000..dcb5668 --- /dev/null +++ b/tubearchivist/docker-compose.yml @@ -0,0 +1,53 @@ +version: '3.7' +services: + app_proxy: + environment: + APP_HOST: tubearchivist_server_1 + APP_PORT: 8000 + PROXY_AUTH_ADD: "false" + + server: + image: bbilly1/tubearchivist:v0.5.10@sha256:dfe723cf008520e1758ecc3e59e6ea8761dd10d5bb099cd87289e80f5bd66567 + volumes: + - ${APP_DATA_DIR}/data/media:/youtube + - ${APP_DATA_DIR}/data/cache:/cache + environment: + - ES_URL=http://tubearchivist_elasticsearch_1:9200 + - REDIS_CON=redis://tubearchivist_redis_1:6379 + - HOST_UID=1000 + - HOST_GID=1000 + - TA_HOST=http://${DEVICE_DOMAIN_NAME}:8079 + - TA_USERNAME=admin + - TA_PASSWORD=${APP_PASSWORD} + - ELASTIC_PASSWORD=verysecret + - TZ=UTC + restart: on-failure + depends_on: + - elasticsearch + - redis + + redis: + image: redis:8.2.2-bookworm@sha256:4521b581dbddea6e7d81f8fe95ede93f5648aaa66a9dacd581611bf6fe7527bd + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data + depends_on: + - elasticsearch + + elasticsearch: + image: elasticsearch:8.19.6@sha256:e2d7e20893ad820bcad241bf47b89958787f6b38225478dfe100b66937840b0f + user: "1000:1000" + restart: on-failure + environment: + - "ELASTIC_PASSWORD=verysecret" + - "ES_JAVA_OPTS=-Xms1g -Xmx1g" + - "xpack.security.enabled=true" + - "discovery.type=single-node" + - "path.repo=/usr/share/elasticsearch/data/snapshot" + ulimits: + memlock: + soft: -1 + hard: -1 + volumes: + - ${APP_DATA_DIR}/data/elasticsearch:/usr/share/elasticsearch/data diff --git a/twenty/data/db-data/.gitkeep b/twenty/data/db-data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/twenty/data/db-data/.gitkeep @@ -0,0 +1 @@ + diff --git a/twenty/data/docker-data/.gitkeep b/twenty/data/docker-data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/twenty/data/docker-data/.gitkeep @@ -0,0 +1 @@ + diff --git a/twenty/data/redis/.gitkeep b/twenty/data/redis/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/twenty/data/redis/.gitkeep @@ -0,0 +1 @@ + diff --git a/twenty/data/server-local-data/.gitkeep b/twenty/data/server-local-data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/twenty/data/server-local-data/.gitkeep @@ -0,0 +1 @@ + diff --git a/twenty/dfwebos-app.yml b/twenty/dfwebos-app.yml new file mode 100644 index 0000000..be149e3 --- /dev/null +++ b/twenty/dfwebos-app.yml @@ -0,0 +1,59 @@ +manifestVersion: 1.1 +id: twenty +name: Twenty +tagline: Адаптируемое CRM-решение для бесперебойной совместной работы и роста команды. +category: files +version: "1.20.0" +port: 2020 +description: >- + Twenty — это ведущая CRM с открытым исходным кодом, созданная сообществом из сотен участников для удовлетворения уникальных потребностей вашего бизнеса. Разработанный для обеспечения гибкости, он помогает предприятиям любого размера эффективно управлять взаимоотношениями с клиентами и оптимизировать рабочие процессы. + + + С Twenty вы можете легко управлять данными клиентов через систему управления контактами. Вы можете создавать настраиваемые объекты и поля для сбора информации, специфичной для ваших бизнес-операций, гарантируя, что ваша CRM будет адаптирована к вашим потребностям. Платформа предлагает как канбан, так и табличное представление, что позволяет вам визуализировать рабочий процесс и управлять проектами так, как лучше всего подходит вашей команде. + + + Он также имеет визуализацию конвейера, которая дает вам четкое представление о ваших процессах и помогает отслеживать воронку продаж. Интеграция электронной почты — еще одна ценная функция, позволяющая просматривать электронные письма, относящиеся к конкретному клиенту или компании, непосредственно в вашем рабочем пространстве. Эта интеграция гарантирует, что ваша команда сможет эффективно сотрудничать, не покидая платформу. + + + К каждой записи можно легко добавлять примечания и задачи, что позволяет вашей команде документировать ключевую информацию и отслеживать взаимодействие с клиентами. Тем, кому нужна более продвинутая автоматизация, Twenty предлагает поддержку API и Webhook, упрощающую подключение к другим приложениям и автоматизацию рабочих процессов. + + + Преимущества использования Twenty включают улучшенную организацию, упрощенное общение, лучшее управление данными и улучшенное сотрудничество внутри вашей команды. Гибкость и возможности настройки также гарантируют, что Twenty сможет адаптироваться по мере роста и изменений вашего бизнеса. + + + ⚠️ Приложение Twenty CRM не поставляется с предварительно настроенными поставщиками электронной почты или календаря. Чтобы использовать такие службы, как Gmail или Microsoft Outlook, вам необходимо создать свои собственные учетные данные OAuth и добавить их в настройках в разделе **Другое/Панель администратора/Переменные конфигурации**. Поставщики появятся в интерфейсе только после установки действительных учетных данных. + + + Подробную инструкцию по настройке вы можете найти здесь: https://twenty.com/developers/section/self-hosting/setup#for-gmail-and-google-calendar +backupIgnore: + - data/redis/* +developer: Twenty.com PBC +website: https://twenty.com/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2484 +repo: https://github.com/twentyhq/twenty +support: https://github.com/twentyhq/twenty/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + В этом выпуске представлены улучшения в навигации, ИИ, рабочих процессах, макетах записей и безопасности: + - Изменение порядка перетаскивания навигационной панели с анимированной боковой панелью и улучшенное управление пунктами меню. + - Улучшения чата ИИ, включая поддержку возобновляемого потока, сохранение черновиков сообщений, редизайн композитора и новые настройки модели ИИ. + - Улучшения рабочего процесса, включая пропуск итератора при сбое, шаг формы с множественным выбором, улучшенные метрики и различные исправления ошибок. + - Улучшения макета страницы записи, включая редактирование вкладок, миграцию виджетов полей на серверную часть, группу скрытых полей и поддержку объединения записей. + - OAuth 2.0 Динамическая регистрация клиентов (RFC 7591) и унифицированная регистрация приложений. + - Тип поля Rich Text теперь может создаваться пользователями. + - Улучшения безопасности, включая предотвращение XSS для конечных точек обслуживания файлов, дополнительную проверку IP-адреса SSRF и различные исправления уязвимостей зависимостей. + - Оптимизация производительности с многоуровневым кэшированием для горячих запросов к базе данных и обновление клиента Apollo v4. + - Виджет таблицы записей панели мониторинга и улучшенная обработка фильтров для удаленных полей. + - Различные исправления ошибок в навигации, просмотре доски, разрешениях и рендеринге интерфейс. + + + Полные примечания к выпуску можно найти по адресу https://github.com/twentyhq/twenty/releases/. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/twenty/docker-compose.yml b/twenty/docker-compose.yml new file mode 100644 index 0000000..b9e9bcd --- /dev/null +++ b/twenty/docker-compose.yml @@ -0,0 +1,76 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: twenty_server_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + server: + image: twentycrm/twenty:v1.20.0@sha256:b3120df567a73c849a7a1ae58fa4f3d7bdd5072939312be702375960ed601557 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/server-local-data:/app/packages/twenty-server/.local-storage + - ${APP_DATA_DIR}/data/docker-data:/app/docker-data + environment: + NODE_PORT: 3000 + PG_DATABASE_URL: postgres://postgres:postgres@twenty_db_1:5432/default + SERVER_URL: http://${DEVICE_DOMAIN_NAME}:2020 + REDIS_URL: redis://twenty_redis_1:6379 + APP_SECRET: 2Gn5puuVCH0SI386E9RqOqHm0hGIAyrB + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + healthcheck: + test: curl --fail http://localhost:3000/healthz + interval: 10s + timeout: 30s + retries: 10 + start_period: 120s + restart: on-failure + + worker: + image: twentycrm/twenty:v1.20.0@sha256:b3120df567a73c849a7a1ae58fa4f3d7bdd5072939312be702375960ed601557 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/server-local-data:/app/packages/twenty-server/.local-storage + command: ["yarn", "worker:prod"] + environment: + PG_DATABASE_URL: postgres://postgres:postgres@twenty_db_1:5432/default + SERVER_URL: http://${DEVICE_DOMAIN_NAME}:2020 + REDIS_URL: redis://twenty_redis_1:6379 + DISABLE_DB_MIGRATIONS: "true" + DISABLE_CRON_JOBS_REGISTRATION: "true" + APP_SECRET: 2Gn5puuVCH0SI386E9RqOqHm0hGIAyrB + depends_on: + db: + condition: service_healthy + server: + condition: service_healthy + restart: on-failure + + db: + image: postgres:16.8@sha256:74e7a26f7db1d5bbce23b4132fb4855ed0987ec9dc44f6d078ba8800892dc927 + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/db-data:/var/lib/postgresql/data + environment: + POSTGRES_DB: default + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + healthcheck: + test: pg_isready -U postgres -h localhost -d postgres + interval: 10s + timeout: 30s + retries: 10 + restart: on-failure + + redis: + image: redis:7.4.2@sha256:bd41d55aae1ecff61b2fafd0d66761223fe94a60373eb6bb781cfbb570a84079 + user: "1000:1000" + restart: on-failure + volumes: + - "${APP_DATA_DIR}/data/redis:/data" diff --git a/twenty/hooks/post-update b/twenty/hooks/post-update new file mode 100755 index 0000000..a170e83 --- /dev/null +++ b/twenty/hooks/post-update @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Очистите кеш после обновления приложения + +echo "Clearing cache for twenty." +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" run --rm server yarn command:prod cache:flush +echo "Successfully cleared the twenty cache." + +echo "Running database migrations for twenty." +"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" run --rm server yarn database:migrate:prod +echo "Successfully run database migrations for twenty." + +exit 0 diff --git a/umami/data/db/.gitkeep b/umami/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/umami/dfwebos-app.yml b/umami/dfwebos-app.yml new file mode 100644 index 0000000..455cca0 --- /dev/null +++ b/umami/dfwebos-app.yml @@ -0,0 +1,67 @@ +manifestVersion: 1 +id: umami +name: Umami +tagline: Простая, быстрая альтернатива Google Analytics, ориентированная на конфиденциальность. +category: developer +version: "3.1.0" +port: 25727 +description: >- + Расширение возможностей понимания. Сохранение конфиденциальности. + + + Umami упрощает сбор, анализ и понимание ваших веб-данных, сохраняя при этом конфиденциальность посетителей и право собственности на данные. + + + ⚠️ Примечание + + Измените пароль по умолчанию, нажав на аватар в правом верхнем углу, а затем «Профиль». + + Возможно, вам придется открыть Umami доступ в Интернет, чтобы использовать приложение по назначению на веб-сайтах. + + Самый простой способ сделать это — использовать приложение Cloudflare Tunnel из магазина приложений DFWebOS и предоставить доступ к приложению Umami, используя свой собственный домен. + + + 😌 Простота в использовании + + Umami прост в использовании и понимании, без необходимости создавать сложные отчеты. Все данные доступны с первого взгляда. + + + 💾 Владейте своими данными + + Владение данными жизненно важно для обеспечения соблюдения постоянно меняющихся законов о конфиденциальности. Будьте уверены, зная, что ваши данные находятся под вашим контролем. + + + 🔒 Соблюдайте конфиденциальность данных. + + Umami позволяет вам собирать необходимые данные, соблюдая при этом конфиденциальность ваших пользователей. Все данные анонимизируются, и никакие личные данные никогда не собираются. Баннеры cookie не требуются. +developer: Umami +website: https://umami.is +submitter: Sharknoon +submission: https://github.com/getumbrel/dfwebos-apps/pull/1083 +repo: https://github.com/umami-software/umami +support: https://github.com/umami-software/umami/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: admin +defaultPassword: umami +dependencies: [] +releaseNotes: >- + Это основной выпуск функций со множеством новых возможностей и улучшений. + + + Некоторые из ключевых моментов этого выпуска включают в себя: + - Доски: создавайте собственные информационные панели с диаграммами, таблицами и компонентами показателей на гибком холсте. + - Воспроизведение сеанса: смотрите, как реальные сеансы пользователя воспроизводятся в браузере с настраиваемой маскировкой конфиденциальности. + - Отслеживание веб-показателей: отслеживайте основные веб-показатели (LCP, INP, CLS, FCP, TTFB) из браузеров ваших посетителей. + - Переработанная страница общего доступа с полной поддержкой мобильных устройств, именованными ссылками общего доступа и параметрами отображения для каждого общего доступа. + - Логика ИЛИ, операторы регулярных выражений и поддержка множественного выбора в фильтрах, сегментах и когортах. + - UTM-фильтры и поля, доступные во всем приложении. + - Поэтапные фильтры свойств событий при создании воронки. + - Исправлены уязвимости безопасности, включая проблемы IDOR в отчетах и сегментах. + - Исправлены многочисленные ошибки, включая обработку часового пояса, нумерацию страниц, учет регистра при входе и мобильный интерфейс. + + + Полные примечания к выпуску можно найти по адресу https://github.com/umami-software/umami/releases. +path: "/dashboard" diff --git a/umami/docker-compose.yml b/umami/docker-compose.yml new file mode 100644 index 0000000..00d8214 --- /dev/null +++ b/umami/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.7" + +services: + app: + image: ghcr.io/umami-software/umami:3.1.0@sha256:e3f80c0625aad7179b49da27d475357cabb1068b8cacd9a792cfd6966888b123 + user: "1001:1001" + restart: on-failure + stop_grace_period: 1m + ports: + - 25727:3000 + environment: + DATABASE_URL: postgresql://umami:umami@umami_db_1:5432/umami + DATABASE_TYPE: postgresql + APP_SECRET: ${APP_SEED} + depends_on: + - db + + db: + image: postgres:15-alpine@sha256:8a8d55343d6fc456cb183453e3094ff140b984157b36b48f817dd581654f2aec + restart: on-failure + stop_grace_period: 1m + environment: + POSTGRES_DB: umami + POSTGRES_USER: umami + POSTGRES_PASSWORD: umami + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data diff --git a/uptime-kuma/data/.gitkeep b/uptime-kuma/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/uptime-kuma/data/uptime-kuma/.gitkeep b/uptime-kuma/data/uptime-kuma/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/uptime-kuma/dfwebos-app.yml b/uptime-kuma/dfwebos-app.yml new file mode 100644 index 0000000..ee110d5 --- /dev/null +++ b/uptime-kuma/dfwebos-app.yml @@ -0,0 +1,60 @@ +manifestVersion: 1 +id: uptime-kuma +category: networking +name: Uptime Kuma +version: "2.2.1" +tagline: Самостоятельный инструмент мониторинга времени безотказной работы +description: > + Uptime Kuma — это автономный инструмент мониторинга, такой как Uptime Robot. + + + Функции: + + + - Мониторинг времени безотказной работы для ключевого слова HTTP(s)/TCP/HTTP/Ping/DNS/Push/Steam Game Server. + + - Необычный, Реактивный, Быстрый интерфейс/UX. + + - Уведомления через Telegram, Discord, Gotify, Slack, Pushover, электронную почту (SMTP) и более 70 служб уведомлений. + + - Интервалы 20 секунд. + + - Несколько языков + + - Простая страница статуса + + - Диаграмма пинга + + - Информация о сертификате +developer: Louis Lam +website: https://uptime.kuma.pet +dependencies: [] +repo: https://github.com/louislam/uptime-kuma +support: https://github.com/louislam/uptime-kuma/issues +port: 8385 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultPassword: "" +releaseNotes: > + Новые возможности: + - Добавлен поставщик уведомлений Fluxer. + — Установите для названия процесса значение «uptime-kuma» для упрощения идентификации процесса. + + + Исправления ошибок: + - Исправлен тип возвращаемого значения isParentActive. + - Исправлен стиль ввода Fluxer и видимость ввода Discord. + - Исправлено удаление коэффициента бесперебойной работы и среднего времени ответа из метрик Prometheus. + - Восстановлена поддержка пакетов AWS и Azure, которая была ранее удалена. + + + Исправления безопасности: + - Исправлена умеренная проблема безопасности (GHSA-v832-4r73-wx5j). + + + Полные примечания к выпуску можно найти по адресу https://github.com/louislam/uptime-kuma/releases. +submitter: Philipp Haussleiter +submission: https://github.com/getumbrel/umbrel/pull/1148 diff --git a/uptime-kuma/docker-compose.yml b/uptime-kuma/docker-compose.yml new file mode 100644 index 0000000..9225919 --- /dev/null +++ b/uptime-kuma/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: uptime-kuma_server_1 + APP_PORT: 3001 + PROXY_AUTH_ADD: "false" + + server: + image: louislam/uptime-kuma:2.2.1@sha256:7337368a77873f159435de9ef09567f68c31285ed5f951dec36256c4b267ee44 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/uptime-kuma:/app/data diff --git a/urbit-bitcoin-connector/dfwebos-app.yml b/urbit-bitcoin-connector/dfwebos-app.yml new file mode 100644 index 0000000..d638aa2 --- /dev/null +++ b/urbit-bitcoin-connector/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1 +id: urbit-bitcoin-connector +category: bitcoin +name: Urbit Bitcoin Connector +version: "0.1.0" +tagline: Подключите кошелек Bitcoin вашего Urbit к узлу Bitcoin. +description: >- + В Urbit есть собственный кошелек Bitcoin, который можно подключить к полноценному + узел через посредника, называемого провайдером. Провайдеры управляют частью бэкэнда + программное обеспечение под названием %btc-provider, которое взаимодействует с полным узлом через bitcoind + и lectrs, а также специальный прокси-сервер Node Express для трансляции вызовов RPC. + между TCP и HTTP. Это приложение установит и настроит Express-прокси. + чтобы указать на полный узел Bitcoin вашего DFWebOS. Используя это, вы можете настроить + Bitcoin на корабле (даже работающем на вашем DFWebOS) и настройте его, + или другие корабли, чтобы указать на него своими кошельками. + + + Это приложение также предоставляет информационную веб-страницу с графическим интерфейсом с инструкциями по подключению вашего провайдера и кошелька Bitcoin. Веб-сайт интерфейс доступен через порт 9090. Обратите внимание: если ваш Urbit работает на вашем DFWebOS, вы должны настроить своего провайдера так, чтобы он указывал на локальный/частный IP-адрес DFWebOS (например, http://192.168.0.10:55555).). + + + Благодарность ~timluc-miptev и ~master-forwex +developer: ~sitful-hatred & ~mopfel-winrux +website: https://subject.network +dependencies: + - bitcoin + - electrs +repo: https://github.com/yapishu/urbit-bitcoin-node +support: https://github.com/yapishu/urbit-bitcoin-node +port: 9090 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +torOnly: false +submitter: ~sitful-hatred +submission: https://github.com/getumbrel/umbrel/pull/1243 +releaseNotes: "" \ No newline at end of file diff --git a/urbit-bitcoin-connector/docker-compose.yml b/urbit-bitcoin-connector/docker-compose.yml new file mode 100644 index 0000000..120f9e8 --- /dev/null +++ b/urbit-bitcoin-connector/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: $APP_URBIT_BITCOIN_CONNECTOR_IP + APP_PORT: $APP_URBIT_BITCOIN_CONNECTOR_PORT + + web: + image: matwet/urbit-btc-node:latest@sha256:930a1752684277f743d2b48a59b4b977da96423d49ed4b5076c14cd81fa5e286 + init: true + restart: on-failure + stop_grace_period: 1m + ports: + - ${APP_URBIT_BITCOIN_CONNECTOR_SERVER_PORT}:${APP_URBIT_BITCOIN_CONNECTOR_SERVER_PORT} + environment: + INTERNAL_IP: $APP_URBIT_BITCOIN_CONNECTOR_IP + ELECTRUM_IP: $APP_ELECTRS_NODE_IP + ELECTRUM_PORT: $APP_ELECTRS_NODE_PORT + BITCOIN_IP: $APP_BITCOIN_NODE_IP + BITCOIN_RPC_PORT: $APP_BITCOIN_RPC_PORT + BITCOIN_RPC_USER: $APP_BITCOIN_RPC_USER + BITCOIN_RPC_PASS: $APP_BITCOIN_RPC_PASS + BITCOIN_RPC_AUTH: $APP_BITCOIN_RPC_AUTH + networks: + default: + ipv4_address: $APP_URBIT_BITCOIN_CONNECTOR_IP diff --git a/urbit-bitcoin-connector/exports.sh b/urbit-bitcoin-connector/exports.sh new file mode 100644 index 0000000..e83522a --- /dev/null +++ b/urbit-bitcoin-connector/exports.sh @@ -0,0 +1,3 @@ +export APP_URBIT_BITCOIN_CONNECTOR_IP="10.21.21.81" +export APP_URBIT_BITCOIN_CONNECTOR_PORT="9090" +export APP_URBIT_BITCOIN_CONNECTOR_SERVER_PORT="55555" \ No newline at end of file diff --git a/urbit/dfwebos-app.yml b/urbit/dfwebos-app.yml new file mode 100644 index 0000000..ef6a29d --- /dev/null +++ b/urbit/dfwebos-app.yml @@ -0,0 +1,44 @@ +manifestVersion: 1 +id: urbit +category: networking +name: Urbit +version: "v4.3" +tagline: Запустите Urbit на своем зонтике +description: >- + Urbit — это персональный сервер для независимых личных и сетевых + вычисления. Функциональный комбинатор Nock встроен в систему Hoon. + язык программирования, используемый для реализации Arvo, детерминированной операционной системы. + система, которая обменивается данными через Ames, децентрализованную зашифрованную P2P-сеть. + + + Это приложение поможет вам загружать и управлять экземплярами Urbit на вашем DFWebOS. Он предоставляет простой графический интерфейс управления, запускает и останавливает операции, а также передает ваш +код через интерфейс. + + + Если вы заинтересованы в покупке планеты L2, оформите заказ: subject.network/buy. + + + Благодарим ~timluc-miptev, ~master-forwex, ~sipsen-pilser и ~rivpyl-sidfyl. +developer: ~mopfel-winrux & ~sitful-hatred +website: https://github.com/mopfel-winrux/urbit-dfwebos +dependencies: [] +repo: https://github.com/mopfel-winrux/urbit-dfwebos +support: https://github.com/mopfel-winrux/urbit-dfwebos/issues +port: 8090 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: /launch +defaultUsername: dfwebos +deterministicPassword: true +torOnly: false +submitter: ~mopfel-winrux +submission: https://github.com/getumbrel/umbrel/pull/1246 +releaseNotes: >- + vere-v4.3 — это второстепенная версия со следующими выделенными исправлениями и функциями: + - Среда выполнения теперь поддерживает сжатие http-ответов gzip, что значительно ускоряет работу приложения tlon. + - Сборка Windows немедленно аварийно завершала работу при получении пакета направленного обмена сообщениями из-за неправильно установленной зависимости libblake3. + - Версия lmdb, используемая vere-v4.2 и ниже, не поддерживала разреженные файлы в Windows, что приводило к увеличению размера журнала событий до 63 ГБ сразу при загрузке. + + + Полные примечания к выпуску здесь: https://github.com/urbit/vere/releases/tag/vere-v4.3. \ No newline at end of file diff --git a/urbit/docker-compose.yml b/urbit/docker-compose.yml new file mode 100644 index 0000000..7f9620b --- /dev/null +++ b/urbit/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: urbit_manager_1 + APP_PORT: 8090 + PROXY_AUTH_ADD: "false" + + manager: + image: mopfelwinrux/urbit-umbrel:v4.3@sha256:91f4ae90f4ed5721de4b9389bc13d79627b52d11d5d8afa08802088f6e65d06d + ports: + - "34343:34343" + volumes: + - ${APP_DATA_DIR}/piers:/data/piers + - ${APP_DATA_DIR}/keys:/data/keys + environment: + APP_PASSWORD: ${APP_PASSWORD} diff --git a/usocial/data/.gitkeep b/usocial/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/usocial/dfwebos-app.yml b/usocial/dfwebos-app.yml new file mode 100644 index 0000000..ef8d793 --- /dev/null +++ b/usocial/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1 +id: usocial +category: social +name: usocial +version: "0.1.7-build-1" +tagline: Читать. Слушать. Расплатитесь. +description: >- + Клиент подкастов и программа чтения каналов для вашего личного сервера. С + Lightning Поддержка сети. + + + - Простой интерфейс (минималистичный дизайн в стиле HN) + + - Опционально многопользовательский + + - Децентрализованная карма + + - Чистый код (Python/Flask/SQLite) + + - Поиск подкастов из индекса подкастов + + - Поддержка тега значения Podcasting 2.0, отправка платежей Bitcoin создателям подкастов через сеть Lightning. +developer: Ioan Bizău +website: http://usocial.me +dependencies: + - lightning +repo: https://github.com/ibz/usocial +support: https://github.com/ibz/usocial/issues +port: 8448 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: true +torOnly: false +submitter: Ioan Bizău +submission: https://github.com/getumbrel/umbrel/pull/1247 +releaseNotes: "" \ No newline at end of file diff --git a/usocial/docker-compose.yml b/usocial/docker-compose.yml new file mode 100644 index 0000000..f9e2649 --- /dev/null +++ b/usocial/docker-compose.yml @@ -0,0 +1,32 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: usocial_web_1 + APP_PORT: 5000 + + web: + image: ghcr.io/ibz/usocial:v0.1.5-buster@sha256:1b1215d7fba847bf922a2615fee6400ce61cac4545dff6bfcf9703af8e05b953 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_LIGHTNING_NODE_DATA_DIR}:/lnd:ro + - ${APP_DATA_DIR}/data:/instance + environment: + USOCIAL_JOB: "WEB" + APP_PASSWORD: "${APP_PASSWORD}" + LND_IP: "${APP_LIGHTNING_NODE_IP}" + LND_GRPC_PORT: ${APP_LIGHTNING_NODE_GRPC_PORT} + LND_DIR: "/lnd" + + fetcher: + depends_on: + - web + image: ghcr.io/ibz/usocial:v0.1.7-buster@sha256:864d0d225ed3f48060e6020abbe95355c99fb4426da3fdfb4e185581ccd0368b + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/instance + environment: + USOCIAL_JOB: "FETCH_FEEDS" diff --git a/vaultwarden/data/.gitkeep b/vaultwarden/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/vaultwarden/dfwebos-app.yml b/vaultwarden/dfwebos-app.yml new file mode 100644 index 0000000..fc372c3 --- /dev/null +++ b/vaultwarden/dfwebos-app.yml @@ -0,0 +1,69 @@ +manifestVersion: 1 +id: vaultwarden +category: files +name: Vaultwarden +version: "1.34.3" +tagline: "Неофициальный сервер, совместимый с Bitwarden®" +description: >- + Хранилище — альтернатива + реализация сервера Bitwarden® API, совместимого с + Клиенты Bitwarden®*. Vaultwarden идеально подходит для самостоятельного размещения всех + ваши пароли в зашифрованном хранилище на вашем DFWebOS. Vaultwarden — это полноценный + внедрение Bitwarden® API, которое включает в себя: + + + - Поддержка организаций + + - Вложения + + - Поддержка хранилища API + + - Обслуживание статических файлов для интерфейса Vault. + + - Иконки веб-сайта API + + - Аутентификатор и поддержка U2F + + - Поддержка YubiKey и Duo + + - Экстренный доступ + + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + Веб-интерфейс Vaultwarden недоступен через http, а это означает, что для доступа к нему для первоначальной настройки вам необходимо использовать Tor. Вот как это сделать: + + - Убедитесь, что ваш DFWebOS доступен через Tor, перейдя в «Настройки» на панели управления и переключив параметр «Удаленный доступ Tor» во включенное состояние. Вам потребуется перезагрузить DFWebOS, если удаленный доступ Tor был ранее отключен. + + - Получите доступ к своему зонту через браузер Tor, используя адрес .onion, указанный в настройках в разделе «Удаленный доступ Tor». + + - В браузере Tor откройте приложение Vaultwaden и создайте учетную запись. + + - После создания учетной записи вы можете подключиться к своему серверу Vaultwarden из любого приложения Bitwarden (мобильного, настольного, браузерного и т. д.), добавив данные IP-адреса вашего сервера. + + - Для наиболее надежного соединения из любой точки мира установите Tailscale на свой DFWebOS и ваши устройства и используйте IP-адрес Tailscale для подключения к вашему серверу Vaultwarden. + + + *Обратите внимание, что Vaultwarden не связан ни с проектом Bitwarden®, ни с 8bit Solutions LLC. При использовании этого приложения сообщайте нам о любых ошибках или предложениях напрямую, независимо от того, какие клиенты вы используете (мобильный, настольный компьютер, браузер и т. д.), и не пользуйтесь официальными каналами поддержки Bitwarden®. +releaseNotes: >- + Этот выпуск включает в себя: + - Исправлена проблема с подключением к базе данных MySQL/MariaDB при использовании изображений Alpine. + + + Полные примечания к выпуску доступны по адресу https://github.com/dani-garcia/vaultwarden/releases. +developer: Daniel García +website: https://github.com/dani-garcia +dependencies: [] +repo: https://github.com/dani-garcia/vaultwarden +support: https://vaultwarden.discourse.group/ +port: 8089 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: true +submitter: DFWebOS +submission: https://github.com/getumbrel/umbrel/commit/44c842bddafffa558569f730cb0d5442ee073bf5 diff --git a/vaultwarden/docker-compose.yml b/vaultwarden/docker-compose.yml new file mode 100644 index 0000000..a3ca8bb --- /dev/null +++ b/vaultwarden/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: vaultwarden_server_1 + APP_PORT: 8089 + PROXY_AUTH_ADD: "false" + + server: + image: vaultwarden/server:1.34.3@sha256:84fd8a47f58d79a1ad824c27be0a9492750c0fa5216b35c749863093bfa3c3d7 + user: "1000:1000" + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + ROCKET_PORT: 8089 diff --git a/vert/dfwebos-app.yml b/vert/dfwebos-app.yml new file mode 100644 index 0000000..a06e57e --- /dev/null +++ b/vert/dfwebos-app.yml @@ -0,0 +1,34 @@ +manifestVersion: 1 +id: vert +name: VERT +tagline: Утилита конвертации файлов +category: files +version: "9154213" +port: 3884 +description: >- + 🔄 VERT — это современная и интеллектуальная утилита для преобразования файлов, созданная для того, чтобы сделать преобразование файлов простым, безопасным и эффективным. Он предназначен для поддержки широкого спектра типов файлов, включая изображения, видео, аудио и документы, что позволяет пользователям точно и быстро конвертировать между форматами. Каждое преобразование выполняется гладко, гарантируя максимальное сохранение исходного качества и структуры файлов. + + + Что отличает VERT, так это его ориентация на конфиденциальность и производительность. Конверсии обрабатываются локально, то есть файлы остаются полностью под контролем пользователя и не отправляются на внешние серверы. Это не только защищает конфиденциальные данные, но также снимает ограничения на размер загрузки и минимизирует время ожидания. + + + VERT сочетает в себе чистый, интуитивно понятный интерфейс с расширенной логикой преобразования, предоставляя пользователям простоту и гибкость. Будь то преобразование одного файла или последовательная обработка нескольких файлов, он обеспечивает удобство работы, адаптируемую к различным потребностям. В результате получается надежный и уважающий конфиденциальность инструмент, который превращает преобразование файлов в быстрый, простой и приятный процесс. +developer: VERT +website: https://vert.sh/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3846 +repo: https://github.com/VERT-sh/VERT +support: https://github.com/VERT-sh/VERT/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Некоторые из ключевых моментов этого выпуска включают в себя: + - Добавлен маскируемый значок PWA для лучшего внешнего вида на главном экране. + - Исправлен URL-адрес аналитики. + - Добавлена поддержка страниц GitHub. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/vert/docker-compose.yml b/vert/docker-compose.yml new file mode 100644 index 0000000..b11beaa --- /dev/null +++ b/vert/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: vert_web_1 + APP_PORT: 80 + + web: + image: ghcr.io/vert-sh/vert:sha-9154213@sha256:921bd61b3d786ecedce81e5ec0cb5112bce6c43d64e331a53af6862e56bd3ebd + restart: on-failure + environment: + PUB_HOSTNAME: http://${DEVICE_DOMAIN_NAME}:3884 + PUB_VERTD_URL: http://${DEVICE_DOMAIN_NAME}:3884 + PUB_ENV: production diff --git a/vikunja/data/db/.gitkeep b/vikunja/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/vikunja/data/files/.gitkeep b/vikunja/data/files/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/vikunja/dfwebos-app.yml b/vikunja/dfwebos-app.yml new file mode 100644 index 0000000..d8f3920 --- /dev/null +++ b/vikunja/dfwebos-app.yml @@ -0,0 +1,49 @@ +manifestVersion: 1 +id: vikunja +category: files +name: Vikunja +version: "2.3.0" +tagline: Самостоятельно размещаемое приложение с открытым исходным кодом для создания дел. +description: >- + Думайте о Викунье как о записной книжке, в которой вы храните все свои вещи. Но со сверхспособностями. + + + 🗂️ Будьте организованы + + Организуйте все свои задачи в проектах. Создавайте подпроекты, организуйте все иерархически и группируйте связанные материалы. + + + 👥 Сотрудничать с коллегами + + Vikunja позволяет легко поделиться проектом с другим пользователем или всей командой! Задания показывают, кто над чем работает. + + + 🛠️ Используйте его так, как вам нужно + + Вы можете просматривать свои задачи в классическом виде списка, в виде диаграммы Ганта, таблицы или канбан-доски. Все, что вам нужно! +releaseNotes: >- + 🚨 Этот выпуск включает 11 исправлений безопасности. Обновление настоятельно рекомендуется. + + + Основные моменты этого выпуска: + - Новая система плагинов + - Викунья теперь может выступать в качестве провайдера OAuth 2.0. + - Поддержка импорта WeKan и CSV + - Окно быстрого входа в настольное приложение. + + + Полные примечания к выпуску доступны по адресу https://vikunja.io/changelog/. +developer: Vikunja +website: https://vikunja.io/ +dependencies: [] +repo: https://github.com/go-vikunja/vikunja +support: https://community.vikunja.io/ +port: 4523 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +deterministicPassword: false +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/694 diff --git a/vikunja/docker-compose.yml b/vikunja/docker-compose.yml new file mode 100644 index 0000000..8649a66 --- /dev/null +++ b/vikunja/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: vikunja_web_1 + APP_PORT: 3456 + # у vikunja есть своя собственная аутентификация, поэтому нам не нужно использовать здесь прозрачную аутентификацию DFWebOS. + PROXY_AUTH_ADD: "false" + + db: + image: mariadb:10.11.8@sha256:75f6e61397758489d1dccf95db33b6b49ebfc7ec1253d40060fdf8ceb7f938a3 + command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci + environment: + MYSQL_ROOT_PASSWORD: supersecret + MYSQL_USER: vikunja + MYSQL_PASSWORD: secret + MYSQL_DATABASE: vikunja + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + restart: on-failure + healthcheck: + test: ["CMD-SHELL", "mysqladmin ping -h localhost -u $$MYSQL_USER --password=$$MYSQL_PASSWORD"] + interval: 2s + start_period: 30s + + web: + image: vikunja/vikunja:2.3.0@sha256:f6b80393c1998cd5cd0dc38d24762c59ab4c10000a6f1032ef5b554e262cab93 + environment: + VIKUNJA_SERVICE_PUBLICURL: http://${DEVICE_DOMAIN_NAME}:4523 + VIKUNJA_DATABASE_HOST: vikunja_db_1 + VIKUNJA_DATABASE_PASSWORD: secret + VIKUNJA_DATABASE_TYPE: mysql + VIKUNJA_DATABASE_USER: vikunja + VIKUNJA_DATABASE_DATABASE: vikunja + VIKUNJA_SERVICE_JWTSECRET: ${APP_SEED} + volumes: + - ${APP_DATA_DIR}/data/files:/app/vikunja/files + depends_on: + - db + restart: on-failure diff --git a/wanderer/data/data.ms/.gitkeep b/wanderer/data/data.ms/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wanderer/data/data.ms/.gitkeep @@ -0,0 +1 @@ + diff --git a/wanderer/data/pb_data/.gitkeep b/wanderer/data/pb_data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wanderer/data/pb_data/.gitkeep @@ -0,0 +1 @@ + diff --git a/wanderer/data/uploads/.gitkeep b/wanderer/data/uploads/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wanderer/data/uploads/.gitkeep @@ -0,0 +1 @@ + diff --git a/wanderer/dfwebos-app.yml b/wanderer/dfwebos-app.yml new file mode 100644 index 0000000..71335b0 --- /dev/null +++ b/wanderer/dfwebos-app.yml @@ -0,0 +1,50 @@ +manifestVersion: 1 +id: wanderer +name: Wanderer +tagline: Самостоятельная база данных маршрутов +category: files +version: "0.18.5" +port: 3111 +description: >- + 🗺️ Wanderer — это автономная платформа с открытым исходным кодом, предназначенная для любителей активного отдыха, которые хотят управлять пешеходными и велосипедными маршрутами, исследовать их и делиться ими на своих условиях. Он предоставляет понятный и современный интерфейс для загрузки файлов GPX, рисования новых маршрутов на интерактивной карте и их организации с подробными метаданными, такими как сложность, продолжительность и набор высоты. Wanderer поддерживает полнотекстовый поиск и мощную фильтрацию, чтобы помочь пользователям найти именно тот маршрут, который они ищут, по различным критериям, таким как регион, продолжительность или тип активности. + + + Приложение уделяет большое внимание конфиденциальности пользователей и владению данными, предлагая полностью автономную работу, которую можно запускать на вашем собственном сервере без участия третьих лиц. Он использует открытые слои карт от таких поставщиков, как OpenStreetMap, и позволяет экспортировать GPX, поэтому маршруты можно использовать с обычными навигационными устройствами. + + + Wanderer особенно популярен среди людей, которым нравится организовывать свою личную коллекцию маршрутов или делиться впечатлениями на свежем воздухе с группой, клубом или местным сообществом. Его легко развернуть на самостоятельных платформах, таких как YunoHost, и он поддерживает функции совместной работы, которые делают его полезным для небольших команд или семей, планирующих вместе мероприятия на свежем воздухе. Его чистый дизайн, особое внимание к конфиденциальности и независимость от коммерческих платформ делают его идеальным решением для всех, кто ценит контроль над своими внешними данными. +developer: Flomp +website: https://wanderer.to/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/2955 +repo: https://github.com/Flomp/wanderer +support: https://github.com/Flomp/wanderer/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg + - 7.jpg +releaseNotes: >- + Этот выпуск включает исправление безопасности, новые функции и исправления ошибок: + - Исправлена уязвимость безопасности, связанная с обработкой XML. + - Настройки фильтра списка маршрутов теперь сохраняются и восстанавливаются при возврате к маршруту. + - Исправлена коррекция высоты для сохранения исходных значений GPX, когда данные маршрутизации недействительны. + - Исправлен расчет подъема и спуска для высокочастотных треков GPX. + - Исправлена ошибка, из-за которой не удавалось загрузить след для новых пользователей без настроек конфиденциальности по умолчанию. + - Исправлена дублирующая кнопка «Отмена» и потеря фокуса при поиске по фильтру следов. + - Исправлено массовое назначение следов в модальном окне поиска по списку. + - Исправлено определение локали и ошибки, связанные с локалью. + - Исправлен PDF и макет печати, поэтому описания больше не перекрывают путевые точки. + - Исправлено сохранение состояния карты для названий объектов. + - Исправлено состояние гонки, приводившее к ошибкам при печати следа. + - Добавлена поддержка чешского языка. + + + Полные примечания к выпуску: https://github.com/Flomp/wanderer/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/wanderer/docker-compose.yml b/wanderer/docker-compose.yml new file mode 100644 index 0000000..1f70b1d --- /dev/null +++ b/wanderer/docker-compose.yml @@ -0,0 +1,62 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: wanderer_web_1 + APP_PORT: 3000 + + web: + image: flomp/wanderer-web:v0.18.5@sha256:49eefcf02155639bf3b750cef96cef9c0f3260ece03348aec316aeb29d713c10 + user: "1000:1000" + depends_on: + search: + condition: service_healthy + db: + condition: service_started + environment: + ORIGIN: http://${DEVICE_DOMAIN_NAME}:3111 + BODY_SIZE_LIMIT: Infinity + PUBLIC_POCKETBASE_URL: http://wanderer_db_1:8090 + PUBLIC_DISABLE_SIGNUP: "false" + UPLOAD_FOLDER: /app/uploads + UPLOAD_USER: admin + UPLOAD_PASSWORD: ${APP_PASSWORD} + PUBLIC_VALHALLA_URL: https://valhalla1.openstreetmap.de + PUBLIC_NOMINATIM_URL: https://nominatim.openstreetmap.org + MEILI_URL: http://wanderer_search_1:7700 + MEILI_MASTER_KEY: ${APP_SEED} + volumes: + - ${APP_DATA_DIR}/data/uploads:/app/uploads + restart: on-failure + + search: + image: getmeili/meilisearch:v1.14.0@sha256:8cd411ba5d9ec2dfce02e241305208eebacce0fd74a72bece21cadd03dc566ce + environment: + MEILI_NO_ANALYTICS: "true" + MEILI_URL: http://wanderer_search_1:7700 + MEILI_MASTER_KEY: ${APP_SEED} + volumes: + - ${APP_DATA_DIR}/data/data.ms:/meili_data/data.ms + restart: on-failure + healthcheck: + test: curl --fail http://localhost:7700/health || exit 1 + interval: 15s + retries: 10 + start_period: 20s + timeout: 10s + + db: + image: flomp/wanderer-db:v0.18.5@sha256:c1798be5822e5b802b0e235dba108a5cc0dca7609e1bc52b417c5cafb3981d89 + user: "1000:1000" + depends_on: + search: + condition: service_healthy + environment: + POCKETBASE_ENCRYPTION_KEY: ${APP_WANDERER_ENCRYPTION_KEY} + MEILI_URL: http://wanderer_search_1:7700 + MEILI_MASTER_KEY: ${APP_SEED} + ORIGIN: http://${DEVICE_DOMAIN_NAME}:3111 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/pb_data:/pb_data diff --git a/wanderer/exports.sh b/wanderer/exports.sh new file mode 100644 index 0000000..cbfb785 --- /dev/null +++ b/wanderer/exports.sh @@ -0,0 +1 @@ +export APP_WANDERER_ENCRYPTION_KEY=$(derive_entropy "${app_entropy_identifier}-WANDERER_ENCRYPTION_KEY" | head -c32) diff --git a/watch-your-lan/data/WatchYourLAN/.gitkeep b/watch-your-lan/data/WatchYourLAN/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/watch-your-lan/dfwebos-app.yml b/watch-your-lan/dfwebos-app.yml new file mode 100644 index 0000000..5cb75d6 --- /dev/null +++ b/watch-your-lan/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1 +id: watch-your-lan +name: WatchYourLAN +tagline: Легкий сетевой IP-сканер +category: networking +version: "2.1.4" +port: 8840 +description: >- + WatchYourLAN — это легкий сетевой IP-сканер. Оно позволяет отслеживать все устройства, подключенные к вашей локальной сети. +releaseNotes: >- + Ключевые моменты этого выпуска включают в себя: + - Добавлены документы Swagger API. + - Возможность добавлять хосты из API + - Запустить повторное сканирование из API или настроек конфигурации/сканирования. + - Удалить выбранные хосты + - Функция пробуждения по локальной сети + + + ⚠️ Опция конфигурации HIST_IN_DB устарела. История всегда хранится в базе данных. + + + Полные примечания к выпуску можно найти по адресу https://github.com/aceberg/WatchYourLAN/releases. +developer: aceberg +website: https://github.com/aceberg/WatchYourLAN +submitter: Jasper +submission: https://github.com/getumbrel/dfwebos-apps/pull/940 +repo: https://github.com/aceberg/WatchYourLAN +support: https://github.com/aceberg/WatchYourLAN/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/watch-your-lan/docker-compose.yml b/watch-your-lan/docker-compose.yml new file mode 100644 index 0000000..02b35be --- /dev/null +++ b/watch-your-lan/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + web: + image: aceberg/watchyourlan:2.1.4@sha256:f77532ca7c3c9a4398cb094df7674013a3d7fcf4699386f1e456c24df6fef00e + network_mode: "host" + restart: on-failure + stop_grace_period: 1m + init: true + environment: + TZ: "UTC" # required: needs your TZ for correct time + IFACES: "eth0 wlan0 enp1s0" # required: 1 or more interface + HOST: "0.0.0.0" # optional, default: 0.0.0.0 + PORT: "8840" # optional, default: 8840 + # Исключить, чтобы разрешить пользовательскую конфигурацию: + # TIMEOUT: "120" # опционально, время в секундах, по умолчанию: 120 + # THEME: "sand" # необязательный + # COLOR: "dark" # необязательный + volumes: + - ${APP_DATA_DIR}/data:/data/WatchYourLAN diff --git a/wavelog/data/config/.gitkeep b/wavelog/data/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wavelog/data/db/.gitkeep b/wavelog/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wavelog/data/uploads/.gitkeep b/wavelog/data/uploads/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wavelog/data/userdata/.gitkeep b/wavelog/data/userdata/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wavelog/dfwebos-app.yml b/wavelog/dfwebos-app.yml new file mode 100644 index 0000000..af2f447 --- /dev/null +++ b/wavelog/dfwebos-app.yml @@ -0,0 +1,58 @@ +manifestVersion: 1.1 +id: wavelog +name: Wavelog +version: "2.4.1" +tagline: "Программа для записи любительских радиостанций" +description: >- + ⚠️ Ниже приведены важные инструкции по настройке. + + Wavelog — это мощное веб-приложение для записи радиолюбительских радиостанций, которое позволяет с легкостью регистрировать и управлять своими радиоконтактами. Он поддерживает различные функции, такие как регистрация QSO, отслеживание наград и интеграцию с онлайн-сервисами, такими как LoTW и eQSL. + + 🛠️ИНСТРУКЦИЯ ПО НАСТРОЙКЕ + + В ходе работы мастера установки вам будет предложено настроить подключение к базе данных программы. Пожалуйста, используйте следующие настройки: + + - Имя хоста: wavelog-db + - База данных: волновой журнал + - Имя пользователя: волновой журнал + - Пароль: волновой журнал + + Это гарантирует, что приложение подключится к правильной базе данных и будет работать правильно. +category: social +developer: DF2ET, DJ7NT, HB9HIL, LA8AJA +website: https://www.wavelog.org +repo: https://github.com/wavelog/wavelog +support: https://github.com/wavelog/wavelog/issues +port: 8099 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +dependencies: [] +submitter: LU5JPL +submission: https://github.com/getumbrel/dfwebos-apps/pull/3323 +releaseNotes: >- + Это служебный выпуск, исправляющий ряд ошибок и рефакторинг нескольких страниц, включая DX-Cluster, Advanced Logbook и награду JCC. + + + Ключевые моменты включают в себя: + - Исправлена ошибка в логике наград зон ITU. + - Исправлена статистика DXCC, не отображавшаяся, если не был установлен режим распространения. + - Исправлена ошибка на странице посетителя, приводившая к ошибке 500. + - Исправлен расчет домашнего QTH на карте DX-Cluster. + - В список диапазонов DX-Cluster добавлен фильтр источника. + - Добавлен режим и тепловая карта во Таймплоттер. + - Добавлена перенос зон CQ и ITU на карту Advanced Logbook. + - Исправлен быстрый поиск в расширенном журнале. + - Исправлена проблема дублирования режима в раскрывающемся списке фильтра расширенного журнала. + - В расширенный журнал добавлена функция объединения QSO. + - Переработана награда JCC с существенным увеличением скорости. + - В сводку DXCC для просмотра «Все диапазоны» добавлены слоты для групп. + - Исправлено мерцание отображения местного времени в режиме журнала при смене позывных. + - Расширенные фильтры для get_contacts_adif API. + + + Полные примечания к выпуску можно найти по адресу https://github.com/wavelog/wavelog/releases. \ No newline at end of file diff --git a/wavelog/docker-compose.yml b/wavelog/docker-compose.yml new file mode 100644 index 0000000..ce0fab4 --- /dev/null +++ b/wavelog/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: wavelog_app_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + app: + image: ghcr.io/wavelog/wavelog:2.4.1@sha256:5b80014f45a6e96acde24c37afd23a9298b5a1813e49cb72edf85349cded16a2 + environment: + CI_ENV: docker + volumes: + - ${APP_DATA_DIR}/data/config:/var/www/html/application/config/docker + - ${APP_DATA_DIR}/data/uploads:/var/www/html/uploads + - ${APP_DATA_DIR}/data/userdata:/var/www/html/userdata + depends_on: + - wavelog-db + + wavelog-db: + image: mariadb:11.4@sha256:39596f079862334be04f4231664862e55d4febe54309cc62f750f2297de85b06 + environment: + MARIADB_RANDOM_ROOT_PASSWORD: yes + MARIADB_DATABASE: wavelog + MARIADB_USER: wavelog + MARIADB_PASSWORD: wavelog + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql diff --git a/wavelog/hooks/pre-start b/wavelog/hooks/pre-start new file mode 100755 index 0000000..822f734 --- /dev/null +++ b/wavelog/hooks/pre-start @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Мы вынуждены использовать user/group 33 (www-data) +# Поэтому мы устанавливаем владельца каталогов данных на 33:33. +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" + +DESIRED_OWNER="33:33" + +CONFIG_DATA_DIR="${APP_DATA_DIR}/config" +UPLOADS_DATA_DIR="${APP_DATA_DIR}/uploads" +USERDATA_DATA_DIR="${APP_DATA_DIR}/userdata" + +wavelog_correct_permission() { + local -r path="${1}" + + if [[ -d "${path}" ]]; then + owner=$(stat -c "%u:%g" "${path}") + + if [[ "${owner}" != "${DESIRED_OWNER}" ]]; then + chown "${DESIRED_OWNER}" "${path}" + fi + fi +} + +wavelog_correct_permission "${CONFIG_DATA_DIR}" +wavelog_correct_permission "${UPLOADS_DATA_DIR}" +wavelog_correct_permission "${USERDATA_DATA_DIR}" diff --git a/webcheck/data/.gitkeep b/webcheck/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/webcheck/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/webcheck/dfwebos-app.yml b/webcheck/dfwebos-app.yml new file mode 100644 index 0000000..f16b034 --- /dev/null +++ b/webcheck/dfwebos-app.yml @@ -0,0 +1,47 @@ +manifestVersion: 1 +id: webcheck +name: WebCheck +tagline: Универсальный инструмент с открытым исходным кодом для анализа любого веб-сайта. +category: networking +version: "1.0.0" +port: 3093 +description: >- + WebCheck — это универсальный инструмент OSINT (с открытым исходным кодом Intelligence) для анализа и мониторинга веб-сайтов. Он предлагает широкий спектр функций, помогающих пользователям проводить аудит безопасности и анализ производительности веб-сайтов. Ключевые функции включают в себя: + + + 🔍 Сканирование веб-сайтов: автоматическое обнаружение уязвимостей и недостатков безопасности. + + + 🚀 Анализ производительности: такие показатели, как время загрузки, видимость и потенциал оптимизации. + + + 📝 Анализ контента: извлечение метаданных, информации DNS и заголовков HTTP. + + + 📊 Визуальное представление: создание снимков экрана для документирования макетов сайтов. + + + 📝 Мониторинг и отчетность: непрерывное отслеживание с настраиваемыми параметрами отчетности. + + + WebCheck является модульным, что позволяет пользователям интегрировать дополнительные плагины для расширения функциональности. Он поддерживает интеграцию API, является кроссплатформенным и легко развертывается через Docker, что делает его доступным на любом сервере. Его открытый исходный код обеспечивает прозрачность и полный контроль над проводимым анализом, что делает его идеальным для пользователей, заботящихся о безопасности. + + + Помимо анализа общедоступных веб-сайтов, WebCheck можно использовать для проверки безопасности внутренней сети и инфраструктуры внутри организаций. Настраиваемые функции и расширяемость делают его незаменимым инструментом для веб-аналитиков и групп ИТ-безопасности. +developer: Alicia Sykes +website: https://web-check.xyz/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/1742 +repo: https://github.com/Lissy93/web-check +support: https://github.com/Lissy93/web-check/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: "" +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/webcheck/docker-compose.yml b/webcheck/docker-compose.yml new file mode 100644 index 0000000..4316742 --- /dev/null +++ b/webcheck/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: webcheck_server_1 + APP_PORT: 3000 + server: + image: ghcr.io/lissy93/web-check:1.0.0@sha256:5c310ff7d81cd87cf69a2738f930da2e5050aada543012720a859f01e4c5654c + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/app/data diff --git a/wger/config/nginx.conf b/wger/config/nginx.conf new file mode 100644 index 0000000..0959579 --- /dev/null +++ b/wger/config/nginx.conf @@ -0,0 +1,27 @@ +upstream wger { + server wger_web_1:8000; +} + +server { + + listen 80; + + location / { + proxy_pass http://wger; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Host $host:$server_port; + proxy_redirect off; + } + + location /static/ { + alias /wger/static/; + } + + location /media/ { + alias /wger/media/; + } + + client_max_body_size 100M; +} diff --git a/wger/config/prod.env b/wger/config/prod.env new file mode 100644 index 0000000..a5236f2 --- /dev/null +++ b/wger/config/prod.env @@ -0,0 +1,97 @@ +# Часовой пояс сервера, список возможных имен: +# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +TIME_ZONE=Europe/Berlin +TZ=Europe/Berlin + +# +# Приложение +WGER_INSTANCE=https://wger.de +ALLOW_REGISTRATION=True +ALLOW_GUEST_USERS=True +ALLOW_UPLOAD_VIDEOS=True +MIN_ACCOUNT_AGE_TO_TRUST=21 + +SYNC_EXERCISES_CELERY=True +SYNC_EXERCISE_IMAGES_CELERY=True +SYNC_EXERCISE_VIDEOS_CELERY=True + +SYNC_INGREDIENTS_CELERY=True +DOWNLOAD_INGREDIENTS_FROM=WGER + +USE_CELERY=True + +# +# Сельдерей +CELERY_BROKER=redis://wger_cache_1:6379/2 +CELERY_BACKEND=redis://wger_cache_1:6379/2 +CELERY_FLOWER_PASSWORD=adminadmin + +# +# База данных +DJANGO_DB_ENGINE=django.db.backends.postgresql +DJANGO_DB_DATABASE=wger +DJANGO_DB_USER=wger +DJANGO_DB_PASSWORD=wger +DJANGO_DB_HOST=wger_db_1 +DJANGO_DB_PORT=5432 +DJANGO_PERFORM_MIGRATIONS=True + +# +# Кэш +DJANGO_CACHE_BACKEND=django_redis.cache.RedisCache +DJANGO_CACHE_LOCATION=redis://wger_cache_1:6379/1 +DJANGO_CACHE_TIMEOUT=1296000 +DJANGO_CACHE_CLIENT_CLASS=django_redis.client.DefaultClient + +# +# Атаки грубой силы при входе в систему +AXES_ENABLED=True +AXES_FAILURE_LIMIT=10 +AXES_COOLOFF_TIME=30 +AXES_HANDLER=axes.handlers.cache.AxesCacheHandler +AXES_LOCKOUT_PARAMETERS=ip_address +AXES_IPWARE_PROXY_COUNT=1 +AXES_IPWARE_META_PRECEDENCE_ORDER=HTTP_X_FORWARDED_FOR,REMOTE_ADDR + +# +# Другие +DJANGO_DEBUG=False +WGER_USE_GUNICORN=True +EXERCISE_CACHE_TTL=18000 + +# +# JWT авторизация +ACCESS_TOKEN_LIFETIME=10 +REFRESH_TOKEN_LIFETIME=24 + +# +# Аутентификация прокси-сервера — оставьте пустым, если вы не используете это. +AUTH_PROXY_HEADER='' +AUTH_PROXY_TRUSTED_IPS='' +AUTH_PROXY_CREATE_UNKNOWN_USER=False +AUTH_PROXY_USER_EMAIL_HEADER='' +AUTH_PROXY_USER_NAME_HEADER='' + +# +# Уровень журнала +LOG_LEVEL_PYTHON=INFO + +# +# Рекапча (отключена) +USE_RECAPTCHA=False + +# +# Очистить флаг статических файлов +DJANGO_CLEAR_STATIC_FIRST=False + +# +# Электронная почта +FROM_EMAIL='wger Workout Manager ' + +# +# Платформа отдыха Джанго +NUMBER_OF_PROXIES=1 + +# +# Единорог +GUNICORN_CMD_ARGS="--workers 3 --threads 2 --worker-class gthread --proxy-protocol True --timeout 240" diff --git a/wger/data/celery-beat/.gitkeep b/wger/data/celery-beat/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wger/data/celery-beat/.gitkeep @@ -0,0 +1 @@ + diff --git a/wger/data/media/.gitkeep b/wger/data/media/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wger/data/media/.gitkeep @@ -0,0 +1 @@ + diff --git a/wger/data/postgres-data/.gitkeep b/wger/data/postgres-data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wger/data/postgres-data/.gitkeep @@ -0,0 +1 @@ + diff --git a/wger/data/redis-data/.gitkeep b/wger/data/redis-data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wger/data/redis-data/.gitkeep @@ -0,0 +1 @@ + diff --git a/wger/data/static/.gitkeep b/wger/data/static/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wger/data/static/.gitkeep @@ -0,0 +1 @@ + diff --git a/wger/dfwebos-app.yml b/wger/dfwebos-app.yml new file mode 100644 index 0000000..b004bf7 --- /dev/null +++ b/wger/dfwebos-app.yml @@ -0,0 +1,57 @@ +manifestVersion: 1 +id: wger +name: wger +tagline: Фитнес-трекер для тренировок и питания. +category: files +version: "2.5" +port: 8450 +description: >- + 📈 wger ​​— это мощное и гибкое программное обеспечение для управления фитнесом с открытым исходным кодом, предназначенное для помощи пользователям в планировании, отслеживании и оптимизации тренировок, питания и общего прогресса в фитнесе. Независимо от того, являетесь ли вы частным лицом, стремящимся повысить эффективность тренировок, личным тренером, обслуживающим нескольких клиентов, или владельцем тренажерного зала, ищущим цифровое решение для оптимизации программирования тренировок, wger ​​предоставляет многофункциональную платформу, адаптированную к различным потребностям фитнеса. + + + По своей сути wger ​​предлагает обширную базу данных упражнений, которая включает подробные инструкции, изображения и классификации групп мышц. Пользователи могут создавать полностью индивидуальные программы тренировок, выбирая из уже существующих упражнений или добавляя свои собственные. Каждый план тренировки может быть структурирован с использованием подходов, повторений, времени отдыха и стратегий прогресса, что позволяет точно корректировать тренировки с течением времени. Кроме того, программное обеспечение включает в себя систему отслеживания тренировок, которая регистрирует выполненные упражнения и предоставляет историческую информацию о тенденциях производительности. + + + Помимо обучения, wger ​​включает в себя комплексный модуль планирования питания. Пользователи могут регистрировать приемы пищи, рассчитывать потребление калорий и отслеживать распределение макронутриентов, чтобы убедиться, что их диета соответствует их целям в фитнесе. Интегрированная база данных продуктов питания упрощает регистрацию приемов пищи, предоставляя информацию о питательной ценности широкого спектра ингредиентов, а пользователи также могут добавлять собственные записи о продуктах питания. + + + Для поддержки долгосрочного мониторинга прогресса wger ​​включает в себя инструменты визуализации, такие как диаграммы отслеживания веса, графики эффективности тренировок и статистические сводки. Эти функции помогают пользователям определять тенденции, ставить реалистичные цели и сохранять мотивацию на протяжении всего пути к фитнесу. + + + Одним из выдающихся аспектов wger ​​является его многопользовательская функциональность, что делает его идеальным инструментом для тренеров, тренеров и спортивных залов. Платформа позволяет использовать различные роли пользователей, что позволяет тренерам назначать планы тренировок и эффективно отслеживать прогресс клиентов. + + + Будучи проектом с открытым исходным кодом, wger ​​постоянно развивается, и активное сообщество вносит новые функции и улучшения. Его гибкость, обширный набор функций и упор на настройку делают его ценным инструментом для всех, кто серьезно занимается фитнесом, будь то новички, опытные спортсмены или профессионалы в области фитнеса. +developer: wger Project +website: https://wger.de/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3247 +repo: https://github.com/wger-project/wger +support: https://github.com/wger-project/wger/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg +releaseNotes: >- + Ключевые моменты этого выпуска включают в себя: + - Улучшена синхронизация ингредиентов с использованием предварительно созданного дампа базы данных для более быстрой и эффективной обработки. + - Поддержка размера порции ингредиентов, позволяющая регистрировать еду в таких единицах, как «1 чашка» или «1 порция». + - Размеры порций автоматически импортируются из Open Food Facts. + - В ингредиенты добавлены поля для веганов, вегетарианцев и нутрикоров. + - Добавлен «разминка» как новый тип сета. + - Автоматическое считывание даты из загруженных изображений галереи. + - Варианты упражнений перемещены в поле непосредственно на модели упражнения. + - Установите языковые предпочтения интерфейс. + - Поддержка таймера для упражнений на время + - Несколько записей измерений в день + - Возможность установить язык интерфейс для каждого пользователя. + + + Полные примечания к выпуску доступны по адресу https://github.com/wger-project/wger/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/wger/docker-compose.yml b/wger/docker-compose.yml new file mode 100644 index 0000000..06d4737 --- /dev/null +++ b/wger/docker-compose.yml @@ -0,0 +1,113 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: wger_nginx_1 + APP_PORT: 80 + + web: + image: wger/server:2.5@sha256:1cac2c62b8d85b54dab16291df802a1cdbf66828201b8df6104db0400320f0df + user: "1000:1000" + depends_on: + db: + condition: service_healthy + cache: + condition: service_healthy + environment: + SECRET_KEY: ${APP_SEED} + SIGNING_KEY: ${APP_SEED} + CSRF_TRUSTED_ORIGINS: http://${DEVICE_DOMAIN_NAME}:${APP_WGER_PORT},http://${DEVICE_HOSTNAME}:${APP_WGER_PORT},${APP_WGER_LOCAL_URLS} + SITE_URL: http://${DEVICE_DOMAIN_NAME}:8450 + MEDIA_URL: http://${DEVICE_DOMAIN_NAME}:8450/media/ + env_file: + - ${APP_DATA_DIR}/config/prod.env + volumes: + - ${APP_DATA_DIR}/data/static:/home/wger/static + - ${APP_DATA_DIR}/data/media:/home/wger/media + healthcheck: + test: wget --no-verbose --tries=1 --spider http://localhost:8000 + interval: 10s + timeout: 5s + start_period: 300s + retries: 5 + restart: on-failure + + nginx: + image: nginx:alpine3.22@sha256:d67ea0d64d518b1bb04acde3b00f722ac3e9764b3209a9b0a98924ba35e4b779 + depends_on: + - web + volumes: + - ${APP_DATA_DIR}/config/nginx.conf:/etc/nginx/conf.d/default.conf:ro + - ${APP_DATA_DIR}/data/static:/wger/static:ro + - ${APP_DATA_DIR}/data/media:/wger/media:ro + healthcheck: + test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:80/"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + restart: on-failure + + db: + image: postgres:17.5-alpine@sha256:6567bca8d7bc8c82c5922425a0baee57be8402df92bae5eacad5f01ae9544daa + user: "1000:1000" + environment: + POSTGRES_USER: wger + POSTGRES_PASSWORD: wger + POSTGRES_DB: wger + TZ: Europe/Berlin + volumes: + - ${APP_DATA_DIR}/data/postgres-data:/var/lib/postgresql/data/ + healthcheck: + test: pg_isready -U wger + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + restart: on-failure + + cache: + image: redis:8.0.3-alpine@sha256:25c0ae32c6c2301798579f5944af53729766a18eff5660bbef196fc2e6214a9c + user: "1000:1000" + volumes: + - ${APP_DATA_DIR}/data/redis-data:/data + healthcheck: + test: redis-cli ping + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + restart: on-failure + + celery_worker: + image: wger/server:2.5@sha256:1cac2c62b8d85b54dab16291df802a1cdbf66828201b8df6104db0400320f0df + user: "1000:1000" + command: /start-worker + env_file: + - ${APP_DATA_DIR}/config/prod.env + volumes: + - ${APP_DATA_DIR}/data/media:/home/wger/media + depends_on: + web: + condition: service_healthy + healthcheck: + test: celery -A wger inspect ping + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + restart: on-failure + + celery_beat: + image: wger/server:2.5@sha256:1cac2c62b8d85b54dab16291df802a1cdbf66828201b8df6104db0400320f0df + user: "1000:1000" + command: /start-beat + volumes: + - ${APP_DATA_DIR}/data/celery-beat:${APP_DATA_DIR}/beat/ + env_file: + - ${APP_DATA_DIR}/config/prod.env + depends_on: + celery_worker: + condition: service_healthy + restart: on-failure diff --git a/wger/exports.sh b/wger/exports.sh new file mode 100644 index 0000000..c3d9222 --- /dev/null +++ b/wger/exports.sh @@ -0,0 +1,16 @@ +export APP_WGER_PORT="8450" + +local_ips=$(hostname --all-ip-addresses 2> /dev/null) || local_ips="" +export APP_WGER_LOCAL_IPS="${local_ips}" + +# Создайте URLs с http:// и портом, разделенными запятыми. +ips_with_port=$(for ip in $local_ips; do + # Оберните адреса IPv6 в [] + if [[ "$ip" == *:* ]]; then + echo -n "http://[$ip]:$APP_WGER_PORT," + else + echo -n "http://$ip:$APP_WGER_PORT," + fi +done | sed 's/,$//') + +export APP_WGER_LOCAL_URLS="${ips_with_port}" diff --git a/whoogle-search/dfwebos-app.yml b/whoogle-search/dfwebos-app.yml new file mode 100644 index 0000000..fe30b31 --- /dev/null +++ b/whoogle-search/dfwebos-app.yml @@ -0,0 +1,83 @@ +manifestVersion: 1 +id: whoogle-search +category: networking +name: Whoogle Search +version: "1.2.4" +tagline: Самостоятельная метапоисковая система без рекламы, уважающая конфиденциальность. +description: >- + Получите результаты поиска Google, но без рекламы, JavaScript, ссылок AMP, + файлы cookie или отслеживание IP-адреса. Легко развертывается в одном + щелкните как приложение Docker и настройте с помощью одного файла конфигурации. + Быстро и просто внедрить в качестве замены основной поисковой системы на + как настольный, так и мобильный. + + + - Никакой рекламы и спонсорского контента. + + - Нет JavaScript* + + - Никаких файлов cookie** + + - Никакого отслеживания/привязки вашего личного IP-адреса*** + + – Нет ссылок AMP. + + – Нет тегов отслеживания URL-адресов (т. е. utm=%s). + + - Нет заголовка реферера + + - Поддержка прокси Tor и HTTP/SOCKS. + + - Автозаполнение/поиск предложений + + - Поиск POST-запросов и запросы предложений (если это возможно) + + - Просмотр изображений в полном разрешении без перенаправления сайта (в настоящее время только для мобильных устройств) + + - Режимы темы Светлая/Тёмная/Системная (с поддержкой пользовательских тем CSS) + + - Случайно сгенерированный пользовательский агент + + - Простота установки/развертывания + + - Поиск в стиле DDG (т. е. ! ) + + - Дополнительный поиск по местоположению (т. е. результаты рядом с <город>) + + - Дополнительный режим NoJS для просмотра результатов поиска в отдельном окне с заблокированным JavaScript. + + + *Никаких сторонних JavaScript. Whoogle можно использовать с отключенным JavaScript, но если он включен, JavaScript используется для таких вещей, как представление поисковых предложений. + + ** Никаких сторонних файлов cookie. Whoogle использует файлы cookie (сеансы) на стороне сервера для хранения неконфиденциальных параметров конфигурации, таких как тема, язык и т. д. Как и в случае с JavaScript, файлы cookie можно отключить и не влиять на функции поиска Whoogle. + + ***При развертывании на удаленном сервере или настройке отправки запросов через VPN, Tor, прокси и т. д. +developer: Ben Busby +website: https://github.com/benbusby +dependencies: [] +repo: https://github.com/benbusby/whoogle-search +support: https://github.com/benbusby/whoogle-search/issues +port: 6420 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + ⚠️ Недавние изменения Google затруднили предоставление результатов поиска без JavaScript, что может повлиять на функциональность Whoogle. + + + ⚠️ Это последняя официальная версия Whoogle Search. Разработчик объявил о завершении проекта из-за того, что Google агрессивно блокирует поисковые запросы без JavaScript. Whoogle, возможно, продолжит работать, но дальнейших обновлений не планируется. + + + Этот финальный выпуск включает в себя: + - Обновлен пул User-Agent, удалены заблокированные шаблоны и добавлены новые рабочие строки для восстановления функции поиска по умолчанию. + - Обновлена библиотека шифрования для повышения безопасности. + + + Полные примечания к выпуску можно найти по адресу https://github.com/benbusby/whoogle-search/compare/v1.2.3...v1.2.4. +submitter: Jasper +submission: https://github.com/getumbrel/dfwebos-apps/pull/117 diff --git a/whoogle-search/docker-compose.yml b/whoogle-search/docker-compose.yml new file mode 100644 index 0000000..6bc077c --- /dev/null +++ b/whoogle-search/docker-compose.yml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: whoogle-search_web_1 + APP_PORT: 6420 + + web: + image: benbusby/whoogle-search:1.2.4@sha256:6ae072238642b7e5860c8fa7f68cf06be797eb4e2278fc41d17d3b5e8a051eea + restart: on-failure + stop_grace_period: 1m + init: true + user: "927:927" + environment: + EXPOSE_PORT: 6420 diff --git a/wikijs/config/.gitkeep b/wikijs/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wikijs/data/.gitkeep b/wikijs/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wikijs/dfwebos-app.yml b/wikijs/dfwebos-app.yml new file mode 100644 index 0000000..506e846 --- /dev/null +++ b/wikijs/dfwebos-app.yml @@ -0,0 +1,39 @@ +manifestVersion: 1.1 +id: wikijs +category: developer +name: WikiJS +version: "2.5.313" +tagline: Сделайте написание документации удовольствием +description: >- + Самое мощное и расширяемое программное обеспечение Wiki с открытым исходным кодом. + + + Не всем командам нужен одинаковый набор функций. Вот почему Wiki.js предлагает широкий спектр модулей, которые можно включать и отключать по требованию. + + + Речь идет не только о бесплатности, это также означает, что каждый может добавлять новые функции и помогать устранять ошибки. Wiki.js имеет лицензию AGPLv3. + + + Подключите свою вики к постоянно расширяющемуся списку внешних интеграций для аутентификации, ведения журналов, рендеринга, поиска и хранения. +developer: Requarks +website: https://js.wiki/ +dependencies: [] +repo: https://github.com/requarks/wiki +support: https://js.wiki/support +port: 9182 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +torOnly: false +releaseNotes: >- + 🚨 Это обновление включает важное исправление безопасности: + - Исправлена уязвимость, которая позволяла пользователям назначать себя группам с повышенными разрешениями. + + + Полные примечания к выпуску можно найти по адресу https://github.com/requarks/wiki/releases. +submitter: Pranshu Agrawal +submission: https://github.com/getumbrel/dfwebos-apps/pull/273 diff --git a/wikijs/docker-compose.yml b/wikijs/docker-compose.yml new file mode 100644 index 0000000..cc2771a --- /dev/null +++ b/wikijs/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: wikijs_server_1 + APP_PORT: 3000 + PROXY_AUTH_ADD: "false" + + server: + user: "1000:1000" + image: linuxserver/wikijs:2.5.313@sha256:dfcd14107ad31835bb15e71e53cd9d968f7ecce5b5c43b85c4b16c818435446a + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/data + - ${APP_DATA_DIR}/repo:/app/wiki/data/repo + - ${APP_DATA_DIR}/config:/config diff --git a/wikijs/hooks/pre-start b/wikijs/hooks/pre-start new file mode 100755 index 0000000..bb4166c --- /dev/null +++ b/wikijs/hooks/pre-start @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" +APP_CONFIG_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/config" +APP_REPO_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/repo" + +# Создайте каталог репо, если он не существует. Это не было включено в установки до версии 2.5.306-1. +[ ! -d "${APP_REPO_DIR}" ] && mkdir -p "${APP_REPO_DIR}" + +# Рекурсивно установить право собственности на все подключения привязки на 1000:1000. wikijs работал с правами root для установок до версии 2.5.306-1 +# даже несмотря на то, что он использовал переменные окружения "correct" PUID/PGID для изображений linuxserver.io. +chown -R 1000:1000 "${APP_DATA_DIR}" +chown -R 1000:1000 "${APP_CONFIG_DIR}" +chown -R 1000:1000 "${APP_REPO_DIR}" diff --git a/wikijs/repo/.gitkeep b/wikijs/repo/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wingfit/data/.gitkeep b/wingfit/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wingfit/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/wingfit/dfwebos-app.yml b/wingfit/dfwebos-app.yml new file mode 100644 index 0000000..60d0847 --- /dev/null +++ b/wingfit/dfwebos-app.yml @@ -0,0 +1,37 @@ +manifestVersion: 1 +id: wingfit +name: Wingfit +tagline: Минималистичное фитнес-приложение с открытым исходным кодом. +category: files +version: "5.3.1" +port: 8950 +description: >- + 🦾 Wingfit — это целенаправленное и продуманное фитнес-приложение, которое позволяет пользователям полностью контролировать свои тренировки и долгосрочный прогресс в тренировках. По своей сути приложение обеспечивает удобный способ создания, настройки и регистрации тренировок, независимо от того, занимаетесь ли вы тяжелой атлетикой, бегом, художественной гимнастикой или любым другим видом физической активности. Пользователи могут определять свои собственные упражнения и организовывать из них тренировки, отражающие их уникальный стиль тренировок. Каждая деталь тренировки может быть записана, включая подходы, повторения, веса, расстояния, время, периоды отдыха и примечания, что позволяет точно и значимо отслеживать. + + + Приложение также поддерживает отслеживание личных записей, поэтому пользователи могут устанавливать контрольные показатели производительности и наблюдать, как они меняются с течением времени. Специальный вид временной шкалы отображает историю всех зарегистрированных тренировок, что позволяет легко выявлять закономерности, выявлять пробелы и поддерживать последовательность. Wingfit поощряет структурированный прогресс с помощью инструментов, которые поддерживают прогрессирующую перегрузку и формирование привычек, не навязывая жестких шаблонов или фиксированных процедур. + + + В отличие от многих фитнес-приложений, которые перегружены геймификацией, уведомлениями или социальными лентами, Wingfit намеренно минималистичен и не отвлекает внимание. Он создан для людей, которые серьезно относятся к своим тренировкам и хотят иметь понятный, интуитивно понятный интерфейс для достижения своих физических целей. В основе опыта лежит предоставление пользователям возможности анализировать свою производительность, вносить корректировки на основе данных и расти в своем собственном темпе. Благодаря гибкому ведению журнала, четкой визуализации прошлого прогресса и полному контролю над структурой каждого занятия Wingfit является идеальным компаньоном для спортсменов, любителей и всех, кто стремится улучшить свой фитнес-путешествие. +developer: Kovacs +website: https://wingfit.fr/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3185 +repo: https://github.com/itskovacs/wingfit +support: https://github.com/itskovacs/wingfit/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Этот выпуск включает в себя: + - Исправлено меню темного режима на мобильном телефоне. + + + Полные примечания к выпуску можно найти по адресу https://github.com/itskovacs/wingfit/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/wingfit/docker-compose.yml b/wingfit/docker-compose.yml new file mode 100644 index 0000000..2806818 --- /dev/null +++ b/wingfit/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: wingfit_app_1 + APP_PORT: 8000 + + app: + image: ghcr.io/itskovacs/wingfit:5.3.1@sha256:fed5dcc1c8abdec6409f4272caa08f9a6f1d2a3c8e1f9a13b3459c2ffea8a360 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/app/storage + command: ["fastapi", "run", "/app/wingfit/main.py", "--host", "0.0.0.0"] diff --git a/wireguard/data/wireguard/.gitkeep b/wireguard/data/wireguard/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wireguard/dfwebos-app.yml b/wireguard/dfwebos-app.yml new file mode 100644 index 0000000..0c0d6fc --- /dev/null +++ b/wireguard/dfwebos-app.yml @@ -0,0 +1,61 @@ +manifestVersion: 1 +id: wireguard +name: WireGuard +tagline: Запустите свой собственный бесплатный и безлимитный WireGuard VPN +category: networking +version: "14" +port: 51821 +description: >- + WireGuard — чрезвычайно простой, но быстрый и современный VPN, использующий современную криптографию. + + + Он стремится быть быстрее, проще, компактнее и полезнее, чем IPsec, и при этом избежать огромной головной боли. Он намерен быть значительно более производительным, чем OpenVPN. + + + WireGuard разработан как VPN общего назначения для работы как на встроенных интерфейсах, так и на суперкомпьютерах и подходит для самых разных обстоятельств. + + + ☺️ Простой и удобный в использовании + + WireGuard так же легко настроить. Он обрабатывает VPN-соединения с помощью простого обмена открытыми ключами и автоматически управляет соединениями. + + + 🔐 Криптографически обоснованный + + WireGuard использует современную криптографию, такую ​​как структура протокола Noise, Curve25519, ChaCha20 и другие. Он был проверен криптографами. + + + 🛡️ Минимальная поверхность атаки + + WireGuard разработан с учетом простоты и простоты реализации, что позволяет легко проверить его на наличие уязвимостей безопасности. + + + ⏱️ Высокая производительность + + Благодаря высокоскоростным криптографическим примитивам и интеграции с ядром Linux WireGuard обеспечивает быструю и безопасную работу в сети. + + + 📐 Четко определено и тщательно продумано + + WireGuard — это продукт тщательного академического рассмотрения, с четко определенным протоколом и хорошо продуманными проектными решениями. + + + ℹ️ Доступ извне локальной сети + + Чтобы получить доступ к WireGuard из-за пределов локальной сети, вам необходимо открыть порт 51820/udp на маршрутизаторе и перенаправить его на ваше устройство DFWebOS. + + Если вы сканируете QR-код или загружаете файл конфигурации, обязательно измените имя хоста на доменное имя вашего устройства или общедоступный IP-адрес. +releaseNotes: >- + В этом выпуске WireGuard Easy обновляется до версии 14. +dependencies: [] +developer: Emile Nijssen +website: https://github.com/wg-easy/wg-easy +submitter: Sharknoon +submission: https://github.com/getumbrel/dfwebos-apps/pull/1084 +repo: https://github.com/wg-easy/wg-easy +support: https://github.com/wg-easy/wg-easy/discussions +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" \ No newline at end of file diff --git a/wireguard/docker-compose.yml b/wireguard/docker-compose.yml new file mode 100644 index 0000000..144943f --- /dev/null +++ b/wireguard/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: wireguard_app_1 + APP_PORT: 51821 + + app: + image: ghcr.io/wg-easy/wg-easy:14@sha256:f6c2587da3fdc9d5927743fb4a92cff42d690b182396ffd0cdad034becb41053 + restart: on-failure + stop_grace_period: 1m + ports: + - "51820:51820/udp" + volumes: + - ${APP_DATA_DIR}/data/wireguard:/etc/wireguard + environment: + WG_HOST: ${DEVICE_DOMAIN_NAME} + cap_add: + - NET_ADMIN + - SYS_MODULE + sysctls: + - net.ipv4.ip_forward=1 + - net.ipv4.conf.all.src_valid_mark=1 \ No newline at end of file diff --git a/wizarr/data/.gitkeep b/wizarr/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/wizarr/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/wizarr/dfwebos-app.yml b/wizarr/dfwebos-app.yml new file mode 100644 index 0000000..e7c3e79 --- /dev/null +++ b/wizarr/dfwebos-app.yml @@ -0,0 +1,41 @@ +manifestVersion: 1 +id: wizarr +name: Wizarr +tagline: Продвинутая система приглашений и управления медиасерверами +category: media +version: "2026.4.0" +port: 5690 +description: >- + 🧙 Wizarr — приложение, созданное для оптимизации процесса управления и регистрации пользователей на медиасерверах. Он предоставляет централизованную систему, которая позволяет администраторам создавать ссылки-приглашения, которыми можно поделиться с новыми пользователями, чтобы предоставить им доступ к серверу. Этот процесс устраняет необходимость ручной настройки и снижает административные расходы, упрощая эффективное управление несколькими пользователями. Приложение гарантирует, что каждый новый пользователь получит инструкции по процессу установки, помогая им легко настроить своих клиентов и подключиться к серверу. + + + Приложение также предлагает систему отслеживания приглашений и активности пользователей, предоставляя администраторам подробную информацию о том, кто присоединился, когда они присоединились и как они взаимодействуют с сервером. Такое отслеживание позволяет лучше управлять разрешениями на доступ, включая варианты временного членства или ограничения уровней доступа. Отслеживая активность и запросы, Wizarr гарантирует, что сервер остается организованным, а пользователи получают соответствующий уровень доступа и поддержки. + + + Кроме того, Wizarr интегрируется с различными платформами и инструментами связи для автоматизации определенных задач, таких как отправка уведомлений или координация регистрации пользователей. Он поддерживает управляемый процесс адаптации, предоставляя четкие инструкции и шаги, позволяющие пользователям беспрепятственно перемещаться по серверной среде. Это уменьшает количество запросов на поддержку и делает работу пользователя более плавной и интуитивно понятной. + + + В целом, Wizarr стремится сделать управление пользователями простым, эффективным и прозрачным. Он предоставляет администраторам инструменты для мониторинга взаимодействия, обработки запросов и поддержания контроля над доступом, а пользователям предоставляет простой и структурированный способ присоединиться к серверу и использовать его. Сочетая управление приглашениями, отслеживание активности и автоматическое руководство, Wizarr улучшает общее качество работы сервера как для администраторов, так и для пользователей. +developer: Wizarr +website: https://github.com/wizarrrr/wizarr +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3847 +repo: https://github.com/wizarrrr/wizarr +support: https://github.com/wizarrrr/wizarr/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Основные исправления ошибок и улучшения в этом выпуске: + - Исправлена потенциальная потеря данных при миграции LDAP и восстановлены ссылки для приглашения пользователей. + - Исправлены повторяющиеся шаги мастера, появляющиеся в настройках с несколькими серверами. + - Исправлена проблема с неработающими параметрами, влияющая на недавно добавленные медиа-элементы. + + + Полные примечания к выпуску можно найти по адресу https://github.com/wizarrrr/wizarr/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/wizarr/docker-compose.yml b/wizarr/docker-compose.yml new file mode 100644 index 0000000..ff6d581 --- /dev/null +++ b/wizarr/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: wizarr_app_1 + APP_PORT: 5690 + + app: + image: ghcr.io/wizarrrr/wizarr:v2026.4.0@sha256:19da537e01b5470cb34b083b5ac64cb534dd27084d9d66bc634e96c1f3976884 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/data + environment: + - PUID=1000 + - PGID=1000 + - DISABLE_BUILTIN_AUTH=false + - TZ=UTC diff --git a/woofbot-lnd/data/db/diagnostic.data/.gitkeep b/woofbot-lnd/data/db/diagnostic.data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/woofbot-lnd/data/db/journal/.gitkeep b/woofbot-lnd/data/db/journal/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/woofbot-lnd/data/server-logs/.gitkeep b/woofbot-lnd/data/server-logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/woofbot-lnd/dfwebos-app.yml b/woofbot-lnd/dfwebos-app.yml new file mode 100644 index 0000000..c2a99cf --- /dev/null +++ b/woofbot-lnd/dfwebos-app.yml @@ -0,0 +1,36 @@ +manifestVersion: 1.1 +id: woofbot-lnd +category: bitcoin +name: WoofBot (LND) +version: "0.9.8" +tagline: Чат-бот для вашего личного узла +description: >- + WoofBot — это чат-бот, который работает на вашем личном узле Bitcoin и отправляет уведомления в Telegram. + для настроенных событий: платежи с/на указанные адреса, подтверждение транзакций, + новые блоки и многое другое. + + Эта версия WoofBot интегрируется с API-интерфейсом LND Lightning. WoofBot НЕ связан с + Lightning Labs, создатели LND. WoofBot взаимодействует только с API LND. +developer: WoofBotApp +website: https://github.com/woofbotapp +dependencies: + - bitcoin + - lightning +repo: https://github.com/woofbotapp/woofbotapp +support: https://github.com/woofbotapp/woofbotapp/discussions +port: 8093 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + - Показывать счета пользователей на панели инструментов. + + - Новые смайлы для уведомлений об оплате адреса. + + - Обновление зависимостей на стороне сервера. +submitter: WoofBotApp +submission: https://github.com/getumbrel/dfwebos-apps/pull/442 diff --git a/woofbot-lnd/docker-compose.yml b/woofbot-lnd/docker-compose.yml new file mode 100644 index 0000000..7c93e7c --- /dev/null +++ b/woofbot-lnd/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: woofbot-lnd_web_1 + APP_PORT: 8080 + + web: + image: woofbot/woofbot:v0.9.8@sha256:483076f0f364291d569025639ab502dc19c9c61d38931402955482e53cc3d950 + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + environment: + MONGODB_URI: "mongodb://woofbot-lnd_mongodb_1:27017/woofbot" + APP_PORT: "8080" + APP_SEED: $APP_SEED + APP_BITCOIN_NODE_IP: $APP_BITCOIN_NODE_IP + APP_BITCOIN_RPC_USER: $APP_BITCOIN_RPC_USER + APP_BITCOIN_RPC_PASS: $APP_BITCOIN_RPC_PASS + APP_BITCOIN_RPC_PORT: $APP_BITCOIN_RPC_PORT + APP_LIGHTNING_NODE_IP: $APP_LIGHTNING_NODE_IP + APP_LIGHTNING_NODE_GRPC_PORT: $APP_LIGHTNING_NODE_GRPC_PORT + LND_TLS_PATH: "/lnd/tls.cert" + LND_READONLY_MACAROON_PATH: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/readonly.macaroon" + SERVER_LOGS_FILEPATH: /app/logs/server.log + volumes: + - ${APP_DATA_DIR}/data/server-logs:/app/logs + - "${APP_LIGHTNING_NODE_DATA_DIR}/tls.cert:/lnd/tls.cert:ro" + - "${APP_LIGHTNING_NODE_DATA_DIR}/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/readonly.macaroon:/lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/readonly.macaroon:ro" + depends_on: + - mongodb + + mongodb: + # Новые версии mongo не поддерживают Raspberry Pi 4 Arm64. + image: mongo:4.4.6-bionic@sha256:3d0e6df9fd5bc42cbf8ef8bc9e6c4e78f6f26c7157dbd7bdec72d202ab8ebe3a + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/db:/data/db + - ${APP_DATA_DIR}/data/db/diagnostic.data:/data/db/diagnostic.data + - ${APP_DATA_DIR}/data/db/journal:/data/db/journal diff --git a/woofbot/data/db/diagnostic.data/.gitkeep b/woofbot/data/db/diagnostic.data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/woofbot/data/db/journal/.gitkeep b/woofbot/data/db/journal/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/woofbot/data/server-logs/.gitkeep b/woofbot/data/server-logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/woofbot/dfwebos-app.yml b/woofbot/dfwebos-app.yml new file mode 100644 index 0000000..35ad819 --- /dev/null +++ b/woofbot/dfwebos-app.yml @@ -0,0 +1,33 @@ +manifestVersion: 1.1 +id: woofbot +category: bitcoin +name: WoofBot (without Lightning) +version: "0.9.8" +tagline: Чат-бот для вашего личного узла +description: >- + WoofBot — это чат-бот, который работает на вашем личном узле Bitcoin и отправляет уведомления в Telegram. + для настроенных событий: платежи с/на указанные адреса, подтверждение транзакций, + новые блоки и многое другое. + + Эта версия WoofBot требует установки только Bitcoin Core и не интегрируется с + любой молниеносный API. +developer: WoofBotApp +website: https://github.com/woofbotapp +dependencies: + - bitcoin +repo: https://github.com/woofbotapp/woofbotapp +support: https://github.com/woofbotapp/woofbotapp/discussions +port: 8092 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: >- + - Новые смайлы для уведомлений об оплате адреса. + + - Обновление зависимостей на стороне сервера. +submitter: WoofBotApp +submission: https://github.com/getumbrel/dfwebos-apps/pull/28 diff --git a/woofbot/docker-compose.yml b/woofbot/docker-compose.yml new file mode 100644 index 0000000..ddeabe2 --- /dev/null +++ b/woofbot/docker-compose.yml @@ -0,0 +1,37 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: woofbot_web_1 + APP_PORT: 8080 + + web: + image: woofbot/woofbot:v0.9.8@sha256:483076f0f364291d569025639ab502dc19c9c61d38931402955482e53cc3d950 + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + environment: + MONGODB_URI: "mongodb://woofbot_mongodb_1:27017/woofbot" + APP_PORT: "8080" + APP_SEED: $APP_SEED + APP_BITCOIN_NODE_IP: $APP_BITCOIN_NODE_IP + APP_BITCOIN_RPC_USER: $APP_BITCOIN_RPC_USER + APP_BITCOIN_RPC_PASS: $APP_BITCOIN_RPC_PASS + APP_BITCOIN_RPC_PORT: $APP_BITCOIN_RPC_PORT + SERVER_LOGS_FILEPATH: /app/logs/server.log + volumes: + - ${APP_DATA_DIR}/data/server-logs:/app/logs + depends_on: + - mongodb + + mongodb: + # Новые версии mongo не поддерживают Raspberry Pi 4 Arm64. + image: mongo:4.4.6-bionic@sha256:3d0e6df9fd5bc42cbf8ef8bc9e6c4e78f6f26c7157dbd7bdec72d202ab8ebe3a + user: 1000:1000 + restart: on-failure + stop_grace_period: 1m + volumes: + - ${APP_DATA_DIR}/data/db:/data/db + - ${APP_DATA_DIR}/data/db/diagnostic.data:/data/db/diagnostic.data + - ${APP_DATA_DIR}/data/db/journal:/data/db/journal diff --git a/woofbot/hooks/pre-start b/woofbot/hooks/pre-start new file mode 100755 index 0000000..5cc4a81 --- /dev/null +++ b/woofbot/hooks/pre-start @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DATA_DIR="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)/data" + +[ ! -d "${APP_DATA_DIR}" ] && mkdir -p "${APP_DATA_DIR}" && chown 1000:1000 "${APP_DATA_DIR}" + +SERVER_LOGS_DIR="${APP_DATA_DIR}/server-logs" + +[ ! -d "${SERVER_LOGS_DIR}" ] && mkdir -p "${SERVER_LOGS_DIR}" && chown 1000:1000 "${SERVER_LOGS_DIR}" diff --git a/wordpress/data/db/.gitkeep b/wordpress/data/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wordpress/data/wordpress/.gitkeep b/wordpress/data/wordpress/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wordpress/dfwebos-app.yml b/wordpress/dfwebos-app.yml new file mode 100644 index 0000000..56b6c56 --- /dev/null +++ b/wordpress/dfwebos-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: wordpress +name: WordPress +tagline: Платформа публикации с открытым исходным кодом, которую выбирают миллионы веб-сайтов по всему миру. +category: social +version: "6.9.4" +port: 8567 +description: >- + 📚 **Расширьте возможности своего цифрового голоса** — издательская платформа с открытым исходным кодом, которой доверяют миллионы. WordPress — от личных блогов до корпоративных порталов — предоставляет каждому возможность поделиться своими историями. + + + ✨ **Раскройте свой творческий потенциал**. Выбирайте из тысяч тем и плагинов, создайте свой уникальный дизайн и сделайте свой сайт по-настоящему своим. + + + 🤝 **Присоединяйтесь к глобальному сообществу**. Общайтесь с создателями, разработчиками и энтузиастами со всего мира. Вместе сформируйте будущее открытой сети. + + + ⚙️ **Настройка и расширение**. Бесшовная интеграция, индивидуальный код и неограниченная гибкость — открывают безграничные возможности для роста и инноваций. + + + **Примечание.** WordPress можно использовать локально в вашей сети. Однако если вы хотите, чтобы другие люди за пределами вашей локальной сети имели доступ к вашему экземпляру, вам необходимо сделать его доступным в общедоступном Интернете. + Если у вас есть доменное имя, самый простой способ сделать его доступным — использовать приложения Cloudflare Tunnel или Nginx Proxy Manager в DFWebOS App Store и указать для своего доменного имени «http://wordpress_app_1" (порт 80). + + + Чтобы это работало, вам необходимо установить **WordPress Адрес (URL)** и **Адрес сайта (URL)** для вашего доменного имени в настройках WordPress. + Также обязательно установите **правильные заголовки** в Nginx Proxy Manager или приложении Cloudflare Tunnel. Более подробную информацию можно найти здесь: https://developer.wordpress.org/advanced-administration/security/https/#using-a-reverse-proxy. +developer: WordPress +website: https://wordpress.org/ +submitter: al-lac +submission: https://github.com/getumbrel/dfwebos-apps/pull/1947 +repo: https://github.com/WordPress/WordPress +support: https://wordpress.org/support/forums/ +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +defaultUsername: "" +defaultPassword: "" +dependencies: [] +releaseNotes: >- + ⚠️ Чтобы полностью обновить экземпляр Wordpress, вам необходимо зайти в интерфейс администратора и выполнить обновление оттуда. + + + 🚨 Это выпуск безопасности, и рекомендуется немедленно обновить его. Он дополняет исправления из версий 6.9.2 и 6.9.3, которые не были применены полностью: + - Исправлена проблема с обходом пути PclZip. + - Исправлен обход авторизации в функции «Заметки». + - Исправлена уязвимость XXE во внешней библиотеке getID3. + + + Полные примечания к выпуску можно найти по адресу https://wordpress.org/news/category/releases/. +path: "/wp-admin" diff --git a/wordpress/docker-compose.yml b/wordpress/docker-compose.yml new file mode 100644 index 0000000..91c9266 --- /dev/null +++ b/wordpress/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: wordpress_app_1 + APP_PORT: 80 + PROXY_AUTH_ADD: "false" + + app: + image: wordpress:6.9.4@sha256:ee74dc0ebbe7ec43b7f473c0fb4f1dfb6b211d7785f0a95bcdfa10e628c2e67f + user: "1000:1000" + environment: + - WORDPRESS_DB_HOST=wordpress_db_1 + - WORDPRESS_DB_NAME=wordpress + - WORDPRESS_DB_USER=dfwebos + - WORDPRESS_DB_PASSWORD=dfweboswordpress + volumes: + - ${APP_DATA_DIR}/data/wordpress:/var/www/html + restart: on-failure + depends_on: + - db + + db: + image: mariadb:11.5.2@sha256:2d50fe0f77dac919396091e527e5e148a9de690e58f32875f113bef6506a17f5 + user: "1000:1000" + environment: + - MYSQL_ROOT_PASSWORD=dfweboswordpressroot + - MYSQL_DATABASE=wordpress + - MYSQL_USER=dfwebos + - MYSQL_PASSWORD=dfweboswordpress + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/mysql + restart: on-failure diff --git a/yamtrack/data/db/.gitkeep b/yamtrack/data/db/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/yamtrack/data/db/.gitkeep @@ -0,0 +1 @@ + diff --git a/yamtrack/data/redis/.gitkeep b/yamtrack/data/redis/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/yamtrack/data/redis/.gitkeep @@ -0,0 +1 @@ + diff --git a/yamtrack/dfwebos-app.yml b/yamtrack/dfwebos-app.yml new file mode 100644 index 0000000..fd453d4 --- /dev/null +++ b/yamtrack/dfwebos-app.yml @@ -0,0 +1,54 @@ +manifestVersion: 1 +id: yamtrack +name: Yamtrack +tagline: Самостоятельный медиа-трекер +category: media +version: "0.25.2" +port: 8742 +description: >- + 🎬 Yamtrack — это самостоятельно размещаемое приложение для отслеживания мультимедиа с открытым исходным кодом, призванное помочь пользователям организовывать и отслеживать широкий спектр развлекательного контента, включая фильмы, телешоу, аниме, мангу, видеоигры, книги и комиксы. Он предоставляет комплексную платформу, на которой пользователи могут записывать подробную информацию о своем потреблении мультимедиа, такую ​​как рейтинги, статус просмотра, прогресс, даты начала и окончания, а также личные заметки. Каждое действие, выполняемое в приложении, протоколируется, что позволяет пользователям вести историю своих взаимодействий, таких как добавление новых медиафайлов, начало просмотра или чтения и возобновление приостановленного контента. + + + Одной из примечательных особенностей Yamtrack является его гибкость в управлении как автоматически импортируемыми данными из популярных сервисов, так и созданными вручную записями для медиа-элементов, которые могут быть недоступны через внешние API. Это обеспечивает персонализированное и полное отслеживание. Пользователи могут организовывать отслеживаемые медиафайлы в собственные списки и делиться этими коллекциями с другими, улучшая взаимодействие с сообществом. Представление календаря предоставляет обзор предстоящих выпусков, информируя пользователей о новом контенте, соответствующем их интересам. Уведомления можно настроить через различные платформы, такие как Discord, Telegram, Slack и электронную почту с помощью Appprise, что позволяет пользователям быть в курсе новых выпусков или других важных событий. + + + Yamtrack поддерживает несколько пользователей, каждый со своими учетными записями и персонализированными данными отслеживания, что делает его подходящим для домашних хозяйств или небольших групп медиа-энтузиастов. Интеграция с Jellyfin позволяет автоматически отслеживать эпизоды после их просмотра, плавно связывая воспроизведение мультимедиа с данными отслеживания. Импорт данных поддерживается из нескольких известных сервисов, включая Trakt, Simkl, MyAnimeList, The Movie Database, AniList и Kitsu, что позволяет пользователям легко переносить существующую информацию об отслеживании мультимедиа. Пользователи также имеют возможность экспортировать все свои отслеживаемые данные в файл CSV и повторно импортировать их при необходимости. + + + Yamtrack активно развивается с регулярными обновлениями, которые расширяют его функциональность, например, улучшают интеграцию с медиа-серверами и улучшают возможности поиска видеоигр. Пользователи ценят приложение за простоту использования, комплексные функции отслеживания и возможность конфиденциально размещать свои собственные данные, не полагаясь на сторонние платформы. Это ценный инструмент для тех, кто хочет вести подробный и организованный учет своего разнообразного медиапотребления в одном централизованном месте. +developer: Xila Cai +website: https://github.com/FuzzyGrim/Yamtrack +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3157 +repo: https://github.com/FuzzyGrim/Yamtrack +support: https://github.com/FuzzyGrim/Yamtrack/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg + - 6.jpg +dependencies: [] +releaseNotes: >- + В этом выпуске исправлена ошибка, появившаяся в версии 0.25.1: + - Исправлена проблема, из-за которой завершение телешоу могло неправильно помечать прошлые неотслеживаемые сезоны как «Планирование» — теперь такое поведение вызывается только вновь обнаруженными будущими сезонами. + + + Основные моменты предыдущего выпуска включают в себя: + - Добавлена информация об актерах на страницах с описанием фильма. + - Добавлены поставщики услуг просмотра на страницах сведений о мультимедиа. + - Добавлена возможность скрыть завершенные медиафайлы в рекомендациях. + - Добавлена возможность скрыть медиа-оценку на карточках, когда рейтинг равен 0. + - Показ DLC к играм + - Добавлены запланированные медиа на главный экран. + - Автоматически отмечать следующий телесезон как «В процессе», когда текущий сезон завершен. + - Добавлено сочетание клавиш `/` для фокусировки на панели поиска. + - Исправлена пометка телешоу как завершенного, а также завершение невыходящих в эфир сезонов. + - Исправлен календарь, в котором не отображались выпуски игр. + + + Полные примечания к выпуску можно найти по адресу https://github.com/FuzzyGrim/Yamtrack/releases. +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/yamtrack/docker-compose.yml b/yamtrack/docker-compose.yml new file mode 100644 index 0000000..f8455c0 --- /dev/null +++ b/yamtrack/docker-compose.yml @@ -0,0 +1,29 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: yamtrack_web_1 + APP_PORT: 8000 + + web: + image: ghcr.io/fuzzygrim/yamtrack:0.25.2@sha256:928df13c46c9f615b37f5ef1eb5a87fc8813f5941f28c7d8227af73d291b0d19 + # пока не работает без рута + # user: "1000:1000" + restart: on-failure + security_opt: + - no-new-privileges:true + depends_on: + - redis + environment: + SECRET: ${APP_SEED} + REDIS_URL: redis://yamtrack_redis_1:6379 + volumes: + - ${APP_DATA_DIR}/data/db:/yamtrack/db:rw + + redis: + image: redis:8.0.2@sha256:b43d2dcbbdb1f9e1582e3a0f37e53bf79038522ccffb56a25858969d7a9b6c11 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/redis:/data:rw diff --git a/yucca/data/data/.gitkeep b/yucca/data/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/yucca/data/ffmpeg/.gitkeep b/yucca/data/ffmpeg/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/yucca/dfwebos-app.yml b/yucca/dfwebos-app.yml new file mode 100644 index 0000000..82437cc --- /dev/null +++ b/yucca/dfwebos-app.yml @@ -0,0 +1,30 @@ +manifestVersion: 1 +id: yucca +category: automation +name: Yucca +version: "0.12.0" +tagline: Простое решение для видеонаблюдения NVR +description: >- + Yucca — это простое решение для видеонаблюдения NVR для дома и бизнеса. + Он предназначен для поддержки безопасных городов с тысячами камер, абонентскими услугами и самостоятельным домашним использованием. + + + [Приложение для Android](https://play.google.com/store/apps/details?id=app.yucca.android&utm_source=dfwebos) +releaseNotes: >- + Этот выпуск содержит исправления ошибок и улучшения производительности. +developer: Yucca Stream +website: https://yucca.app/ +repo: "" +support: https://docs.yucca.app/en/support/ +port: 9910 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +path: "" +deterministicPassword: false +dependencies: [] +submitter: YuccaStream +submission: https://github.com/getumbrel/dfwebos-apps/pull/1071 diff --git a/yucca/docker-compose.yml b/yucca/docker-compose.yml new file mode 100644 index 0000000..d9f3a68 --- /dev/null +++ b/yucca/docker-compose.yml @@ -0,0 +1,23 @@ +version: "3.8" + +services: + app_proxy: + environment: + APP_HOST: yucca_yucca_1 + APP_PORT: 9910 + PROXY_AUTH_WHITELIST: "/v1/*" + + yucca: + image: yuccastream/yucca:0.12.0@sha256:815909dda5241cc56bf856967bd12c1aa7f44c35831574fae758b849851632ab + restart: on-failure + shm_size: "128mb" + working_dir: /opt/yucca + volumes: + - "${APP_DATA_DIR}/data/data:/opt/yucca/data" + - "${APP_DATA_DIR}/data/ffmpeg:/opt/yucca/ffmpeg" + ports: + - 10925:10925 # SMTP server + - 9912:9912 # telemetry (prometheus) + environment: # Read more about configuration here https://docs.yucca.app/en/configuration/ + YUCCA_SERVER_DATA_DIR: "/opt/yucca/data" + YUCCA_SMTP_SERVER_LISTEN_ADDRESS: ":10925" diff --git a/zabbix/data/postgres/.gitkeep b/zabbix/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/zabbix/dfwebos-app.yml b/zabbix/dfwebos-app.yml new file mode 100644 index 0000000..880b4f8 --- /dev/null +++ b/zabbix/dfwebos-app.yml @@ -0,0 +1,59 @@ +manifestVersion: 1.1 +id: zabbix +category: networking +name: Zabbix +tagline: Универсальное решение с открытым исходным кодом, позволяющее контролировать что угодно. +version: "7.4.8" +description: >- + ⚠️ Инициализация Zabbix после установки может занять несколько минут. Пожалуйста, будьте терпеливы. + + + Решение для распределенного мониторинга корпоративного класса с открытым исходным кодом, предназначенное для мониторинга производительности и доступности сетевых устройств, серверов, служб и других ИТ-ресурсов. + Zabbix — это гибкое решение, которое может отслеживать что угодно, от простого автономного приложения до крупномасштабной среды, со следующими функциями: + - Обнаружение ресурсов: обнаружение сетевых объектов, ресурсов сервера и встроенных/внешних устройств. Используйте готовые интеграции (шаблоны) для мониторинга всего, от устройства низкого уровня до службы SAAS. + - Сбор показателей: используйте агентный или безагентный подход для сбора показателей из любого источника — устройств, датчиков, операционных систем, платформ виртуализации, контейнерных платформ, таких как Docker, Kubernetes, облачных инфраструктур, баз данных, веб-страниц, экосистем Java, серверов приложений, конечных точек API, бизнес-приложений и многого другого. + - Анализ первопричин и обнаружение проблем: рассчитывайте на высокопроизводительное обнаружение проблем в режиме реального времени, которое сопоставляет как существующие, так и возникающие проблемы, а также выполняет анализ первопричин. + - Инциденты, оповещения и уведомления: получайте оповещения, когда в экосистеме возникает проблема (превентивно или посмертно). Используйте несколько каналов обмена сообщениями (включая Slack, JIRA, Microsoft Teams, электронную почту или текстовые сообщения), чтобы получать уведомления о различных типах событий, происходящих в вашей среде.- Обзор «единого окна»: визуализируйте собранные данные и события мониторинга в графиках, списках, географических картах и ​​картах топологии сети. + - Мультиарендность и распределенный мониторинг: наслаждайтесь удобством одного решения для мониторинга нескольких центров обработки данных, отделов и организаций, а также контролируйте удаленные местоположения за брандмауэрами с возможностью удаленного выполнения команд. + - Непревзойденная гибкость: адаптируйте Zabbix к вашим потребностям и используйте встроенные функции, включая возможность потоковой передачи метрик и событий через HTTP, составление отчетов, аудит, безопасность, расчеты сервисного соглашения об уровне обслуживания и многое другое. + + + ⚙️Конфигурация: + + + Агент Zabbix прослушивает порт 10050. Чтобы контролировать сам сервер Zabbix, перейдите в раздел «Мониторинг > Хосты в Zabbix» и измените хост «сервер Zabbix», добавив DNS-имя «zabbix_zabbix-agent_1» и переключив опцию «Подключиться к DNS». +developer: Zabbix LLC +website: https://www.zabbix.com/ +dependencies: [] +repo: https://github.com/zabbix/zabbix +support: https://www.zabbix.com/support +port: 10052 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "Admin" +defaultPassword: "zabbix" +torOnly: false +releaseNotes: >- + Это основной выпуск, в котором улучшены и усовершенствованы средства мониторинга корпоративного класса. + + + Ключевые моменты этого выпуска включают в себя: + - Добавлена поддержка каскадных (вложенных) рабочих процессов обнаружения низкого уровня (LLD). + - Реализован мастер хостов API и встроенная проверка формы для хостов, элементов и триггеров. + - Добавлена поддержка OAuth для типа носителя электронной почты и поддержка TLS для связи между интерфейсом и сервером. + - Реализовано разрешение макросов Vault на прокси-серверах Zabbix для повышения безопасности. + - Обновлена максимальная поддерживаемая версия TimescaleDB до 2.25 и PostgreSQL до 17. + - Добавлен новый виджет «Карточка товара» и реорганизованы графики в модальные окна MVC. + - Добавлена поддержка прототипов хостов на обнаруженных хостах. + - Исправлены сценарии сбоя Zabbix Proxy и сервера в процессах обнаружения и менеджера высокой доступности. + - Исправлено отображение графиков для элементов, использующих регулирование и неправильную окраску в списках прокси. + - Исправлены настройки хранилища сеансов по умолчанию и улучшена логика очистки кэша истории. + - Улучшен рабочий процесс Teams и типы мультимедиа Telegram с поддержкой тем супергруппы. + + + Полные примечания к выпуску доступны по адресу https://www.zabbix.com/release_notes. +submitter: DavidGarciaCat +submission: https://github.com/getumbrel/dfwebos-apps/pull/1376 diff --git a/zabbix/docker-compose.yml b/zabbix/docker-compose.yml new file mode 100644 index 0000000..3a2f564 --- /dev/null +++ b/zabbix/docker-compose.yml @@ -0,0 +1,56 @@ +version: "3.7" + +services: + + app_proxy: + environment: + APP_HOST: zabbix_zabbix-frontend_1 + APP_PORT: 8080 + + zabbix-frontend: + image: zabbix/zabbix-web-nginx-pgsql:7.4.8-alpine@sha256:4d23de6390cc1b176214598210df660d7f6904fe66e45d776948740c5a8e2abf + hostname: zabbix-frontend + restart: on-failure + environment: + DB_SERVER_HOST: zabbix-database + POSTGRES_USER: zabbix + POSTGRES_PASSWORD: zabbix + ZBX_SERVER_HOST: zabbix-server + PHP_TZ: UTC + depends_on: + - zabbix-server + - zabbix-database + + zabbix-server: + image: zabbix/zabbix-server-pgsql:7.4.8-alpine@sha256:b118d2f69194c0bf1cb52698050db06fa06e4a11ebb271c6af889dba183e7d69 + hostname: zabbix-server + restart: on-failure + init: true + environment: + DB_SERVER_HOST: zabbix-database + POSTGRES_USER: zabbix + POSTGRES_PASSWORD: zabbix + ports: + - "10050:10050" + depends_on: + - zabbix-database + + zabbix-agent: + image: zabbix/zabbix-agent2:7.4.8-alpine@sha256:2323ac07ff647f430d48cc0fea16c844a3ff2c46308eebf8af460498b508b336 + hostname: zabbix-agent + restart: on-failure + init: true + environment: + ZBX_HOSTNAME: zabbix-agent + ZBX_SERVER_HOST: zabbix-server + + zabbix-database: + image: postgres:13.18-alpine3.20@sha256:77815c1f18ae761b0e503503a494475a03149d7ce544934ccecdbafdb3956c94 + hostname: zabbix-database + restart: on-failure + environment: + POSTGRES_PASSWORD: zabbix + POSTGRES_USER: zabbix + POSTGRES_DB: zabbix + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data diff --git a/zen/data/app/.gitkeep b/zen/data/app/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/zen/data/app/.gitkeep @@ -0,0 +1 @@ + diff --git a/zen/data/images/.gitkeep b/zen/data/images/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/zen/data/images/.gitkeep @@ -0,0 +1 @@ + diff --git a/zen/dfwebos-app.yml b/zen/dfwebos-app.yml new file mode 100644 index 0000000..d2cf7f6 --- /dev/null +++ b/zen/dfwebos-app.yml @@ -0,0 +1,57 @@ +manifestVersion: 1 +id: zen +name: Zen +tagline: Простое приложение для целенаправленных и конфиденциальных заметок +category: files +version: "1.5.0" +port: 8894 +description: >- + 📒 Zen — это минималистское приложение для создания заметок, предоставляющее простой и эффективный способ сбора информации и управления ею. Он позволяет пользователям создавать заметки с использованием Markdown, поддерживая широкий спектр параметров форматирования, таких как таблицы, контрольные списки, блоки кода и выделение текста. Все заметки хранятся локально в облегченной базе данных SQLite, гарантируя, что ваши данные останутся конфиденциальными и полностью под вашим контролем. + + + Приложение предлагает понятный и не отвлекающий интерфейс, разработанный для простоты использования как на настольных, так и на мобильных устройствах. Он включает в себя мощную функцию полнотекстового поиска, которая позволяет пользователям быстро находить нужные заметки по мере их ввода, и использует теги вместо традиционных папок для гибкой организации контента. Пользователи могут загружать и просматривать изображения прямо в своих заметках, что помогает обогатить хранимую информацию. + + + Zen также предоставляет такие функции, как обратимое удаление и архивирование, которые помогают поддерживать порядок на рабочем месте без безвозвратной потери информации. Сочетания клавиш повышают производительность, обеспечивая быструю навигацию и редактирование, не полагаясь исключительно на мышь. Приложение поддерживает автономное использование благодаря своим прогрессивным функциям веб-приложения, поэтому вы можете получать доступ к своим заметкам и редактировать их даже без подключения к Интернету. + + + В целом, Zen представляет собой легкий, быстрый и ориентированный на конфиденциальность инструмент для управления личными знаниями, ведения журналов или простого ведения заметок, предоставляя вам полный контроль над вашими данными в удобной для пользователя среде. +developer: Sheshbabu +website: https://www.sheshbabu.com/zen/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/3555 +repo: https://github.com/sheshbabu/zen +support: https://github.com/sheshbabu/zen/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + Этот выпуск содержит несколько интересных новых функций и улучшений: + + + Новые возможности: + - Основные моменты поиска, которые помогут вам быстрее находить контент. + - Оглавление для облегчения навигации по длинным заметкам. + - Функция закрепленных заметок, позволяющая держать важные заметки вверху. + - Функция шаблонов для быстрого создания заметок с предопределенной структурой. + - Функция очистки мусора, позволяющая безвозвратно удалить все удаленные заметки одновременно. + - Семантический поиск для более интеллектуального обнаружения контента. + - Поддержка Canvas для организации визуальных заметок с помощью функции перетаскивания. + - Заметки для быстрых мыслей и напоминаний. + - Поиск сходства изображений для поиска похожих изображений. + + + Улучшения: + - Расширенный поиск: результаты изображений отображаются в виде сетки. + - Улучшенный просмотр на мобильных устройствах с заголовками списков. + - Панель инструментов «Закрепленный список» для облегчения доступа. + - Улучшена видимость и стиль оглавления. + - Улучшена интеграция лайтбокса с кнопками закрытия и похожих изображений. + - Просмотр настроек переключателя теперь сохраняется локально. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/zen/docker-compose.yml b/zen/docker-compose.yml new file mode 100644 index 0000000..2d62dc8 --- /dev/null +++ b/zen/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: zen_app_1 + APP_PORT: 8080 + + app: + image: ghcr.io/sheshbabu/zen/zen:1.5.0@sha256:370d7ae0d8b4d06593b44ffa1cfde5d15c7f80abe4bbe8d94e86d8d29e250270 + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/app:/data + - ${APP_DATA_DIR}/data/images:/images diff --git a/zeronote/dfwebos-app.yml b/zeronote/dfwebos-app.yml new file mode 100644 index 0000000..5f92cdf --- /dev/null +++ b/zeronote/dfwebos-app.yml @@ -0,0 +1,25 @@ +manifestVersion: 1 +id: zeronote +name: ZeroNote +version: "1.0.7" +tagline: "Все ваши заметки, пароли, закладки и 2FA в одном безопасном автономном приложении." +category: files +description: "ZeroNote — это унифицированное приложение с открытым исходным кодом, ориентированное прежде всего в автономном режиме, которое заменяет ваш менеджер паролей, менеджер закладок, приложение для заметок и 2FA-аутентификатор единой зашифрованной системой создания заметок на базе смарт-тегов, где все хранится локально на вашем устройстве с шифрованием с нулевым разглашением и дополнительной одноранговой синхронизацией или синхронизацией S3." +developer: "besoeasy" +website: "https://github.com/besoeasy/zeronote" +repo: "https://github.com/besoeasy/zeronote" +support: "https://github.com/besoeasy/zeronote/issues" +port: 8000 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg +releaseNotes: >- + Это обновление содержит различные улучшения и исправления ошибок. +dependencies: [] +path: "/" +defaultUsername: "" +defaultPassword: "" +submitter: besoeasy +submission: https://github.com/getumbrel/dfwebos-apps/pull/4053 diff --git a/zeronote/docker-compose.yml b/zeronote/docker-compose.yml new file mode 100644 index 0000000..9e9ba37 --- /dev/null +++ b/zeronote/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.7" +services: + app_proxy: + environment: + APP_HOST: zeronote_app_1 + APP_PORT: 8000 + + app: + image: ghcr.io/besoeasy/zeronote:1.0.7@sha256:368672d8bdc03a3a0632f241e4a53a2fed1240093eb88c82360c7d112474cbbe + user: "1000:1000" + restart: on-failure + stop_grace_period: 5m + environment: + - NODE_ENV=production diff --git a/zigbee2mqtt/data/.gitkeep b/zigbee2mqtt/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/zigbee2mqtt/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/zigbee2mqtt/dfwebos-app.yml b/zigbee2mqtt/dfwebos-app.yml new file mode 100644 index 0000000..738b83e --- /dev/null +++ b/zigbee2mqtt/dfwebos-app.yml @@ -0,0 +1,58 @@ +manifestVersion: 1 +id: "zigbee2mqtt" +name: "Zigbee2MQTT" +tagline: "Мост Zigbee-MQTT, избавьтесь от собственных мостов Zigbee" +category: "automation" +version: "2.9.2" +port: 60082 +description: >- + Позволяет использовать устройства Zigbee без моста или шлюза поставщика. + + Он объединяет события и позволяет вам управлять вашими устройствами Zigbee через MQTT. Таким образом, вы можете интегрировать свои устройства Zigbee с любой инфраструктурой умного дома, которую вы используете. + + + **Совместимый** + + Zigbee2MQTT поддерживает различные адаптеры Zigbee и множество устройств. + + + **Интеграция** + + Zigbee2MQTT хорошо интегрируется с большинством решений домашней автоматизации, поскольку использует MQTT. + + + **Открытый исходный код** + + Zigbee2MQTT распространяется под лицензией GNU General Public License 3. + + + **Настраивать** + + После установки вам откроется мастер установки. Выберите свое устройство и начните. После настройки вам необходимо повторно открыть приложение для доступа к веб-интерфейсу. +developer: "@Koenkk" +website: "https://www.zigbee2mqtt.io/" +submitter: "dirstel" +submission: "https://github.com/getumbrel/dfwebos-apps/pull/2472" +repo: "https://github.com/Koenkk/zigbee2mqtt" +support: "https://github.com/Koenkk/zigbee2mqtt/issues" +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +releaseNotes: >- + Это обновление содержит различные улучшения и исправления. + + + Ключевые моменты включают в себя: + - Вновь введены улучшения регистрации и исправлена обработка URL-адресов высокой доступности при регистрации. + - Home Assistant: исправлены имена объектов для производных датчиков погоды. + - Исправлен опрос отключенных устройств. + - Улучшения внешнего интерфейса, включая быстрые кнопки для создания отчетов, новую вкладку документации по устройству и переключаемый обзор на главной странице. + - Поддержка 69 новых устройств, включая лампы «Третьей реальности», датчики SONOFF, лампы Philips Hue, вилки IKEA и различные термостаты. + - Различные улучшения устройств и исправления ошибок для многих брендов, включая Shelly, Tuya, Aqara, Danfoss, Schneider Electric и других. + + + Полные примечания к выпуску можно найти по адресу https://github.com/Koenkk/zigbee2mqtt/releases. +dependencies: + - mosquitto +path: "" diff --git a/zigbee2mqtt/docker-compose.yml b/zigbee2mqtt/docker-compose.yml new file mode 100644 index 0000000..67e3270 --- /dev/null +++ b/zigbee2mqtt/docker-compose.yml @@ -0,0 +1,19 @@ +services: + + app_proxy: + environment: + APP_HOST: zigbee2mqtt_app_1 + APP_PORT: 8080 + + app: + image: koenkk/zigbee2mqtt:2.9.2@sha256:2a21bbf7a664a149024bbe1f776e3151f28ed9db15948270dcbffb89544a41f0 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data:/app/data:rw + - /run/udev:/run/udev:ro + privileged: true + environment: + ZIGBEE2MQTT_CONFIG_FRONTEND_ENABLED: "true" + ZIGBEE2MQTT_CONFIG_FRONTEND_PORT: 8080 + ZIGBEE2MQTT_CONFIG_MQTT_SERVER: "mqtt://mosquitto_broker_1:1883" + Z2M_ONBOARD_NO_REDIRECT: 1 diff --git a/zoraxy/data/config/.gitkeep b/zoraxy/data/config/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/zoraxy/data/config/.gitkeep @@ -0,0 +1 @@ + diff --git a/zoraxy/dfwebos-app.yml b/zoraxy/dfwebos-app.yml new file mode 100644 index 0000000..ed24090 --- /dev/null +++ b/zoraxy/dfwebos-app.yml @@ -0,0 +1,76 @@ +manifestVersion: 1 +id: zoraxy +name: Zoraxy +tagline: Эффективный обратный прокси-сервер с автоматическим управлением SSL. +category: networking +version: "3.3.2" +port: 8400 +description: >- + Легко и безопасно размещайте свои приложения в Интернете. + + + ⚠️ Будьте осторожны, публикуя приложения в общедоступном Интернете. Убедитесь, что они имеют надлежащую безопасность, например защиту входа в систему, и избегайте раскрытия конфиденциальных приложений без надлежащих мер безопасности. + + 🔧 Zoraxy Proxy Manager использует порт 41080 для HTTP (незащищенного) трафика и порт 41443 для HTTPS (защищенного) трафика. + Чтобы сделать ваши приложения доступными из общедоступного Интернета, вам необходимо настроить переадресацию портов на маршрутизаторе. + Перенаправьте внешний порт 80 (HTTP) на внутренний порт 41080 и внешний порт 443 (HTTPS) на внутренний порт 41443. + + + Zoraxy — это мощный, удобный обратный прокси-сервер и инструмент перенаправления, разработанный для обеспечения простого, гибкого и безопасного метода управления веб-трафиком в домашних лабораториях и средах разработки. Написанный на Go, Zoraxy обслуживает как новичков, так и опытных пользователей, упрощая процесс маршрутизации HTTP-запросов на внутренние серверы, обеспечивая эффективное и надежное управление услугами, не полагаясь на традиционные, более сложные серверы, такие как NGINX или Apache. + + + Ключевые особенности: + + + 🔀 Поддержка обратного прокси и WebSocket: Zoraxy обрабатывает соединения HTTP/2 и автоматически поддерживает проксирование WebSocket, что делает его идеальным для приложений реального времени, которым требуется стабильное соединение с низкой задержкой, таких как чат-сервисы или информационные панели. Он также обеспечивает обратное проксирование между виртуальными каталогами и поддерживает псевдонимы хостов и настраиваемые заголовки для повышения гибкости. + + + 🤖 TLS/SSL с автоматизацией ACME: Zoraxy упрощает настройку HTTPS с помощью ACME, что позволяет автоматически обновлять сертификаты SSL через таких поставщиков, как Let's Encrypt. Эта функция поддерживает сертификаты SNI (индикация имени сервера) и SAN (альтернативное имя субъекта), помогая пользователям безопасно обслуживать несколько доменов с минимальным вмешательством вручную. + + + 📍 Внесение в черный и белый списки гео-IP. Безопасность повышается за счет предложения черных и белых списков на основе гео-IP и IP-адресов, что позволяет пользователям ограничивать доступ на основе местоположения или определенных IP-адресов. Эта функция особенно полезна для защиты приложений и служб из определенных регионов или ненадежных IP-адресов. + + + 🌐 Глобальный сетевой контроллер и интеграция ZeroTier: для распределенных сетей Zoraxy предоставляет встроенный интерфейс контроллера для управления сетями ZeroTier, обеспечивающий безопасные и масштабируемые соединения между несколькими узлами. Эта функция особенно ценна для энтузиастов домашних лабораторий и разработчиков, создающих частные сети с ограниченным внешним доступом. Сообщество Zoraxy DEV. + + + 🛠️ Встроенные утилиты: Zoraxy выходит за рамки традиционных функций обратного прокси-сервера и включает в себя такие утилиты, как преобразование IP-адресов CIDR, сканер mDNS для обнаружения локальной сети и инструменты для отладки прокси-соединений. Терминал Web-SSH позволяет удаленно управлять подключенными устройствами в сети, а поддержка Wake-on-LAN еще больше расширяет возможности использования Zoraxy для сетевых администраторов. + + + 📊 Потоковое проксирование и мониторинг. Помимо HTTP/HTTPS, Zoraxy поддерживает проксирование потоков TCP и UDP, что делает его универсальным выбором для обработки различных потоков данных. Интегрированный мониторинг безотказной работы и неперсонализированная аналитика трафика позволяют получить представление о сетевой активности без использования файлов cookie, повышая конфиденциальность и позволяя пользователям отслеживать производительность услуг непосредственно в Zoraxy. + + + 🖥️ Простой интерфейс и интеграция: интерфейс Zoraxy интуитивно понятен и содержит подробные инструкции по настройке для менее опытных пользователей. В расширенных конфигурациях можно отключить аутентификацию для интеграции с существующими инфраструктурами, использующими управление разрешениями. Кроме того, режим управления с одним администратором упрощает работу в частных сетях, аналогично управлению домашним маршрутизатором. + + + Zoraxy особенно популярен в домашних лабораториях и сообществах разработчиков благодаря своему обширному набору функций, надежности и открытому исходному коду. Его можно запускать на устройствах с низким энергопотреблением, что делает его подходящим для различных сред хостинга, от персональных настроек до более крупных распределенных сетевых архитектур. Его гибкость в сочетании с надежным набором функций делает его привлекательным выбором для тех, кто хочет оптимизировать настройку управления сетью или безопасно и эффективно размещать веб-сервисы. +developer: Toby Chui +website: https://zoraxy.aroz.org/ +submitter: dennysubke +submission: https://github.com/getumbrel/dfwebos-apps/pull/1751 +repo: https://github.com/tobychui/zoraxy +support: https://github.com/tobychui/zoraxy/issues +gallery: + - 1.jpg + - 2.jpg + - 3.jpg + - 4.jpg + - 5.jpg +releaseNotes: >- + В этой версии представлены новые функции и существенные улучшения. + + + Основные моменты: + - Настройки доверенного прокси в системе правил доступа + - Поддержка единого входа Zoraxy Auth. + - Значительные улучшения в мониторе безотказной работы. + - Веб-файловый менеджер заменен на сервер WebDAV для более безопасного и универсального доступа к файлам. + - Улучшено повторное использование соединений и общая производительность прокси. + - Переадресация сохранения авторизации и исправления настроек по умолчанию. + + + Полные примечания к выпуску можно найти по адресу https://github.com/tobychui/zoraxy/releases. +dependencies: [] +path: "" +defaultUsername: "" +defaultPassword: "" diff --git a/zoraxy/docker-compose.yml b/zoraxy/docker-compose.yml new file mode 100644 index 0000000..59157c5 --- /dev/null +++ b/zoraxy/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.7' + +services: + app_proxy: + environment: + APP_HOST: zoraxy_server_1 + APP_PORT: 8000 + + server: + image: zoraxydocker/zoraxy:v3.3.2@sha256:2d4bcfb9fe4073c33242b452374017f61e1e4be2f8dc59d963c0359b6e02d3b5 + restart: on-failure + ports: + - 41080:80 + - 41443:443 + volumes: + - ${APP_DATA_DIR}/data/config/:/opt/zoraxy/config + - /etc/localtime:/etc/localtime:ro + environment: + FASTGEOIP: "false" + ZEROTIER: "false" + DOCKER: "false" + NOAUTH: "true"