MAATRIX / Блог / Как установить и настроить Ampache на VPS

Как установить и настроить Ampache на VPS

MAATRIX

Если вы уже пробовали Navidrome или Airsonic и уперлись в ограниченный список протоколов — Ampache стоит попробовать отдельно. Это один из старейших self-hosted музыкальных серверов (проект живёт с середины 2000-х), и за это время он оброс поддержкой Subsonic API, DAAP, UPnP/DLNA, WebDAV, подкастов, видео и радиостанций одновременно — без плагинов и надстроек. Ниже — рабочая установка на чистый VPS с Ubuntu 24.04: от подготовки сервера до HTTPS и бэкапов.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое Ampache и чем он отличается от Navidrome и Plex

Ampache — это PHP-приложение с базой MySQL/MariaDB, которое вы разворачиваете на своём сервере и открываете через браузер или один из десятков совместимых клиентов. В отличие от Navidrome, который сознательно ограничился Subsonic API и минимализмом, Ampache исторически позиционируется как «сервер для всего»: музыка, подкасты, аудиокниги, видео, живые радиопотоки. Он одновременно говорит на языке Subsonic API (это открывает доступ ко всем subsonic-клиентам — DSub, Ultrasonic, play:Sub и другим), на DAAP (для iTunes/старых Apple-клиентов), на UPnP/DLNA (для телевизоров и медиаплееров) и отдаёт файлы напрямую по WebDAV.

Плата за такую широту — более тяжёлая установка и не самый современный интерфейс по сравнению с Navidrome. Если вам нужен просто стриминг библиотеки FLAC/MP3 с симпатичным вебом — присмотритесь к Navidrome или Airsonic. Ampache имеет смысл, если у вас старые Apple-устройства без Subsonic-клиентов, телевизор с DLNA, смешанная библиотека (музыка + подкасты + видео) или вы хотите гибкую систему прав доступа для нескольких пользователей с разными каталогами.

Plex и Jellyfin решают похожую задачу для видео и отчасти музыки, но их музыкальный модуль вторичен по отношению к видео-функциям. Ampache — специализированный именно на аудио (и отчасти видео) инструмент, без лишнего веса медиацентра.

Подготовка VPS и требования к ресурсам

Ampache не требователен к CPU и памяти, пока вы не включаете транскодирование «на лету» для клиентов со слабым каналом — тогда нагрузку создаёт ffmpeg, а не сам PHP-сервер. Ориентир для домашней библиотеки на 5-10 одновременных слушателей:

ПараметрМинимумКомфортно
CPU1 vCPU2 vCPU (если нужен транскод)
RAM1 ГБ2 ГБ
Дискпод медиатеку + 5 ГБ системаSSD/NVMe, объём под библиотеку
ОСUbuntu 22.04/24.04 LTS, Debian 12Ubuntu 24.04 LTS

Ключевой момент — не CPU/RAM, а дисковое пространство и его тип. Медиатека растёт быстрее, чем кажется на старте, а случайное чтение с HDD при перемотке треков или сканировании каталога заметно медленнее, чем с SSD. Если после установки почувствуете, что сервер тесен, посчитайте, сколько RAM реально нужно Navidrome для схожей нагрузки — цифры для Ampache будут в том же порядке, с поправкой на активность транскодирования.

Для этой статьи предполагается чистый Ubuntu 24.04 LTS, root-доступ по SSH и белый IP. Доменное имя не обязательно — Ampache прекрасно работает и по IP, но для HTTPS без предупреждений браузера домен понадобится.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка LEMP-стека: Nginx, PHP-FPM, MariaDB

Обновите систему и поставьте базовые пакеты:

apt update && apt upgrade -y
apt install -y nginx mariadb-server curl unzip git software-properties-common

Ampache требует PHP 8.1 или новее (перед установкой сверьтесь с требованиями актуального релиза на github.com/ampache/ampache — минимальная версия PHP со временем растёт). На Ubuntu 24.04 в базовых репозиториях уже PHP 8.3, этого достаточно:

apt install -y php-fpm php-mysql php-mbstring php-curl php-gd php-xml \
  php-zip php-intl php-bcmath php-ldap php-curl ffmpeg

ffmpeg нужен не для установки как таковой, а для транскодирования — без него Ampache не сможет на лету перекодировать FLAC в MP3 для мобильных клиентов с ограниченным трафиком.

Настройте MariaDB и создайте базу под Ampache:

mysql_secure_installation
mysql -u root -p
CREATE DATABASE ampache CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ampache'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON ampache.* TO 'ampache'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Замените СЛОЖНЫЙ_ПАРОЛЬ на реальную строку — этот пароль дальше попадёт в конфиг веб-установщика.

Установка и первичная настройка Ampache

Скачайте последний стабильный релиз с GitHub (не используйте git clone основной ветки для продакшена — она может быть нестабильной между релизами):

cd /var/www
mkdir ampache && cd ampache
curl -L -o ampache.zip https://github.com/ampache/ampache/releases/latest/download/ampache-release_php8.zip
unzip ampache.zip
rm ampache.zip
chown -R www-data:www-data /var/www/ampache

Имя архива у релизов со временем меняется (могут появиться отдельные сборки под разные версии PHP) — если ссылка не сработала, зайдите на страницу релизов и возьмите актуальный .zip вручную.

Создайте виртуальный хост Nginx:

server {
    listen 80;
    server_name music.example.com;

    root /var/www/ampache/public;
    index index.php;

    client_max_body_size 500M;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 300;
    }

    location ~ /\.(?!well-known) {
        deny all;
    }
}

Обратите внимание на client_max_body_size и fastcgi_read_timeout — при загрузке файлов через веб-интерфейс или долгом сканировании каталога дефолтные лимиты Nginx и PHP-FPM обрежут запрос раньше времени. В php.ini (/etc/php/8.3/fpm/php.ini) заодно поднимите upload_max_filesize, post_max_size и memory_limit (256M — комфортное значение для сканирования больших библиотек).

Активируйте конфиг и перезапустите сервисы:

ln -s /etc/nginx/sites-available/ampache /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
systemctl restart php8.3-fpm

Откройте http://music.example.com/ (или IP сервера) в браузере — запустится веб-мастер установки. Он проверит расширения PHP, попросит данные подключения к MariaDB (база ampache, пользователь ampache, пароль, который вы задали) и создаст структуру таблиц автоматически. На последнем шаге создайте учётную запись администратора — это отдельный аккаунт Ampache, никак не связанный с системным пользователем сервера.

Настройка HTTPS через Let's Encrypt и firewall

Без HTTPS клиенты Subsonic API на мобильных сетях будут ругаться, а логин/пароль будут летать открытым текстом. Если домен уже указывает на сервер, получить сертификат — вопрос двух команд через certbot:

apt install -y certbot python3-certbot-nginx
certbot --nginx -d music.example.com

Certbot сам допишет блок listen 443 ssl и настроит редирект с 80 на 443. Если возникнут сложности — процесс подробно разобран в статье про настройку Let's Encrypt SSL на VPS, там же перечислены типичные ошибки вроде «домен ещё не резолвится» или «порт 80 закрыт firewall'ом».

Закройте всё лишнее через UFW, оставив только SSH, HTTP и HTTPS:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Если вы храните на этом же сервере другие сервисы или планируете более тонкие правила (например, ограничить доступ к Ampache по конкретным IP), загляните в разбор настройки firewall UFW на VPS — там есть готовые сценарии под такие случаи.

Отдельно стоит зайти в настройки Ampache (Admin → Preferences → System) и выставить Force SSL, чтобы приложение само редиректило на HTTPS даже при прямом обращении по HTTP, а также сменить session_length под ваш комфорт — по умолчанию сессии довольно короткие для стационарного домашнего сервера.

Протоколы, клиенты и импорт медиатеки

Прежде чем клиенты увидят библиотеку, нужно добавить каталог. В админке: Admin → Manage Catalogs → Add Catalog. Тип каталога — Local (файлы физически на этом сервере), путь — например /var/www/ampache-music (создайте директорию отдельно от кода приложения и дайте права www-data):

mkdir /var/www/ampache-music
chown -R www-data:www-data /var/www/ampache-music

Загрузите туда музыку по SFTP или rsync, затем запустите первое сканирование каталога прямо из веб-интерфейса (кнопка «Add» рядом с каталогом) — Ampache пройдётся по тегам ID3/Vorbis Comments и построит библиотеку. Для регулярного обновления каталога (новые файлы появляются постоянно) удобнее не заходить руками в веб-интерфейс, а повесить cron на CLI-утилиту:

0 4 * * * php /var/www/ampache/bin/cli catalog:update --all 2>&1

Дальше — протоколы. Subsonic API включён по умолчанию: любой subsonic-совместимый клиент (DSub и Ultrasonic на Android, play:Sub на iOS, многие плагины для Kodi) подключается по адресу вашего сервера с логином/паролем Ampache. UPnP/DLNA включается в Preferences → Streaming — после этого сервер станет виден как медиасервер для телевизоров и Smart TV-приставок в локальной сети. WebDAV даёт прямой доступ к файлам библиотеки как к сетевому диску — удобно для десктопных плееров, которые сами умеют читать теги.

Отдельно стоит настроить Access Control Lists (Admin → Access Control): по умолчанию Ampache довольно строг к тому, откуда можно стучаться в API, и внешние подключения через Subsonic-клиенты иногда блокируются, пока вы явно не добавите правило для нужного диапазона IP или не разрешите доступ типа «All». Это частая причина, когда установка вроде бы прошла успешно, а мобильный клиент получает ошибку авторизации.

Если часть медиатеки — подкасты или радиопотоки, добавляются они через отдельные разделы Podcasts и Live Streams в админке, без создания нового каталога.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Чем Ampache принципиально отличается от Navidrome, если оба поддерживают Subsonic API?

Navidrome — минималистичный, современный по интерфейсу сервер, заточенный только под Subsonic-совместимость. Ampache добавляет DAAP, UPnP/DLNA, WebDAV, подкасты и видео — то есть решает более широкий круг задач ценой более тяжёлой установки и менее современного UI.

Нужен ли отдельный сервер для транскодирования?

Нет, ffmpeg работает на том же VPS, где стоит Ampache. Но если вы одновременно транскодируете несколько потоков high-bitrate аудио для клиентов с медленным интернетом, заложите запас CPU — на 1 vCPU при активном транскодировании возможны задержки.

Можно ли перенести библиотеку с Airsonic или Navidrome на Ampache?

Сами аудиофайлы переносятся обычной копией — Ampache просканирует теги заново и построит библиотеку с нуля. Плейлисты и рейтинги придётся переносить вручную или через экспорт-импорт, если формат экспорта прежнего сервера это поддерживает — единого стандарта между этими проектами нет.

Что делать, если мобильный клиент не может авторизоваться, хотя логин/пароль верные?

В первую очередь проверьте Access Control List — многие клиенты подключаются с внешнего IP, а по умолчанию Ampache может не пропускать API-запросы с адресов вне разрешённого диапазона. Также убедитесь, что HTTPS настроен корректно: часть клиентов отказывается работать по незащищённому HTTP.

Обязательно ли использовать MariaDB, или подойдёт MySQL?

Подойдёт и MySQL, Ampache одинаково хорошо работает с обоими. MariaDB выбрана в этой статье как вариант по умолчанию в репозиториях Ubuntu.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →