Airsonic на Ubuntu 24.04: пошаговая установка
Если у вас накопилась библиотека музыки в FLAC и MP3 и хочется слушать её из любого места без привязки к Spotify и Apple Music, Airsonic закрывает эту задачу за один вечер настройки. Это форк Subsonic — сервер, который отдаёт вашу коллекцию через открытый Subsonic API, а на телефоне или в браузере её подхватывает любой из десятков совместимых клиентов. Ниже — установка с нуля на чистом VPS с Ubuntu 24.04, с транскодированием, HTTPS и разбором частых проблем.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Airsonic и стоит ли его ставить в 2026 году
Airsonic вырос из Subsonic после того, как оригинальный проект стал платным. Дальше история разошлась на два репозитория: исходный airsonic/airsonic заморожен с 2023 года и новых релизов не получает, а активно развивается форк Airsonic-Advanced (airsonic-advanced/airsonic-advanced) — именно его и стоит ставить сейчас. Он совместим по API с DSub, Substreamer, Symfonium, Amperfy, play:Sub и десятком других приложений, которые изначально писались под Subsonic.
Честно о ограничениях: проект держится силами небольшой команды энтузиастов, обновления выходят не часто, а часть функций (например, распознавание жанров или обложки для нестандартных тегов) работает не так гладко, как в коммерческих решениях. Если вам важна активная разработка и модный интерфейс — присмотритесь к Navidrome, который написан на Go, легче по ресурсам и обновляется чаще. Если же вы уже пользовались Subsonic-клиентами и хотите сохранить привычный стек — Airsonic-Advanced остаётся рабочим и бесплатным вариантом.
Для собственного медиасервера подойдёт скромный VPS: 1 vCPU, 2 ГБ RAM и диск под размер библиотеки — Java-процессу самого Airsonic хватает 300-500 МБ, но транскодирование "на лету" при одновременном прослушивании с нескольких устройств добавляет нагрузку на CPU.
Подготовка сервера
Обновите систему и создайте отдельного пользователя — запускать Java-процесс от root не стоит:
apt update && apt upgrade -y
adduser --system --group --home /var/airsonic airsonic
mkdir -p /var/airsonic/{music,podcasts,playlists,transcode}
mkdir -p /opt/airsonic
chown -R airsonic:airsonic /var/airsonic
Если библиотека музыки уже лежит на другом сервере или в облаке, смонтируйте её в /var/airsonic/music — например, через rclone mount или NFS. Для загрузки файлов напрямую по SFTP пригодится связка с SSH-ключами вместо пароля, чтобы не таскать пароли по протоколу.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверJava, ffmpeg и зависимости
Airsonic — это Java-приложение, которое запускается как standalone jar со встроенным Jetty. Проверенный вариант — OpenJDK 11: на нём Airsonic-Advanced стабильно работает годами. Более новые сборки форка заявляют поддержку и Java 17, но если после установки сервис не стартует — первое, что стоит проверить, это версия JRE.
apt install -y openjdk-11-jre-headless ffmpeg curl unzip
java -version
ffmpeg нужен для транскодирования "на лету" — например, когда клиент на мобильном интернете просит поток пониже битрейта, а исходник у вас в lossless FLAC. Убедитесь, что бинарник доступен по прямому пути:
which ffmpeg
# обычно /usr/bin/ffmpeg
Установка Airsonic-Advanced и запуск через systemd
Скачайте актуальный jar-файл со страницы релизов проекта на GitHub (версию проверьте сами — она меняется чаще, чем выходит эта статья) и положите в /opt/airsonic:
cd /opt/airsonic
curl -L -o airsonic.jar "https://github.com/airsonic-advanced/airsonic-advanced/releases/latest/download/airsonic.jar"
chown airsonic:airsonic airsonic.jar
Создайте юнит systemd, чтобы сервис поднимался автоматически и перезапускался при сбое:
# /etc/systemd/system/airsonic.service
[Unit]
Description=Airsonic Media Server
After=network.target
[Service]
User=airsonic
Group=airsonic
WorkingDirectory=/var/airsonic
ExecStart=/usr/bin/java -Xmx512m \
-Dairsonic.home=/var/airsonic \
-Dserver.port=4040 \
-Dserver.address=127.0.0.1 \
-jar /opt/airsonic/airsonic.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
-Xmx512m ограничивает кучу JVM — для библиотеки в несколько тысяч треков этого достаточно, при более крупной коллекции (десятки тысяч файлов) поднимите до 1024m. Сервер намеренно слушает только localhost (127.0.0.1:4040) — наружу его откроет reverse-proxy с HTTPS, о чём ниже.
systemctl daemon-reload
systemctl enable --now airsonic
systemctl status airsonic
Первый запуск инициализирует встроенную базу HSQLDB и займёт 20-40 секунд — если статус сразу "active (running)", а веб-интерфейс не отвечает, дайте ему время на прогрев и проверьте логи:
journalctl -u airsonic -f
Первичная настройка и медиатека
Локально на сервере (или через SSH-туннель ssh -L 4040:127.0.0.1:4040 user@server) откройте http://127.0.0.1:4040. При первом входе логин и пароль — admin/admin, их нужно сразу сменить в разделе Settings → Users.
Дальше:
- Settings → Media Folders — добавьте
/var/airsonic/musicкак папку с музыкой, при необходимости отдельно/var/airsonic/podcasts. - Settings → General → Index — запустите полное сканирование библиотеки (Scan Now). На тысячу файлов уходит от пары минут — точное время зависит от диска и структуры тегов, поэтому конкретных цифр не обещаем.
- Settings → Transcoding — проверьте, что путь до ffmpeg подхватился автоматически (
/usr/bin/ffmpeg); если нет, укажите вручную. - Settings → Personal — включите отображение обложек альбомов и, если нужно, LastFM/ListenBrainz scrobbling.
Полезная деталь: Airsonic хранит теги в собственном индексе, а не читает их заново при каждом запросе, поэтому после массового редактирования метаданных (например, через beets или MusicBrainz Picard) нужно повторно запустить сканирование, иначе клиенты покажут старые названия.
HTTPS-доступ через Caddy
Открывать Java-сервис напрямую наружу без TLS — плохая идея: Subsonic-протокол по умолчанию передаёт логин и пароль (или их MD5-хэш с солью) при каждом запросе, и без шифрования это утечка. Проще всего поднять Caddy с автоматическим SSL — он сам получит сертификат Let's Encrypt по домену.
Заранее направьте A-запись поддомена (например, music.example.com) на IP сервера — как это сделать, разобрано в статье про настройку домена и DNS. Конфиг Caddy минимальный:
# /etc/caddy/Caddyfile
music.example.com {
reverse_proxy 127.0.0.1:4040
request_body {
max_size 0
}
}
max_size 0 снимает ограничение на размер тела запроса — пригодится, если планируете загружать треки через веб-интерфейс, а не только через сканирование папки. Перезапустите Caddy и откройте домен из браузера — сертификат выпустится автоматически при первом обращении:
systemctl restart caddy
Не забудьте закрыть прямой доступ к порту 4040 извне на файрволе — если ещё не настраивали его на сервере, шаги описаны в статье про базовую настройку UFW. Открытым должен остаться только 80/443 для Caddy.
Клиентские приложения
Главное преимущество Subsonic-совместимого сервера — выбор клиента не привязан к разработчику Airsonic. Что стоит попробовать:
| Платформа | Клиент | Особенности |
|---|---|---|
| Android | Symfonium | Активно развивается, платный, гибкий кэш офлайн |
| Android | Ultrasonic | Бесплатный, открытый код, минималистичный |
| iOS | play:Sub | Полноценный клиент с офлайн-режимом |
| iOS | Amperfy | Бесплатный, поддерживает подкасты |
| Desktop/Web | сам веб-интерфейс Airsonic | Плеер прямо в браузере, без установки |
При подключении клиент попросит адрес сервера, логин и пароль — указывайте https://music.example.com (без порта, Caddy сам проксирует на 4040). Если приложение спрашивает "Subsonic API version" — Airsonic-Advanced эмулирует достаточно свежую версию протокола, конфликтов обычно не возникает.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Airsonic и Airsonic-Advanced — это одно и то же?
Исторически один проект, но airsonic/airsonic заброшен с 2023 года, а airsonic-advanced — активный форк с исправлениями. Ставить стоит именно Advanced-версию.
Можно ли использовать внешнюю MySQL/MariaDB вместо встроенной базы?
Ранние версии Subsonic это поддерживали, но текущий Airsonic-Advanced полагается на встроенную HSQLDB — она хранит только метаданные и настройки, а не сами файлы, так что для домашней библиотеки её производительности достаточно.
Транскодирование грузит сервер — как снизить нагрузку?
Ограничьте максимальный битрейт потока в настройках плеера на стороне клиента и следите, сколько параллельных сессий транскодируют одновременно — каждая запускает отдельный процесс ffmpeg. При постоянной нагрузке от нескольких пользователей закладывайте больше vCPU.
Как перенести библиотеку с уже настроенного Subsonic/Airsonic?
Скопируйте папку с музыкой и, при желании, файл базы из airsonic.home (плейлисты и пользователи) — структура каталогов у HSQLDB совместима между минорными версиями Airsonic-Advanced, но перед обновлением сделайте бэкап.
Нужен ли для Airsonic отдельный процесс резервного копирования?
Да — сами медиафайлы и папку с базой данных стоит бэкапить отдельно от системы. Общий подход к автоматическим бэкапам на Ubuntu 24.04 разобран в отдельной статье.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →