Here is what you need to install OSEM for production usage.
OSEM is a Ruby on Rails server application for professional use, not some desktop app you run for yourself. If you deploy it, YOU are responsible for the data that users enter into it, this data includes personal information like email addresses and/or passwords that most likely can be used to harm them in some form (cracking, doxing, social engineering).
If you never deployed a Ruby on Rails app before we strongly suggest you seek help from someone who has. That someone is NOT the OSEM team so please do NOT open an issue expecting us to explain how to do this.
You should know what you do and you have been warned.
OSEM is an semantic versioned app. That means given a version number MAJOR.MINOR.PATCH we increment the:
- MAJOR version when we make incompatible changes,
- MINOR version when we add functionality in a backwards-compatible manner
- PATCH version when we make backwards-compatible bug fixes
You can find the latest OSEM releases on our release page
The easiest way to deploy OSEM is to use one of the many platform as a service providers that support ruby on rails. We have prepared OSEM to be used with heroku. So if you have an account there, you can deploy OSEM by pressing this button:
We recommend to run OSEM in production with mod_passenger and the apache web-server. There are tons of guides on how to deploy rails apps on various base operating systems. Check Google. Of course there are also other options for the application server and reverse proxy, pick your poison.
There is a rudimentary docker-compose configuration for production usage (docker-compose.yml.production-example
). It brings OSEM up on port 8080. It uses persistent storage volumes for all the data users might create. You can start it with
- Configure OSEM (at least
SECRET_KEY_BASE
)cp dotenv.example .env.production vim .env.production
- Build the container image (every time you change code or config)
docker-compose -f docker-compose.yml.production-example build
- Setup the database (only once)
docker-compose -f docker-compose.yml.production-example run --rm production_web bundle exec rake db:bootstrap
- Start the services
docker-compose -f docker-compose.yml.production-example up
OSEM is configured through environment variables and falls back to sensible defaults. See the dotenv.example for all possible configuration options. However here is a list of things you most likely want to configure because otherwise things will not work as expected.
A random string to encrypt sessions/cookies.
The name of your OSEM installation
By default OSEM tries to send emails over localhost.
The host this OSEM instance runs on. This is used for generating URLs in emails sent.
The address OSEM uses to sending mails from.
The mail server we send mail over. (default: localhost)
If your mail server requires authentication, you need to specify the authentication type here. This is a symbol and one of :plain (will send the password in the clear), :login (will send password Base64 encoded) or :cram_md5 (combines a Challenge/Response mechanism to exchange information and a cryptographic Message Digest 5 algorithm to hash important information)
If your mail server requires authentication, set the username in this setting.
If your mail server requires authentication, set the password in this setting.