Установка Airsonic на Ubuntu 18.04 с Nginx и Letsencrypt
Что такое Airsonic
Airsonic — свободный open source медиасервер на Java. Позволяет стримить музыку и видео по HTTP, поддерживает форматы MP3, FLAC, APE, WMA и другие контейнеры, которые можно передавать по HTTP. В этом руководстве мы развернём standalone‑версию через .war-файл и настроим доступ по HTTPS через Nginx.
Важно: эта инструкция ориентирована на Ubuntu 18.04 и предполагает доступ root или sudo.
Кому пригодится это руководство
- Сисадминам, которые хотят развернуть локальный медиасервер.
- Домашним энтузиастам, желающим слушать музыку удалённо.
- Командам, которые хотят тестовую инстанцию Airsonic под обратным прокси.
Предварительные требования
- Ubuntu 18.04 64‑bit.
- Права root или sudo.
- DNS‑запись вида music.example.com, указывающая на сервер (замените на свой домен).
Что мы сделаем
- Установим Java (OpenJDK/Oracle‑вариант, как в оригинальной инструкции).
- Развернём Airsonic как standalone .war и создадим systemd‑сервис.
- Получим SSL‑сертификат от Let’s Encrypt.
- Настроим Nginx как обратный прокси с HTTPS.
- Включим базовый UFW и правила.
- Пройдём тестирование и базовую настройку Airsonic.
Шаг 1 — Установка Java OpenJDK / Oracle Java
Airsonic — Java‑приложение, для работы требуется JRE/JDK версии 1.8 (Java 8). В оригинальной инструкции используется PPA webupd8team для установки Oracle Java 8. На современных системах можно использовать OpenJDK 8 или более новый OpenJDK, но если вам нужен именно oracle‑пакет, следуйте ниже.
Установите вспомогательные пакеты и добавьте PPA (если вы доверяете источнику):
sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:webupd8team/java -yУстановите Java 8 (oracle‑инсталлятор требует принятия лицензионного соглашения при установке в интерактивном режиме):
sudo apt update
sudo apt install oracle-java8-installer -yПроверьте установленную версию:
java -versionПримечание: если вы хотите использовать OpenJDK (более актуально с точки зрения безопасности и лицензирования), замените пакет установки на openjdk-8-jre или openjdk-11-jre.
Шаг 2 — Установка и настройка Airsonic (standalone .war)
Создадим системного пользователя и рабочую директорию:
sudo useradd -r -m -U -d /opt/airsonic -s /bin/false airsonic
sudo mkdir -p /opt/airsonicПерейдите в папку и загрузите .war‑пакет (пример из оригинала использует v10.1.1 — при повторной установке проверьте релизы на GitHub):
cd /opt/airsonic
sudo wget https://github.com/airsonic/airsonic/releases/download/v10.1.1/airsonic.war
sudo chown -R airsonic:airsonic /opt/airsonic
Создаём systemd‑юнит для автоматического запуска:
sudo tee /etc/systemd/system/airsonic.service > /dev/null <<'UNIT'
[Unit]
Description=Airsonic Media Server
After=remote-fs.target network.target
AssertPathExists=/opt/airsonic
[Service]
Type=simple
Environment="JAVA_JAR=/opt/airsonic/airsonic.war"
Environment="JAVA_OPTS=-Xmx700m"
Environment="AIRSONIC_HOME=/opt/airsonic"
Environment="PORT=8080"
Environment="CONTEXT_PATH=/airsonic"
Environment="JAVA_ARGS="
EnvironmentFile=-/etc/default/airsonic
ExecStart=/usr/bin/java \
$JAVA_OPTS \
-Dairsonic.home=${AIRSONIC_HOME} \
-Dserver.context-path=${CONTEXT_PATH} \
-Dserver.port=${PORT} \
-jar ${JAVA_JAR} $JAVA_ARGS
User=airsonic
Group=airsonic
[Install]
WantedBy=multi-user.target
UNITСоздайте файл с дефолтными переменными:
sudo tee /etc/default/airsonic > /dev/null <<'CONF'
# Set the location of the standalone war to use
JAVA_JAR=/opt/airsonic/airsonic.war
# Set any java opts separated by spaces
JAVA_OPTS=-Xmx700m
AIRSONIC_HOME=/opt/airsonic
PORT=8080
CONTEXT_PATH=/airsonic
# Bind to localhost by default (useful при обратном прокси)
JAVA_ARGS=--server.address=127.0.0.1
CONFПерезагрузите systemd и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl start airsonic
sudo systemctl enable airsonicПроверьте, что служба слушает порт 8080:
sudo netstat -plntu | grep 8080
Если сервис не запускается, смотрите логи:
sudo journalctl -u airsonic -b --no-pager | tail -n 50Важно: если ваш Airsonic должен принимать трафик на внешнем интерфейсе без прокси — уберите --server.address=127.0.0.1 или укажите нужный IP.
Шаг 3 — Получение SSL‑сертификата Letsencrypt
Для публикации Airsonic по HTTPS используем Nginx как обратный прокси и Let’s Encrypt для сертификатов. Установите certbot:
sudo apt install letsencrypt -yОстановите сервисы, которые могут слушать 80/443 (если используете standalone режим certbot):
sudo systemctl stop nginxСгенерируйте сертификат для вашего домена (замените на свой домен):
sudo certbot certonly --standalone -d music.hakase-labs.ioПри запросе укажите email, согласитесь с условиями и выберите опции по уведомлениям. После успешного выполнения сертификаты будут в /etc/letsencrypt/live/your-domain/.


