Помимо программ с графическим и текстовым интерфейсом в последнее время набирают популярность программы с веб-интерфейсом, которые можно разместить на собственном сервере в облаке или в локальной сети и использовать с нескольких устройств. Это называется 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
- Технологии: C#, 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
- Технологии: C#, 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. А что используете вы? Напишите в комментариях!
Preply - платформа, позволяющая найти репетитора, который поможет вам заговорить на новом языке. На платформе есть репетиторы со всего мира для английского, немецкого, французского и многих других языков. Особенность платформы в том, что у каждого преподавателя есть видео-превью, где вы можете услышать его произношение и акцент, чтобы понять, будет ли вам комфортно работать вместе. Посмотреть детали













