This documentation is for Release 7.0 and above. For documentation on previous releases, please select from the options below.
- Release 1.x version of this page: v.81.
- Release 2.x version of this page: v.87.
- Release 3.0-3.1 version of this page: v.111.
- Release 3.2 version of this page: v.116.
- Release 4.0 version of this page: v.143.
- Release 5.x version of this page: v.163.
- Release 6.0 version of this page: v.177
- Release 6.3-6.5 version of this page: v.201
These instructions provide a recipe for building your own all-in-one Avalon system from scratch on CentOS or Red Hat Enterprise Linux, version 6.x is supported, 7.x will be supported soon. Please note that while an all-in-one installation as outlined here is certainly suitable for testing and demos, a single, all-in-one, server may not be suitable for production environments.
Ready the Installation Environment
Make sure a valid hostname is resolvable
The default hostname is “avalon.dev”, so name the machine this and enter it into
The Avalon Media System requires several ports to be open to client browsers.
Here are the port settings that will need to be configured:
The preferred method is to create a shell script that will do the work for you. Here is an example script that you should look through and customize as needed: avalon-iptables-config.sh
If you're connected over ssh, it might kick you off.
Save your script to /etc/sysconfig/avalon-iptables-config.sh, make it executable and run it.
If you run into connection issues you can disable the iptables, by running "service iptables stop". This will completely drop your firewall. When finished troubleshooting run "service iptables start".
You may have to disable SELinux completely if there's Passenger installation problem
vim /etc/selinux/config #change the value of `SELINUX` to `disabled`
This package has libyaml-devel which is required by ruby and not provided by Redhat.
Install development libraries and packages for building Ruby
Install Java 8
Fedora Commons Repository
Fedora runs as a webapp in Tomcat
Install Apache Tomcat
Add Tomcat manager user
By default, no user has access to the Tomcat Manager App. Define a user in
/etc/tomcat/tomcat-users.xml with access to the manager-gui role. Below is a very basic example.
Configure Tomcat for Fedora
Append the following to
Download and run the fcrepo installer
See if you can access Fedora's REST interface at http://<server host name>:8984/fedora4/rest
Try it out on your local machine and on another machine. If you can't reach the app from another machine, your iptables might need to be changed to allow access. If Fedora is not up, check the tomcat logs in /var/log/tomcat/. Catalina.out and localhost.<date>.log usually provide the best information.
Avalon makes use of Solr through the Blacklight gem for faceting and relevance-based searching.
Download the solr tarball and run the installation script
Download Solr from http://archive.apache.org/dist/lucene/solr/
By default, the script extracts the distribution archive into
/opt, configures Solr to write files into
/var/solr, and runs Solr as the
solr user. Follow the linked guide if you wish to change these defaults.
Create Avalon core for Solr
If you have successfully installed Solr you should be able to access the dashboard page at http://<server host name>:8983/solr
Instructions on how to manually start/stop Solr: https://cwiki.apache.org/confluence/display/solr/Running+Solr
MariaDB is now the default database system for CentOS/RHEL7. Feel free to change Mysql below to MariaDB
Avalon uses MySQL for storing search queries, user data and roles, and as a back end our encoding dashboard.
Install MySQL server
Create databases and users
Enter the mysql monitor
Create a database for the Avalon web application and add a user to it
Check your work and exit
See documentation for your version of MySQL Server for detailed syntax (http://dev.mysql.com/doc/refman/5.1/en/create-database.html )
Media Streaming Server
Nginx replaces Red5 as the default streaming server since Avalon 6.3. With the upgrade to MediaElementjs 4, we now rely completely on HLS.
listen should use a public open port.
alias should point to where the actual stream files are.
proxy_pass needs changing if installing Nginx on a different server.
nginx user and let it own nginx stuff
Make 8980 bindable and start nginx
Avalon config should be updated to be compatible with Nginx:
If you enable SSL on Avalon server, you should also enable SSL on the streaming server to avoid Mixed content warning.
Download prebuilt ffmpeg
You can choose to download prebuilt binaries instead of building it yourself. Extract and copy ffmpeg to /usr/bin/
Install prerequisite packages using yum and the Avalon repository (note: mediainfo is pinned to 0.7.61-1 because of a bug with time fragment formatting in most recent version 0.7.87-1 in epel):
Install ffmpeg srpm
The following commands need to run under a user other than root. Change to another user to continue.
Run the ffmpeg installer
Log back in as root and finish the install.
You can also build a more modern ffmpeg from source, but not all versions work. Version 3.1 is known to work - check out the release/3.1 branch and build from there. If your modern ffmpeg uses fdk_aac instead of libfaac, adjust Avalon
Install and start the httpd service.
Apache Passenger and Ruby
Change current user to avalon then install RVM and ruby 2.4.1
Source the RVM shell (as avalon user) or close the terminal and open it back up.
Install Passenger via Gem (as avalon user)
Check to make sure passenger installed in the expected location (as avalon user)
Install Passenger apache module requirements (as root)
Create a virtual host for avalon
In 20-avalon.conf add this line inside the VirtualHost tag:
If using SSL, the following fix should be added to address BEAST, POODLE, RC4 issues (after the
Restart apache. With apache running, check passenger-status
Grab Avalon code from github
As of 6.3, Avalon is using the flexible and increasingly popular Config gem. Default settings for Avalon now live at
config/settings.yml, which should not be altered. Any custom config should be placed in
config/settings/<environment>.local.yml which will selectively override the default values.
Properly formatted environment variables can also override Avalon settings. For example,
SETTINGS__REDIS__HOST will override
A list of config values can be found at Configuration Files#config/settings.yml
If using vim with default settings and pasting the the code below, it will automatically comment out the last line. To prevent that, enable paste using the command :set paste and then use just ctrl+shift+v instead of going into insert mode.
Create /var/www/avalon/config/setup_load_paths.rb and add:
Configure database settings
Replace database.yml with the correct values for your production environment
Install the mysql2 adapter
Run the bundle install
Finish configuring Avalon
Edit /var/www/avalon/config/solr.yml and /var/www/avalon/config/blacklight.yml
Avalon config file
Avalon settings now live in /var/www/avalon/config/settings.yml. The default values should be sufficient to start with.
They can be selectively overwritten by creating a settings/<environment>.yml, or by using environment variables. Consult the config gem doc to understand how it works, or Avalon's documentation to customize this file for your installation.
Let Avalon know where your HLS streams are
Change the secrets.yml file:
grab the output of rake secret and add it to secrets.yml where instructed.
More information: Configuration Files#config/secrets.yml
Create the database using rake
If you get an error message saying that you can't connect to the database, take a look at this post and follow some of the troubleshooting steps.
Run the database migrations
Set rails environment to development, if it has not defaulted to this. On the first line of /var/www/avalon/config/environment.rb make sure it says 'development'
Avalon uses Sidekiq for background processing, which relies on Redis as its key-value store.
Sidekiq logs to log/sidekiq.log in the avalon directory.
For RHEL 7, running sidekiq as a systemd service is preferrable: https://github.com/mperham/sidekiq/blob/master/examples/systemd/sidekiq.service
To manually start a batch ingest job, run as avalon user
this will translate content in
schedule.rb to cron job syntax. Once verified, run the following to write job to crontab
You should get the cron job automatically if you were deploying from Capistrano.
Using the System
You should be able to visit the webpage with just the hostname (ie http://localhost)
Create an admin account
Click on "Sign in" in the upper right corner of the website main page. Set up a default identity with administrative privileges using the following properties.
You can also create an account from the command line in the root of your avalon install:
You can find specific information about using the system in the Collection Manager's Guide. Sample content is available for your convenience. Upload new items individually or by batch directly via SFTP using the avalondrop account you created above.
Known Issues - a list of bugs, workarounds, and cautions.
Restarting the Server
Before you restart your Avalon server, you'll want to make sure all of the services necessary to run Avalon will start automatically after the restart. Run these commands once and you should be set: