AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом руководстве я расскажу вам о процессе развертывания экземпляра сервера AirSonic с нуля на экземпляре сервера Ubuntu 18.04 LTS.
Предпосылки
- Недавно развернутый экземпляр сервера Vultr Ubuntu 18.04 LTS с минимум 2 ГБ памяти. Скажем, у него есть адрес IPv4
203.0.113.1
.
- Пользователь Sudo .
- Домен
airsonic.example.com
, указываемый на экземпляр сервера, упомянутый выше.
Шаг 1: Базовая конфигурация системы
Создать файл подкачки
Для повышения производительности системы рекомендуется создать файл подкачки объемом 2 ГБ (2048 МБ) на компьютере с 2 ГБ памяти:
sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -m
Примечание. Если вы используете сервер другого размера, подходящий размер раздела подкачки может отличаться.
Настройте имя компьютера и полное доменное имя (FQDN)
Для включения безопасности HTTPS с SSL-сертификатом Let's Encrypt требуется правильная настройка имени хоста и полного доменного имени для компьютера.
Следующие команды установят имя хоста airsonic
и полное доменное имя airsonic.example.com
для машины:
sudo hostnamectl set-hostname airsonic
sudo sed -i 's/^127.0.1.1.*$/127.0.1.1 airsonic.example.com airsonic/g' /etc/hosts
Результаты могут быть подтверждены следующим:
hostname
hostname -f
Изменение правил брандмауэра, чтобы разрешить входящий SSH
, HTTP
и HTTPS
трафик
Настройте правила брандмауэра UFW для запуска сервера AirSonic:
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Когда вы увидите подсказку Command may disrupt existing ssh connections. Proceed with operation (y|n)?
, введите , y
а затем нажмите ENTER.
Обновите систему
В целях безопасности и производительности необходимо обновить систему Ubuntu 18.04 LTS до последней версии:
sudo apt update
sudo apt upgrade -y && sudo shutdown -r now
Во время обновления вы можете быть проинформированы о том, что текущая установленная версия файла конфигурации grub была изменена локально Поскольку мы не несем ответственности за изменение, используйте UPстрелку, чтобы выделить install the package maintainer's version
параметр, а затем нажмите ENTER.
После перезагрузки системы снова войдите в систему под тем же пользователем sudo, чтобы продолжить.
Шаг 2: Установите OpenJDK Java Runtime Environment (JRE) 8
Установите OpenJDK JRE 8 и подтвердите результаты:
sudo apt install -y openjdk-8-jre-headless
java -version
Вывод второй команды будет аналогичен следующему:
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Кроме того, вам необходимо настроить JAVA_HOME
переменную среды следующим образом:
echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | sudo tee -a /etc/profile
source /etc/profile
Шаг 3: Установите AirSonic
AirSonic может быть развернут с использованием различных методов. В этом руководстве мы установим AirSonic с помощью пакета AirSonic WAR.
Создайте выделенного пользователя и выделенную группу с именами airsonic
:
sudo groupadd airsonic
sudo mkdir /var/airsonic
sudo useradd -s /bin/nologin -g airsonic -d /var/airsonic -M airsonic
Загрузите последнюю версию пакета AirSonic WAR, AirSonic v10.1.2:
cd /var/airsonic
sudo wget https://github.com/airsonic/airsonic/releases/download/v10.1.2/airsonic.war
sudo chown -R airsonic:airsonic /var/airsonic
Загрузите предварительно определенные файлы systemd
устройства AirSonic и запустите службу AirSonic:
sudo wget https://raw.githubusercontent.com/airsonic/airsonic/master/contrib/airsonic.service -O /etc/systemd/system/airsonic.service
sudo wget https://raw.githubusercontent.com/airsonic/airsonic/master/contrib/airsonic-systemd-env -O /etc/default/airsonic
sudo systemctl daemon-reload
sudo systemctl start airsonic.service
sudo systemctl enable airsonic.service
Примечание. Возможно, вам придется просмотреть и настроить два файла systemd
устройства AirSonic на своем компьютере.
Шаг 4: Проверьте установку
AirSonic будет запущен и работает, слушая порт 8080
. Вы можете использовать следующую команду, чтобы подтвердить, что это так:
ps -ef|grep airsonic
Вы также можете напрямую посетить сайт AirSonic, но сначала вам необходимо временно изменить правила брандмауэра:
sudo ufw allow in 8080/tcp
Затем укажите ваш любимый веб-браузер http://203.0.113.1:8080/airsonic
, а затем используйте учетные данные по умолчанию, перечисленные ниже, чтобы войти в систему:
- Имя пользователя:
admin
- Пароль:
admin
В целях безопасности вы должны сменить пароль администратора сразу после входа в систему.
Как только результат подтвердится, 8080
снова ограничьте доступ к порту :
sudo ufw deny in 8080/tcp
Шаг 5. Получите SSL-сертификат Let's Encrypt для вашего сайта AirSonic.
В целях безопасности рекомендуется включать безопасность HTTPS на каждом вновь созданном веб-сайте. Для этого наиболее удобной практикой является развертывание SSL-сертификата Let's Encrypt следующим образом.
Установите утилиту Certbot:
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:certbot/certbot
sudo apt update
sudo apt install -y certbot
Используйте Certbot для подачи заявки на SSL-сертификат Let's Encrypt для домена airsonic.example.com
:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m [email protected] -d airsonic.example.com
Сертификат и цепочка будут сохранены в следующих местах:
/etc/letsencrypt/live/airsonic.example.com/fullchain.pem
Файл ключа будет сохранен здесь:
/etc/letsencrypt/live/airsonic.example.com/privkey.pem
Срок действия SSL-сертификата Let's Encrypt истекает через три месяца. Вы можете настроить работу cron для автоматического обновления ваших сертификатов:
sudo crontab -e
Когда вам будет предложено выбрать редактор, введите, 2
а затем нажмите, ENTERчтобы выбрать /usr/bin/vim.basic
.
Затем нажмите Oи добавьте новую строку, как показано ниже:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Сохранить и выйти:
:wq!
Это задание cron будет пытаться обновлять сертификат Let's Encrypt каждый день в полдень.
Шаг 6: Установите Nginx в качестве обратного прокси
С помощью Nginx вы можете одновременно облегчить доступ посетителей (чтобы им больше не требовалось вводить 8080
номер порта) и включить безопасность HTTPS на своем веб-сайте AirSonic.
Установите Nginx, используя APT:
sudo apt install -y nginx
Затем создайте файл конфигурации для AirSonic:
cat <<EOF | sudo tee /etc/nginx/sites-available/airsonic.conf
# Redirect HTTP to HTTPS
server {
listen 80;
server_name airsonic.example.com;
return 301 https://\$server_name\$request_uri;
}
server {
# Setup HTTPS certificates
listen 443 default ssl;
server_name airsonic.example.com;
ssl_certificate /etc/letsencrypt/live/airsonic.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/airsonic.example.com/privkey.pem;
# Proxy to the Airsonic server
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://;
}
}
EOF
Создайте символическую ссылку, указывающую на вновь созданный файл конфигурации AirSonic Nginx:
sudo ln -s /etc/nginx/sites-available/airsonic.conf /etc/nginx/sites-enabled/
Перезапустите Nginx, чтобы применить вашу конфигурацию:
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Наконец, укажите ваш любимый веб-браузер http://airsonic.example.com/airsonic
или, https://airsonic.example.com/airsonic
чтобы начать изучать ваш сайт AirSonic.