parent
de7f87a092
commit
e991870e2d
|
@ -122,10 +122,4 @@ Vagrant.configure('2') do |config|
|
||||||
setup_nfs(config)
|
setup_nfs(config)
|
||||||
setup_libretime(os, 'debian.sh')
|
setup_libretime(os, 'debian.sh')
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.define 'centos' do |os|
|
|
||||||
os.vm.box = 'centos/8'
|
|
||||||
setup_nfs(config)
|
|
||||||
setup_libretime(os, 'centos.sh', '--selinux')
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -103,12 +103,11 @@ With the above instructions LibreTime is installed on Ubuntu Bionic. The Vagrant
|
||||||
offers the option to choose a different operation system according to you needs.
|
offers the option to choose a different operation system according to you needs.
|
||||||
|
|
||||||
| OS | Command | Comment |
|
| OS | Command | Comment |
|
||||||
| ------------ | --------------------- | ----------------------------------------------------------- |
|
| ------------ | --------------------- | -------------------------------- |
|
||||||
| Debian 10 | `vagrant up buster` | Install on Debian Buster. |
|
| Debian 10 | `vagrant up buster` | Install on Debian Buster. |
|
||||||
| Debian 11 | `vagrant up bullseye` | Install on Debian Bullseye. |
|
| Debian 11 | `vagrant up bullseye` | Install on Debian Bullseye. |
|
||||||
| Ubuntu 18.04 | `vagrant up bionic` | Install on Ubuntu Bionic Beaver. |
|
| Ubuntu 18.04 | `vagrant up bionic` | Install on Ubuntu Bionic Beaver. |
|
||||||
| Ubuntu 20.04 | `vagrant up focal` | Install on Ubuntu Focal Fossa. |
|
| Ubuntu 20.04 | `vagrant up focal` | Install on Ubuntu Focal Fossa. |
|
||||||
| CentOS | `vagrant up centos` | CentOS 8 with native systemd support and activated SELinux. |
|
|
||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
|
|
2
install
2
install
|
@ -298,7 +298,6 @@ service_restart_if_active() {
|
||||||
|
|
||||||
is_ubuntu=false
|
is_ubuntu=false
|
||||||
is_debian=false
|
is_debian=false
|
||||||
is_centos=false
|
|
||||||
distro="unknown"
|
distro="unknown"
|
||||||
|
|
||||||
check_distribution() {
|
check_distribution() {
|
||||||
|
@ -315,7 +314,6 @@ check_distribution() {
|
||||||
debian-11) is_debian=true && distro="bullseye" ;;
|
debian-11) is_debian=true && distro="bullseye" ;;
|
||||||
ubuntu-18.04) is_ubuntu=true && distro="bionic" ;;
|
ubuntu-18.04) is_ubuntu=true && distro="bionic" ;;
|
||||||
ubuntu-20.04) is_ubuntu=true && distro="focal" ;;
|
ubuntu-20.04) is_ubuntu=true && distro="focal" ;;
|
||||||
centos-8) is_centos=true && distro="centos8" ;;
|
|
||||||
*)
|
*)
|
||||||
error << "EOF"
|
error << "EOF"
|
||||||
could not determine supported distribution "$ID-$VERSION_ID"!
|
could not determine supported distribution "$ID-$VERSION_ID"!
|
||||||
|
|
|
@ -1,158 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Additional Repos
|
|
||||||
yum install -y epel-release
|
|
||||||
|
|
||||||
# RPMfusion (for ffmpeg) - needs PowerTools
|
|
||||||
dnf install -y https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
|
|
||||||
dnf config-manager --enable powertools
|
|
||||||
|
|
||||||
# xiph multimedia (for icecast)
|
|
||||||
curl -o /etc/yum.repos.d/multimedia:xiph.repo \
|
|
||||||
https://download.opensuse.org/repositories/multimedia:/xiph/CentOS_8/multimedia:xiph.repo
|
|
||||||
|
|
||||||
# RaBe Liquidsoap Distribution (RaBe LSD)
|
|
||||||
curl -o /etc/yum.repos.d/home:radiorabe:liquidsoap.repo \
|
|
||||||
https://download.opensuse.org/repositories/home:/radiorabe:/liquidsoap/CentOS_8/home:radiorabe:liquidsoap.repo
|
|
||||||
|
|
||||||
# RaBe Audio Packages for Enterprise Linux (RaBe APEL)
|
|
||||||
curl -o /etc/yum.repos.d/home:radiorabe:audio.repo \
|
|
||||||
https://download.opensuse.org/repositories/home:/radiorabe:/audio/CentOS_8/home:radiorabe:audio.repo
|
|
||||||
|
|
||||||
# Update all the things (just to be sure we are on latest)
|
|
||||||
yum update -y
|
|
||||||
|
|
||||||
# Database
|
|
||||||
yum install -y postgresql-server patch
|
|
||||||
|
|
||||||
postgresql-setup --initdb
|
|
||||||
|
|
||||||
patch -f /var/lib/pgsql/data/pg_hba.conf << EOD
|
|
||||||
--- pg_hba.conf.orig 2020-12-19 13:10:46.828960307 +0000
|
|
||||||
+++ pg_hba.conf 2020-12-19 13:11:37.356290128 +0000
|
|
||||||
@@ -78,10 +78,11 @@
|
|
||||||
|
|
||||||
# "local" is for Unix domain socket connections only
|
|
||||||
local all all peer
|
|
||||||
+local all all md5
|
|
||||||
# IPv4 local connections:
|
|
||||||
-host all all 127.0.0.1/32 ident
|
|
||||||
+host all all 127.0.0.1/32 md5
|
|
||||||
# IPv6 local connections:
|
|
||||||
-host all all ::1/128 ident
|
|
||||||
+host all all ::1/128 md5
|
|
||||||
# Allow replication connections from localhost, by a user with the
|
|
||||||
# replication privilege.
|
|
||||||
local replication all peer
|
|
||||||
EOD
|
|
||||||
|
|
||||||
systemctl enable postgresql
|
|
||||||
systemctl start postgresql
|
|
||||||
# create database user airtime with password airtime
|
|
||||||
useradd airtime
|
|
||||||
echo "airtime:airtime" | chpasswd
|
|
||||||
|
|
||||||
su -l postgres bash -c 'createuser airtime'
|
|
||||||
su -l postgres bash -c 'createdb -O airtime airtime'
|
|
||||||
|
|
||||||
echo "ALTER USER airtime WITH PASSWORD 'airtime';" | su -l postgres bash -c psql
|
|
||||||
echo "GRANT ALL PRIVILEGES ON DATABASE airtime TO airtime;" | su -l postgres bash -c psql
|
|
||||||
|
|
||||||
# RabbitMQ
|
|
||||||
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
|
|
||||||
yum install -y rabbitmq-server
|
|
||||||
|
|
||||||
systemctl enable rabbitmq-server
|
|
||||||
systemctl start rabbitmq-server
|
|
||||||
|
|
||||||
rabbitmqctl add_user airtime airtime
|
|
||||||
rabbitmqctl add_vhost /airtime
|
|
||||||
rabbitmqctl set_permissions -p /airtime airtime ".*" ".*" ".*"
|
|
||||||
|
|
||||||
# LibreTime deps
|
|
||||||
# some of these are needed to build pip deps and as such should no be installed
|
|
||||||
# on production grade systems (mostly the -devel packages)
|
|
||||||
yum install -y \
|
|
||||||
cairo-gobject-devel \
|
|
||||||
gcc \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
gobject-introspection-devel \
|
|
||||||
openssl-devel \
|
|
||||||
php \
|
|
||||||
php-xml \
|
|
||||||
php-pdo \
|
|
||||||
php-pgsql \
|
|
||||||
php-bcmath \
|
|
||||||
php-mbstring \
|
|
||||||
php-json \
|
|
||||||
php-process \
|
|
||||||
python38-devel \
|
|
||||||
python38-psycopg2 \
|
|
||||||
httpd \
|
|
||||||
icecast \
|
|
||||||
liquidsoap \
|
|
||||||
alsa-utils \
|
|
||||||
selinux-policy \
|
|
||||||
policycoreutils-python-utils \
|
|
||||||
lsof \
|
|
||||||
xmlstarlet
|
|
||||||
|
|
||||||
# replace icecast init system with proper systemd unit ("ported" from CentOS 7)
|
|
||||||
cat > /etc/systemd/system/icecast.service << 'EOD'
|
|
||||||
[Unit]
|
|
||||||
Description=Icecast Network Audio Streeaming Server
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/usr/bin/icecast -c /etc/icecast.xml
|
|
||||||
ExecReload=/bin/kill -HUP $MAINPID
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOD
|
|
||||||
|
|
||||||
# install manually since it isn't required somewhere later
|
|
||||||
python3 -mpip install pycairo
|
|
||||||
|
|
||||||
# SELinux Setup
|
|
||||||
setsebool -P httpd_can_network_connect 1
|
|
||||||
setsebool -P httpd_can_network_connect_db 1
|
|
||||||
setsebool -P httpd_execmem on # needed by liquidsoap to do stuff when called by php
|
|
||||||
setsebool -P httpd_use_nfs 1 # to get nfs mounted /vagrant
|
|
||||||
setsebool -P httpd_graceful_shutdown 1 # to allow prefork to shutdown gracefully
|
|
||||||
setsebool -P git_system_use_nfs 1 # same for git
|
|
||||||
|
|
||||||
semanage port -a -t http_port_t -p tcp 9080 # default vagrant web port
|
|
||||||
|
|
||||||
# Allow apache full access to /vagrant and /etc/libretime
|
|
||||||
semanage fcontext -a -t httpd_sys_rw_content_t "/vagrant(/.*)?"
|
|
||||||
semanage fcontext -a -t httpd_sys_rw_content_t "/etc/libretime(/.*)?"
|
|
||||||
semanage fcontext -a -t httpd_sys_rw_content_t "/srv/airtime(/.*)?"
|
|
||||||
|
|
||||||
restorecon -Rv /vagrant /etc/libretime /srv/airtime
|
|
||||||
|
|
||||||
# Disable default apache page
|
|
||||||
sed -i -e 's/^/#/' /etc/httpd/conf.d/welcome.conf
|
|
||||||
|
|
||||||
# Switch to prefork since CentOS will disable mod_php if we use mpm_event
|
|
||||||
sed -i \
|
|
||||||
-e 's/#LoadModule mpm_prefork_module/LoadModule mpm_prefork_module/' \
|
|
||||||
-e 's/LoadModule mpm_event_module/#LoadModule mpm_event_module/' \
|
|
||||||
/etc/httpd/conf.modules.d/00-mpm.conf
|
|
||||||
|
|
||||||
# celery will not run unless we install a specific version (https://github.com/pypa/setuptools/issues/942)
|
|
||||||
# this will need to be figured out later on and will get overridden by the docs installer anyhow :(
|
|
||||||
pip3 install setuptools==33.1.1
|
|
||||||
pip3 freeze setuptools==33.1.1
|
|
||||||
|
|
||||||
# the web will fail badly if this is not set, using my personal default just because
|
|
||||||
echo 'date.timezone=Europe/Zurich' >> /etc/php.d/timezone.ini
|
|
||||||
systemctl restart httpd
|
|
||||||
|
|
||||||
# icecast needs to be available to everyone
|
|
||||||
sed -i -e 's@<bind-address>127.0.0.1</bind-address>@<bind-address>0.0.0.0</bind-address>@' /etc/icecast.xml
|
|
||||||
systemctl enable --now icecast
|
|
||||||
|
|
||||||
# let em use alsa
|
|
||||||
usermod -a -G audio apache
|
|
Loading…
Reference in New Issue