Автоматическое продление: certbot устанавливает cron или systemd‑таймер для certbot renew. Для теста можно выполнить:
sudo certbot renew --dry-runЕсли вы используете --standalone только для первого получения, в дальнейшем используйте --nginx или настройте автоматическое продление вместе с перезагрузкой nginx.
Шаг 4 — Установка и конфигурация Nginx как обратного прокси
Установите Nginx:
sudo apt install nginx -yСоздайте виртуальный хост:
sudo tee /etc/nginx/sites-available/airsonic > /dev/null <<'NGCONF'
server {
listen 80;
listen [::]:80;
server_name music.hakase-labs.io;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name music.hakase-labs.io;
ssl_certificate /etc/letsencrypt/live/music.hakase-labs.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/music.hakase-labs.io/privkey.pem;
location /airsonic {
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 https;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host $http_host;
proxy_max_temp_file_size 0;
proxy_pass http://127.0.0.1:8080;
proxy_redirect http:// https://;
}
}
NGCONFАктивируйте сайт, проверьте конфигурацию и перезапустите nginx:
sudo ln -s /etc/nginx/sites-available/airsonic /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl enable nginx
Проверьте, что nginx слушает 443 порт:
sudo netstat -plntu | grep 443
Совет: для улучшения безопасности HTTPS включите современные шифры и HSTS в конфигурации nginx.
Шаг 5 — Настройка UFW (основной брандмауэр)
Разрешите SSH, HTTP и HTTPS и включите UFW:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enableПроверьте статус правил:
sudo ufw status verbose
Важно: если у вас есть дополнительные сервисы (например, админ‑панель на другом порту), добавьте правила заранее, чтобы не потерять доступ.
Шаг 6 — Тестирование и базовая настройка Airsonic
Откройте в браузере:
https://music.hakase-labs.io/airsonic/Вы увидите страницу логина Airsonic.

По умолчанию логин/пароль: admin/admin. Первое, что нужно сделать — сменить пароль администратора.
Смена пароля администратора
- Войдите под admin/admin.
- Откройте настройки администратора и измените пароль.


Настройка медиа‑папок
Создайте папку для музыки и отдайте права пользователю airsonic:
sudo mkdir -p /var/music
sudo chown -R airsonic:airsonic /var/musicПерейдите в веб‑панель Airsonic → Settings → Media folders, включите папку Music и сохраните. Затем на вкладке Users дайте пользователю admin доступ к папке.


После добавления музыки вы увидите интерфейс с библиотекой:

