如何在Ubuntu 16.04上安装Subsonic Media Server
本教程将向您展示如何在Ubuntu 16.04上安装Subsonic媒体服务器,以及如何使用Nginx或Apache为Subsonic设置反向代理。
Subsonic是用Java编写的免费的基于Web的媒体流,可用于Linux,MacOS和Windows。 借助Subsonic,您可以从家用计算机或任何面向公众的计算机流式传输音乐,并可以使用Web浏览器从任何地方收听音乐。 因此,您不必将音乐与文件同步应用程序(如resilio sync或Syncthing)同步。
亚音速功能
- 支持MP3,OGG,AAC以及通过HTTP流式传输的任何其他音频或视频格式。
- 可与任何支持网络的媒体播放器一起使用,例如Winamp,iTunes,XMMS,VLC,MusicMatch和Windows Media Player
- 专辑封面,即时播放列表,即时转码
- 适用于Android,iPhone,Windows Phone的移动应用程序以及适用于Mac,Windows和Chrome的桌面应用程序。 Android应用程序支持离线播放。
- 收听播客,分配评分,添加评论以及创建播放列表。
- 与亲朋好友分享音乐。
- 流视频(高级功能)
- 和更多
注意 自6.0版以来,Subsonic已关闭源代码。
如何在Ubuntu 16.04上安装Subsonic Media Server
Subsonic媒体服务器是用Java编写的,因此您需要安装Java运行时环境才能运行它。 您可以使用以下命令安装openjdk 8。
sudo apt install openjdk-8-jre
如果您以前安装过Oracle Java 8,则无需安装OpenJDK。 接下来,使用以下命令下载Subsonic deb软件包,该软件包将下载版本6.1.5。 您可以在Subsonic下载页面上查看最新版本。 如果有新版本可用,只需用新版本号替换6.1.5。
wget https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.1.5.deb
用安装 dpkg
。
sudo dpkg -i subsonic-6.1.5.deb
安装完成后,Subsonic守护程序将自动启动。
systemctl status subsonic
样本输出:
● subsonic.service - LSB: Subsonic daemon Loaded: loaded (/etc/init.d/subsonic; bad; vendor preset: enabled) Active: active (running) since Fri 2017-03-24 08:03:27 EDT; 7min ago Docs: man:systemd-sysv-generator(8) CGroup: /system.slice/subsonic.service └─3316 java -Xmx150m -Dsubsonic.home=/var/subsonic -Dsubsonic.host=0
如果它没有运行,则可以使用以下命令手动启动它
sudo systemctl start subsonic
并在系统启动时启用自动启动。
sudo systemctl enable subsonic
默认情况下,亚音速监听 0.0.0.0:4040
,表示它接受来自本地网络和Internet的请求。
如果您在本地Ubuntu计算机上安装了Subsonic,则在浏览器中键入以下地址以访问Subsonic Web界面。
http://localhost:4040
如果您在面向Internet的Ubuntu服务器上安装了Subsonic,请在浏览器中键入以下地址以访问Subsonic Web界面。
http://your-server-ip:4040
请注意,如果您在家庭服务器上安装Subsonic媒体服务器,并且想从外部网络访问它,那么您将需要在路由器中配置端口转发。
默认的用户名和密码是 admin
。 登录后,您应该转到 设置>用户 更改管理员密码。
另外,在设置页面中添加媒体文件夹,然后单击“保存”按钮。 请注意,Subsonic运行时用户必须可以访问该文件夹。 添加文件夹后,单击“立即扫描媒体文件夹”按钮,您将能够在索引页面中听音乐。
变更使用者
默认情况下,Subsonic进程以root用户身份运行。 出于安全原因,您应将其更改为普通用户,方法是编辑 /etc/default/subsonic
文件。
sudo nano /etc/default/subsonic
找到以下行:
SUBSONIC_USER=root
将root更改为您自己的用户帐户,例如 linuxbabe
。
SUBSONIC_USER=linuxbabe
保存并关闭文件。 然后重新启动subsonic守护程序,以使更改生效。
sudo systemctl restart subsonic
为Subsonic设置Nginx反向代理
如果要将域名用于Subsonic Web界面,则可以设置Nginx反向代理。 使用以下命令在Ubuntu 16.04上安装Nginx。
sudo apt install nginx
然后创建用于代理的服务器阻止文件。
sudo nano /etc/nginx/conf.d/subsonic-proxy.conf
将以下文本放入文件中。 更换 subsonic.your-domain.com
用您自己的域名。 位置{…}块将向Subsonic守护程序发出Nginx代理请求。 不要忘记为子域设置A记录。
server { listen 80; server_name subsonic.your-domain.com; location / { proxy_pass http://127.0.0.1:4040; proxy_set_header Host $http_host; 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 $scheme; } }
保存并关闭文件。 然后测试Nginx配置。
sudo nginx -t
如果测试成功,则重新加载Nginx以使新配置生效。
sudo systemctl reload nginx
现在,Subsonic媒体服务器位于Nginx的后面,您可以使用域名访问Subsonic Web UI(subsonic.your-domain.com
)
使用Nginx启用HTTPS
要启用HTTPS安全连接,您可以从Let’s Encrypt获取并安装免费的TLS / SSL证书。 使用以下命令安装Let’s Encrypt(certbot)客户端:
sudo apt-get install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install certbot python3-certbot-nginx
然后发出以下命令,该命令使用Certbot Nginx插件自动获取并安装TLS证书。 将红色文本替换为您的实际数据。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email your-email-address --domain subsonic.your-domain.com
在几秒钟之内,您应该看到如下所示的祝贺消息,这表示证书已成功获得。
再次转到您的Subsonic媒体服务器Web界面,您会发现HTTP连接自动重定向到HTTPS安全连接。 接下来,我们需要修改Nginx配置文件。
sudo nano /etc/nginx/conf.d/subsonic-proxy.conf
现在有两个服务器{…}块,因为Certbot自动配置了SSL服务器块(侦听443 ssl)。 在SSL服务器块中,将以下行添加到location / {…}块中。
proxy_redirect http:// https://;
此行会将所有http服务器响应重定向到https服务器响应,这是正确显示Subsonic设置页面所必需的。 保存并关闭文件。 测试Nginx配置并重新加载。
sudo nginx -t sudo systemctl reload nginx
设置Apache反向代理
如果您更喜欢Nginx而不是Apache,请使用以下命令进行安装:
sudo apt install apache2
要将Apache用作反向代理,我们需要启用 proxy
模块和标头模块。
sudo a2enmod proxy proxy_http headers
然后为Subsonic媒体服务器创建虚拟主机文件。
sudo nano /etc/apache2/sites-available/subsonic-proxy.conf
将以下配置放入文件中。 更换 subsonic.your-domain.com
与您的实际域名。 不要忘记为此子域创建DNS A记录。
<VirtualHost *:80> ServerName subsonic.your-domain.com ErrorDocument 404 /404.html DocumentRoot /var/www ProxyPass / http://localhost:4040/ ProxyPassReverse / http://localhost:4040/ Header always unset X-Frame-Options </VirtualHost>
保存并关闭文件。 然后启用此虚拟主机。
sudo a2ensite subsonic-proxy.conf
重新启动Apache
sudo systemctl restart apache2
现在,您可以使用域名访问Subsonic Web UI。
在Apache上启用HTTPS
要启用HTTPS安全连接,您可以从Let’s Encrypt获取并安装免费的TLS / SSL证书。 使用以下命令安装Let’s Encrypt(certbot)客户端:
sudo apt-get install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt install certbot python3-certbot-apache
然后使用apache插件获取并安装证书。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple --email your-email-address -d subsonic.your-domain.com
在几秒钟之内,您应该看到如下所示的祝贺消息,这表示证书已成功获得。
您的TLS证书将自动安装。 再次转到您的Subsonic媒体服务器Web界面,您会发现HTTP连接自动重定向到HTTPS安全连接。
如何升级到最新版本
将现有的Subsonic服务器升级到最新版本非常容易。 首先转到Subsonic下载页面,然后下载最新的Debian / Ubuntu软件包(6.1.2 在此示例中)。 您可以在Firefox下载管理器中获得下载链接,如下面的屏幕快照所示。
然后在终端中,您可以将下载链接粘贴到 get 从命令行下载Subsonic。
wget https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.1.2.deb
接下来,使用dpkg安装deb软件包。
sudo dpkg -i subsonic-6.1.2.deb
重新启动Subsonic Systemd服务,您已完成。
sudo systemctl restart subsonic
我希望本教程可以帮助您在Ubuntu 16.04上安装Subsonic媒体服务器。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯。 您也可以在Google +,Twitter或喜欢我们的Facebook页面上关注我们。