Перед установкой
Понадобятся Ubuntu 24.04, доступ sudo, дистрибутив сервера и свободное место для музыки, базы и резервных копий. Примеры используют /opt/soundvault и /srv/music. Если пути отличаются, замени их в командах, конфиге, nginx и unit-файле.
Используй доверенный архив проекта. Публичный URL репозитория здесь не указан: свяжись с автором для получения дистрибутива.
sudo apt update
sudo apt install -y python3 python3-venv python3-dev build-essential libffi-dev nginx acl unzip curl rsync ca-certificates
python3 --versionИспользуй Python 3.11 или новее; стандартный Python Ubuntu 24.04 подходит.
Пользователь и файлы приложения
sudo useradd --system --home /opt/soundvault --shell /usr/sbin/nologin --user-group soundvault
sudo install -d -o soundvault -g soundvault /opt/soundvault /opt/soundvault/logs
mkdir -p "$HOME/soundvault-release"
# Замени путь на конкретный скачанный архив
unzip /path/to/soundvault-server.zip -d "$HOME/soundvault-release"
find "$HOME/soundvault-release" -name soundvault.pyНайди каталог, непосредственно содержащий soundvault.py, app/, static/, templates/ и requirements.txt. В следующей команде укажи именно его, не родительскую папку архива.
sudo rsync -a --exclude='.env' --exclude='soundvault.conf' /path/to/extracted/server/ /opt/soundvault/
sudo chown -R soundvault:soundvault /opt/soundvault
sudo -u soundvault python3 -m venv /opt/soundvault/venv
sudo -u soundvault /opt/soundvault/venv/bin/pip install -r /opt/soundvault/requirements.txtКаталог музыки
sudo install -d -o soundvault -g soundvault -m 2770 /srv/music
sudo -u soundvault mkdir -p /srv/music/public /srv/music/users /srv/music/garbage
sudo setfacl -R -m u:www-data:rX /srv/music
sudo setfacl -R -d -m u:www-data:rX /srv/musicСлужбе нужны чтение и запись, nginx — только чтение для X-Accel-Redirect. Для ручного копирования файлов настрой группу или ACL своего пользователя. После копирования убедись, что soundvault может читать файлы и изменять каталоги. Для NFS/CIFS права могут задаваться параметрами монтирования.
Конфигурация
Создай /opt/soundvault/.env и /opt/soundvault/soundvault.conf по полному примеру настройки. Заполни секрет, пароль первого администратора и пути. Не требуется искать отсутствующие файлы .example в дистрибутиве.
sudoedit /opt/soundvault/.env
sudoedit /opt/soundvault/soundvault.conf
sudo chown soundvault:soundvault /opt/soundvault/.env /opt/soundvault/soundvault.conf
sudo chmod 600 /opt/soundvault/.env
sudo chmod 640 /opt/soundvault/soundvault.confСлужба systemd
Создай /etc/systemd/system/soundvault.service:
[Unit]
Description=SoundVault
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=soundvault
Group=soundvault
WorkingDirectory=/opt/soundvault
Environment=PYTHONUNBUFFERED=1
ExecStart=/opt/soundvault/venv/bin/python /opt/soundvault/soundvault.py
Restart=on-failure
RestartSec=10
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/soundvault /srv/music
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now soundvault
sudo systemctl status soundvault --no-pager
curl http://127.0.0.1:8008/api/healthЗапускать нужно через soundvault.py: он выполняет миграции и запускает фоновые задачи федерации. Не заменяй его произвольным вызовом Flask app. При ошибке прочитай журнал:
sudo journalctl -u soundvault -n 100 --no-pagerHTTPS и первый вход
- Настрой nginx и HTTPS. Не открывай порт 8008 в интернет.
- Войди под созданным администратором и смени пароль.
- Удали из .env параметры первоначального администратора и перезапусти службу.
- Положи альбом в public/, добавь обложку и запусти сканирование.
- Проверь воспроизведение и перемотку, затем создай обычного пользователя.
- В Android укажи HTTPS-адрес сервера и войди под этим пользователем.
APK раздаётся установленным сервером по /api/update/apk, если администратор разместил пакет. Отсутствующий пакет даст 404; проверь сведения в capabilities.