Дополнительные рекомендации и лучшие практики
Автоматическое обновление сертификатов
- Убедитесь, что certbot установлен с systemd‑таймером:
sudo systemctl list-timers | grep certbot. - Если вы используете
--standaloneдля получения, убедитесь, что nginx останавливается во времяcertbot renewили используйте--nginxплагин.
Безопасность и жёсткая конфигурация
- Запускайте Airsonic под отдельным пользователем (мы создали
airsonic). - Отключите неиспользуемые HTTP методы в nginx.
- Настройте fail2ban для защиты от bruteforce логинов (особенно для SSH и если вы открыли Airsonic наружу).
- Используйте сильные пароли или внешний провайдер аутентификации (если доступно).
Резервное копирование
- Делайте резервные копии папки AIRSONIC_HOME (
/opt/airsonic) и базы данных/настроек. - Бэкап медиафайлов (
/var/music) храните отдельно.
Логи и отладка
- Логи systemd:
sudo journalctl -u airsonic -f - Логи nginx:
/var/log/nginx/error.logи/var/log/nginx/access.log
Когда такой подход не подходит (примеры)
- Нужен кластерный или HA‑развёрнутый медиасервер — standalone .war + один сервер не обеспечит высокой доступности.
- Если требуется интеграция с централизованной системой аутентификации (LDAP/SSO), возможны дополнительные настройки или плагины.
- На слабых машинах Java‑приложения потребляют значительные ресурсы — учитывайте RAM/CPU.
Альтернативные подходы
- Использовать Docker‑контейнеры (официальные/сообщества) для изоляции и удобного обновления.
- Установить Airsonic из пакета (если доступен) вместо .war.
- Использовать другой медиасервер (например, Ampache, Navidrome) если нужен более лёгкий стек.
Чек‑лист для разных ролей
Администратор (быстрый чек):
- Создан пользователь airsonic.
- .war размещён в /opt/airsonic с корректными правами.
- systemd‑юнит добавлен и активирован.
- Nginx настроен и SSL действителен.
- UFW настроен.
DevOps (дополнительно):
- Автообновление сертификатов тестировано.
- Мониторинг (логсы, alert на падение сервиса) настроен.
- Резервное копирование конфигураций и медиа настроено.
Критерии приёмки
- Сайт доступен по HTTPS: https://music.example.com/airsonic/
- Админ может войти под новым паролем.
- Медиафайлы воспроизводятся в браузере/клиентах.
- Сертификат действителен и продлевается без вмешательства.
Типичные ошибки и способы устранения
- Сервис не стартует: смотрите
journalctl -u airsonic. Частая причина — некорректный путь к .war или права доступа. - nginx не запускается:
nginx -tпокажет синтаксические ошибки. - Certbot не может получить порт 80: проверьте, что nginx остановлен или используйте DNS‑/webroot‑метод.
Команды‑шпаргалка
- Запуск/стоп Airsonic:
sudo systemctl start|stop|status airsonic - Логи Airsonic:
sudo journalctl -u airsonic -f - Проверка nginx:
sudo nginx -t - Renew certbot:
sudo certbot renew --dry-run - Проверка портов:
sudo netstat -plntu
Краткая методология развёртывания
- Подготовка ОС и установка Java.
- Размещение .war и создание systemd‑юнита.
- Локальная проверка работы на 127.0.0.1:8080.
- Получение SSL и развертывание nginx.
- Перенос медиа и настройка прав.
- Тестирование, бэкапы и мониторинг.
Глоссарий (1‑линейные определения)
- Airsonic — Java‑медиасервер для стриминга музыки и видео.
- .war — Java Web Archive, формат развёртывания web‑приложения.
- Nginx — высокопроизводительный HTTP‑сервер и обратный прокси.
- Letsencrypt / certbot — автоматизированный сервис получения бесплатных SSL‑сертификатов.
Резюме
Вы настроили Airsonic на Ubuntu 18.04 как standalone .war, упаковали его в systemd‑сервис, защитили трафик через Nginx и Letsencrypt, включили базовую защиту UFW и сделали первые шаги по администрированию и резервированию. Для продакшен‑развёртывания подумайте об автоматизации обновлений, мониторинге и HA‑архитектуре.
Полезная ссылка:
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента