Окрім програм з графічним та текстовим інтерфейсом останнім часом популярність набирають програми з веб-інтерфейсом, які можна розмістити на власному сервері в хмарі, або в локальній мережі і використовувати з кількох пристроїв. Це називається self-hosting.
Мова йде не тільки серйозні програми для моніторингу серверів, обробки логів і т д, але й часто щось для вирішення більш простих буденних завдань, наприклад, зберігання та читання книг, нотаток, стрімінгу фільмів або музики, і навіть пошуку мемів. В цій статті зібрано 10 корисних программ для домашнього сервера з веб-інтерфейсом, які ви можете встановити та використовувати.
Зміст
Чому це взагалі потрібно?
Для вирішення більшості проблем программ, які запускаються на одному комп'ютері і мають графічний інтерфейс чи інтерфейс командного рядка достатньо. Але програми, запущені на окремому сервері мають декілька переваг:
- Доступ з кількох пристроїв - ви можете отримати доступ до ваших даних не залежно від пристрою який використовуєте, на комп'ютері, на телефоні, ноутбуці. В багатьох таких програм є навіть застосунки для Android та iOS.
- Безперервна робота - програми на комп'ютері працюють лише тоді коли компьютер увімкнено. В той же час якщо у вас є сервер на Raspberry Pi з низьким енергоспоживанням, то запущені програми з веб-інтерфейсом можуть виконувати роботу в фоні 24/7.
- Легко переносити данні - час від часу операційну систему на комп'ютері треба перевстановлювати, у випадку з Linux, наприклад, для переходу на інший дистрибутив чи оновлення версії, і тоді вам треба перенести всі данні і програми в нову систему. У випадку з сервером, ви можете не перевстановлювати систему досить довго. Можна встановити NixOS, а самі програми запускати в контейнерах Docker, які у випадку чого буде просто перенести в іншу систему де підтримується Docker.
- Тренування навиків роботи з інфраструктурою - крім всього вище перерахованого, ви отримуєте майже production сервер, який так чи інакше потрібно обслуговувати. Ви можете тут розбиратись з новими технологіями, досліджувати як все працює чи як краще реалізувати ту чи іншу конфігурацію, і тому подібне.
Як це робити?
Звісно це все можна запускати і на комп'ютері, яким ви користуєтесь, але тоді це трохи втрачає сенс. Краще для цього використовувати старий ноутбук, мінікомпютер, або Raspberry Pi. Третьої версії Raspberry Pi може бути не достатньо, але 4-та та 5-та з 8 Гб оперативної пам'яті будуть цілком справлятись.
В якості операційної системи може бути будь-який серверний Linux дистрибутив. Непоганий вибір - NixOS. Система складна в налаштуванні, але потім конфігурацію буде дуже просто відтворити на іншому пристрої або після оновлення. А самі програми зручніше за все запускати в контейнерах. Це безпечніше, а також налаштовані за допомогою docker compose контейнери можна дуже просто розгорнути будь-де, де підтримується docker.
Всі перечислені в цьому списку програми можна встановити за допомогою Docker Compose, тому це не має бути проблемою. По кожній програмі буде приведено простий приклад конфігурації docker compose, яка не є готовою до повсякденного використання, але дозволяє подивитись як працює програма.
Краще не давати доступ до цього всього з інтернету, без додаткової авторизації. Програмне забезпечення, в тому числі те що з веб-інтерфейсом, може містити помилки та вразливості, які можуть призвести до зараження вашого сервера вірусами та витоку даних.
Корисні програми для домашнього сервера
В цій статті не буде программ для моніторингу стану серверів і тому подібного. Зосередимось на програмах які можна використовувати для вирішення повсякденних задач та покращення зручності користування системою. За допомогою таких программ ви можете зробити свій аналог екосистеми Apple чи Google в локальній мережі.
1. NextCloud
- Технології: PHP/Symfony, Javascript/Vue
- Кількість зірок: 33к
- Мінімальний об'єм RAM: 4 Гб
- Вимоги до процесора: x64/arm64
NextCloud можна вважати альтернативою для Google Cloud. За допомогою програми ви можете налаштувати синхронізацію файлів з телефону та компьютера. А за допомогою розширень, які тут називаються додатками можна покращити зручність роботи з цими файлами, налаштувати додаткові синхронізації чи автоматизації. Фактично це хмарне сховище з веб-інтерфейсом і підтримкою плагінів. На відмінно від Google Drive, об'єм сховища обмежений тільки розміром HDD чи SSD який ви туди поставите, а варіанти використання, вашою здатністю налаштовувати та уявою. На сайті вже є стаття про те як налаштувати NextCloud.
Більшість програм перелічених нижче теж свого роду хмарні сховища, але вони більш специфічні та мають додаткові функції для роботи з певним типом файлів, як-то музика, фільми, документи чи книги.
services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
container_name: nextcloud
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./config:/config
- ./data:/data
ports:
- 443:443
restart: unless-stopped
2. Navidrome
- Технології: Go, JavaScript
- Кількість зірок: 18k
- Мінімальна кількість RAM: 1 Гб
- Вимоги до процессора: x86 32/64bit або ARM
Це медіа-стрімінг платформа, яку можна розмістити на власному сервері. Зазвичай вона використовується для музики. Тут підтримується багато медіа форматів, музику можна організовувати по виконавцям, альбомам, плейлистам. Прослуховувати музику можна в веб-інтерфейсі, або за допомогою будь-якого клієнта який підтримує Subsonic API, наприклад за допомогою Android застосунку DSub2000.
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000
ports:
- "4533:4533"
restart: unless-stopped
volumes:
- ./data:/data
- ./music:/music:ro
3. Kavita
- Технології: С#, TypeScript
- Кількість зірок: 9k
- Мінімальний об'єм RAM: 512 Мб
- Вимоги до процессора: x64/arm64, з підтримкою SSE4.2
Kavita - це альтернатива Kindle, яку можна розмістити на власному сервері, для того щоб читати книги які ви купили не в Amazon в форматах PDF, EPUB, та інших, з тією ж зручністю що і в Kindle. Ви надаєте доступ програмі до каталогу з книгами, програма сканує їх в бібліотеку, а потім ви можете читати ці книги в веб-інтерфейсі. В програми поки немає офіційного кліента для мобільних телефонів, але оскільки в неї є веб-інтерфейс, то відкрити його можна з будь-якого пристрою.
services:
kavita:
image: lscr.io/linuxserver/kavita:latest
container_name: kavita
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./config:/config
- ./data:/data
ports:
- 5000:5000
restart: unless-stopped
4. Jellyfin
- Технології: С#, JavaScript
- Кількість зірок: 47k
- Мінімальна кількість RAM: 8 Гб
- Вимоги до процессора: Intel Core i5-11400, Intel Pentium Gold G7400, Intel N100, Apple M або новіше
Jellyfin - медіа система розроблена на .NET за допомогою якої можна стрімити свої відео і аудіо файли на інші пристрої, або переглядати їх в веб-інтерфейсі. Аналогічно для Kavita тут необхідно вказати папку в якій знаходяться файли медіа. Крім перегляду відео, програма завантажує мета данні для ваших файлів, а також підтримує перекодування форматів. Також тут доступні клієнти для різних платформ, включаючи Linux, Windows та Android і iOS.
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./config:/config
- ./tvseries:/data/tvshows
- ./movies:/data/movies
ports:
- 8096:8096
- 8920:8920
- 7359:7359/udp
- 1900:1900/udp
restart: unless-stopped
5. Storyteller Reader
- Технології: NodeJS/React
- Кількість зірок: 100
- Мінімальна кількість RAM: 8 Гб
- Вимоги до процессора: Intel/AMD або ARM64
Storyteller - це хмарне сховище для аудіокниг, яке ви можете розмістити на своєму сервері. Програма складається з серверної частини, де зберігаються файли книг, а також застосунку для телефону, за допомогою якого можна ті книги можна зберегти на телефон і слухати.
Програма досить нова і не дуже популярна, але у неї є одна дуже корисна особливість. Якщо у вас є аудіо версія книги і її електронна текстова версія, то програма дозволяє їх об'єднати і слухати аудіо паралельно читаючи текст, що досить зручно при вивчені нової мови. Для цього аудіо розпізнається за допомогою Whisper і співставляється з текстом, тому програмі небхідно багато оперативної памяті. Звісно програма запам'ятовує позицію де ви зупинились і має режим сну та налаштування швидкості відтворення.
services:
web:
image: registry.gitlab.com/storyteller-platform/storyteller:latest
volumes:
- ./data:/data:rw
environment:
- STORYTELLER_SECRET_KEY=changemechangemechangeme
ports:
- "8001:8001"
6. Paperless-NGX
- Технології: Python, TypeScript
- Кількість зірок: 35k
- Мінімальна кількість RAM: 2 Гб
- Вимоги для процессора: x64 або ARM64.
Програма дозволяє зберігати та організовувати документи, її особливість - це підтримка розпізнавання тексту на документах за допомогою Tesseract. Ви завантажуєте документ, а програма індексує його вміст, дозволяючи потім дуже швидко і просто знаходити потрібні документи. Вся обробка відбувається локально. Крім того документам можна присвоювати теги, а також організувати їх по папкам. Підтримуються PDF, зображення, текстові файли, та багато форматів офісних програм.
services:
paperless-ngx:
image: lscr.io/linuxserver/paperless-ngx:latest
container_name: paperless-ngx
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./config:/config
- ./data:/data
ports:
- 8000:8000
restart: unless-stopped
7. KaraKeep
- Технології: TypeScript
- Кількість зірок: 22k
- Мінімальна кількість RAM: 2 Гб
- Процессор: x64 або ARM64
Ця програма може допомогти закрити врешті решт ваші 100+ вкладок в браузері, оскільки це менеджер закладок з підтримкою AI функцій. Програма стала популярною недавно і раніше називалась Hoarder. Вона має розширення для браузерів (Chrome/Firefox), за допомогою яких можна відправити посилання на будь-яку сторінку в закладки, які потім можна дивитись в веб-інтерфейсі програми, або ж в мобільному застоснуку.
Всім матеріалам присвоюються теги за допомогою AI, а також підтримується повнотекстовий пошук. Доступ для AI тут треба налаштовувати. За замовчуванням використовується OpenAI, але підтримується також Ollama, а також усі OpenAI сумісні провайдери.
services:
web:
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
restart: unless-stopped
volumes:
- ./data:/data
ports:
- 3000:3000
environment:
- KARAKEEP_VERSION=release
- NEXTAUTH_SECRET=super_random_string
- NEXTAUTH_URL=http://localhost:3000
- MEILI_ADDR=http://meilisearch:7700
- BROWSER_WEB_URL=http://chrome:9222
- OPENAI_API_KEY=changeme_changeme_changeme
- OPENAI_BASE_URL=https://api.groq.com/openai/v1/
- INFERENCE_TEXT_MODEL=openai/gpt-oss-120b
- INFERENCE_IMAGE_MODEL=meta-llama/llama-guard-4-12b
- DATA_DIR=/data
chrome:
image: gcr.io/zenika-hub/alpine-chrome:124
restart: unless-stopped
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.13.3
restart: unless-stopped
environment:
- MEILI_NO_ANALYTICS=true
- MEILI_MASTER_KEY=another_random_string
volumes:
- ./meilisearch:/meili_data
8. Warracker
- Технології: Python, JavaScript
- Кількість зірок: 1k
- Мінімальна кількість RAM: 250 Мб
- Процесор: x86-64/AMD64 або ARM64
Цей сервіс дозволяє зберігати та відстежувати гарантії для вашого обладнання. Дуже просто, але цілком корисно коли щось виходить з ладу мати можливість швидко подивитись де воно було придбано і чи не закінчилась ще гарантія. Крім того в програмі можна зберігати додаткові нотатки про товари та різну документацію для них в PDF форматі.
services:
warracker:
image: ghcr.io/sassanix/warracker/main:latest
ports:
- "8005:80"
volumes:
- ./data/uploads:/data/uploads
environment:
- DB_HOST=warrackerdb
- DB_PORT=${DB_PORT:-5432}
- DB_NAME=warranty_db
- DB_USER=warranty_user
- DB_PASSWORD=${DB_PASSWORD:-warranty_password}
- SMTP_HOST=smtp.email.com
- SMTP_PORT=465
- SMTP_USERNAME=youremail@email.com
- SMTP_PASSWORD=password
- SECRET_KEY=${APP_SECRET_KEY:-your_strong_default_secret_key_here}
- MAX_UPLOAD_MB=32
- NGINX_MAX_BODY_SIZE_VALUE=32M
- OIDC_PROVIDER_NAME=${OIDC_PROVIDER_NAME:-oidc}
- OIDC_CLIENT_ID=${OIDC_CLIENT_ID:-}
- OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET:-}
- OIDC_ISSUER_URL=${OIDC_ISSUER_URL:-}
- OIDC_SCOPE=${OIDC_SCOPE:-openid email profile}
- FRONTEND_URL=${FRONTEND_URL:-http://localhost:8005}
- APP_BASE_URL=${APP_BASE_URL:-http://localhost:8005}
- WARRACKER_MEMORY_MODE=${WARRACKER_MEMORY_MODE:-optimized}
- PYTHONUNBUFFERED=1
depends_on:
warrackerdb:
condition: service_healthy
restart: unless-stopped
warrackerdb:
image: postgres:15-alpine
volumes:
- ./data/postgres:/var/lib/postgresql/data
restart: unless-stopped
environment:
- POSTGRES_DB=warranty_db
- POSTGRES_USER=warranty_user
- POSTGRES_PASSWORD=${DB_PASSWORD:-warranty_password}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 5s
timeout: 5s
retries: 5
9. MemeSearch
- Технології: Ruby/Python, JavaScript
- Кількість зірок: 600
- Об'єм RAM: 8-16 Гб
- Процессор: x86-64/AMD64
Меми вже стали частиною нашої культури і було б непогано мати можливість зберігати та знаходити меми коли це необхідно. Програма індексує меми розпізнаючи що на них зображено та текст за допомогою AI. Це дозволяє виконувати пошук по опису мему чи по словам з нього. Вся обробка виконується локально. З кирилицею програма працює не дуже, але меми англійською розпізнаються непогано.
services:
meme_search:
image: ghcr.io/neonwatty/meme_search:latest
container_name: meme_search
environment:
DATABASE_URL: "postgres://postgres:postgres@meme-search-db:5432/meme_search"
ports:
- "${APP_PORT:-3000}:3000"
depends_on:
meme_search_db:
condition: service_healthy
volumes:
- ./data/memes/:/rails/public/memes
- ./data/direct-uploads/:/rails/public/memes/direct-uploads
extra_hosts:
huggingface.co: 108.138.51.8
image_to_text_generator:
image: ghcr.io/neonwatty/image_to_text_generator:latest
container_name: image_to_text_generator
environment:
APP_PORT: "${APP_PORT:-3000}"
GEN_URL: "http://meme_search:3000"
expose:
- "8000"
volumes:
- ./data/memes/:/app/public/memes
- ./data/direct-uploads/:/app/public/memes/direct-uploads
- ./data/db_data/image_to_text_generator:/app/db
- ./data/models:/root/.cache/huggingface
meme_search_db:
image: pgvector/pgvector:pg17
container_name: meme-search-db
volumes:
- ./data/db_data/meme-search-db:/var/lib/postgresql/data
environment:
POSTGRES_DB: meme_search
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
expose:
- "5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
10. BentoPDF
- Технології: JavaScript
- Кількість зірок: 8k
- Об'єм RAM: -
- Процессор: -
Це простий інструмент для обробки PDF файлів в браузері. Тут можна конвертувати зображення в PDF, організовувати, обрізати та розвертати сторінки в документі, розділяти чи обєднувати сторінки, додавати анотації та коментарі, та багато іншого. Можливо не повноцінна заміна Adobe Acrobat, але може справитись з базовими задачами. Оскільки програма працює в браузері, то її можна запустити на будь-якому сучасному залізі.
services:
bentopdf:
image: bentopdf/bentopdf:latest
container_name: bentopdf
restart: unless-stopped
ports:
- '8080:8080'
Висновки
В цій статті ми розглянули корисні програми з веб-інтерфейсом, які ви можете встановити на свій сервер та мати доступ до них віддалено. Звісно це далеко не всі програми, є ще багато менш популярних программ, або популярних до яких я не добався потестувати. Крім того є програми групи arr. А що ви використовуєте? Напишіть в коментарях!












