mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
Fixup INSTALL.md
- add a big fat warning - Do not mentioned the deprecated docker setup anymore - Fixup docker-compose production setup
This commit is contained in:
parent
9b97ecdb58
commit
2a7acf7369
4 changed files with 78 additions and 123 deletions
|
|
@ -1,23 +1,16 @@
|
||||||
FROM osem/base
|
FROM osem/base
|
||||||
|
|
||||||
# We copy the Gemfiles into this intermediate build stage so it's checksum
|
|
||||||
# changes and all the subsequent stages (a.k.a. the bundle install call below)
|
|
||||||
# have to be rebuild. Otherwise, after the first build of this image,
|
|
||||||
# docker would use it's cache for this and the following stages.
|
|
||||||
COPY Gemfile /osem/
|
|
||||||
COPY Gemfile.lock /osem/
|
|
||||||
RUN chown -R osem /osem
|
|
||||||
|
|
||||||
# Add our files
|
# Add our files
|
||||||
|
COPY --chown=1000:1000 . /osem/
|
||||||
|
|
||||||
USER osem
|
USER osem
|
||||||
WORKDIR /osem/
|
WORKDIR /osem/
|
||||||
COPY --chown=osem:osem . /osem/
|
|
||||||
|
|
||||||
# Install our bundle
|
# Install our bundle
|
||||||
RUN export NOKOGIRI_USE_SYSTEM_LIBRARIES=1; bundle install --jobs=3 --retry=3 --without test development
|
RUN export NOKOGIRI_USE_SYSTEM_LIBRARIES=1; bundle install --jobs=3 --retry=3 --without test development
|
||||||
|
|
||||||
# Configure OSEM
|
# Generate assets
|
||||||
RUN mv config/database.yml.example config/database.yml
|
RUN export RAILS_ENV=production; bundle exec rake assets:clobber assets:precompile
|
||||||
|
|
||||||
ENV RAILS_ENV=production
|
ENV RAILS_ENV=production
|
||||||
|
|
||||||
|
|
|
||||||
140
INSTALL.md
140
INSTALL.md
|
|
@ -1,110 +1,72 @@
|
||||||
# Install Open Source Event Manager
|
# Install Open Source Event Manager
|
||||||
All the information that you need to install OSEM. If you have any problems with installing don't hesitate to [contact us](https://github.com/openSUSE/osem#contact)
|
Here is what you need to install OSEM.
|
||||||
|
|
||||||
## Versions
|
# 💥💥💥 WARNING 💥💥💥
|
||||||
OSEM is an [semantic versioned](http://semver.org/) app. That means given a version number MAJOR.MINOR.PATCH we increment the:
|

|
||||||
|
|
||||||
1. MAJOR version when we make incompatible changes,
|
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).
|
||||||
2. MINOR version when we add functionality in a backwards-compatible manner
|
|
||||||
3. PATCH version when we make backwards-compatible bug fixes
|
|
||||||
|
|
||||||
## Download
|
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 can find the latest OSEM releases on our [release page](https://github.com/openSUSE/osem/releases/latest) ([older release here](https://github.com/openSUSE/osem/releases))
|
|
||||||
|
|
||||||
|
*You should know what you do and you have been warned*.
|
||||||
|
|
||||||
## Deploy
|
## Deploy to the cloud
|
||||||
|
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](https://heroku.com). So if you have an account there, you can deploy OSEM by pressing this button:
|
||||||
OSEM is a *Ruby on Rails* application. We recommend to run OSEM in production with [mod_passenger](https://www.phusionpassenger.com/download/#open_source)
|
|
||||||
and the [apache web-server](https://www.apache.org/). There are tons of guides on how to deploy rails apps on various
|
|
||||||
base operating systems. [Check Google](https://encrypted.google.com/search?hl=en&q=ruby%20on%20rails%20apache%20passenger) ;-)
|
|
||||||
|
|
||||||
For more information about rails and what it can do, see the [rails guides.](http://guides.rubyonrails.org/getting_started.html)
|
|
||||||
|
|
||||||
If you have an heroku account you can also
|
|
||||||
|
|
||||||
<a href="https://heroku.com/deploy?template=https://github.com/openSUSE/osem/tree/v1.0">
|
<a href="https://heroku.com/deploy?template=https://github.com/openSUSE/osem/tree/v1.0">
|
||||||
<img src="https://www.herokucdn.com/deploy/button.svg" alt="Deploy">
|
<img src="https://www.herokucdn.com/deploy/button.svg" alt="Deploy">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
### Deploy with Docker
|
## Deploy to your own server
|
||||||
|
We recommend to run OSEM in production with [mod_passenger](https://www.phusionpassenger.com/download/#open_source)
|
||||||
|
and the [apache web-server](https://www.apache.org/). There are tons of guides on how to deploy rails apps on various
|
||||||
|
base operating systems. [Check Google](https://encrypted.google.com/search?hl=en&q=ruby%20on%20rails%20apache%20passenger). Of course there are also other options for the application server and reverse proxy, pick your poison.
|
||||||
|
|
||||||
You can deploy OSEM using [Docker](https://docker.com/) and [Docker-Compose](https://docs.docker.com/compose/overview/).
|
## Deploy via docker/docker-compose
|
||||||
|
There is a rudimentary docker-compose configuration for production usage (`docker-compose.yml.production-example`). It brings [OSEM up](http://0.0.0.0:8080) on port 8080. It uses persistent storage volumes for all the data users might create. You can start it with
|
||||||
*This is just a short guide and does not explain how to use Docker and/or Docker-Compose. You need some experience with these tools to be able to deploy OSEM with Docker properly.*
|
|
||||||
|
|
||||||
First of all, copy `docker-compose.yml.example` to `docker-compose.yml` and `docker-compose.env.example` to `docker-compose.env`. You should immediately change
|
|
||||||
`docker-compose.env`'s permissions to `0600` to make sure all the passphrases in it are kept secret.
|
|
||||||
(Tip: the easiest and most secure way to do it is to do it with a single command, for example `install -m 0600 docker-compose.env.example docker-compose.env`).
|
|
||||||
|
|
||||||
There are two configurations to deploy OSEM with Docker: *evaluation mode* and *production mode*.
|
|
||||||
|
|
||||||
#### Evaluation mode
|
|
||||||
|
|
||||||
If you want to evaluate OSEM to see if it fits your needs, the default configuration in `docker-compose.env` will work perfectly fine for you.
|
|
||||||
For convenience reasons, `docker-compose.yml` already contains a [MailHog](https://github.com/mailhog/MailHog) service configuration. MailHog
|
|
||||||
is going to catch every email sent by OSEM and displays them on a special web service. Thus, it eliminates the need to set up an SMTP server just to try out OSEM.
|
|
||||||
Just point your browser to http://localhost:8025 to get access to registration confirmation links etc.
|
|
||||||
|
|
||||||
Run `docker-compose up --build` to start the services. On first run, it will take a few minutes to initialize the database. Thus, wait a few minutes before you open up
|
|
||||||
http://localhost:9292 in your browser.
|
|
||||||
|
|
||||||
#### Production mode
|
|
||||||
|
|
||||||
To deploy OSEM for production, you have to make a few changes to `docker-compose.yml`. First, remove (or comment) the `mailhog` service, as it is only useful for evaluation and
|
|
||||||
cannot be used for production.
|
|
||||||
You can change the forwarded port from port `9292` to any other value if this port is already in use or you just want to use another one.
|
|
||||||
|
|
||||||
Next, you have to modify `docker-compose.env`. This file works as a Docker-like replacement for the regular Rails `.env` files described below.
|
|
||||||
You can configure any of the configuration values shown in the **Configure** section below in it. The most essential variables are already configured to standard
|
|
||||||
values in `docker-compose.env` which you most likely want to change.
|
|
||||||
|
|
||||||
First, you need to modify the email related settings. You need a working SMTP server for OSEM to send out registration confirmation mails etc.
|
|
||||||
|
|
||||||
For security reasons, the following variables have to be changed, too:
|
|
||||||
|
|
||||||
- `MYSQL_PASSWORD`
|
|
||||||
- `MYSQL_ROOT_PASSWORD`
|
|
||||||
- `SECRET_KEY_BASE`
|
|
||||||
|
|
||||||
These variables need to be set to the correct values at first, as they are used to initialize everything. Modification of these variables after installation and initialization is more
|
|
||||||
complicated and out of this document's scope.
|
|
||||||
|
|
||||||
As with any other Docker-Compose configuration, run `docker-compose up --build` (or `docker-compose up --build -d` to run in background) to start the services. During the first
|
|
||||||
start, the database has to be initialized which can take several minutes. The web service is by default exposed on localhost only as it is intended to be served by a reverse proxy (for SSL
|
|
||||||
termination, caching etc.).
|
|
||||||
You should not directly expose the web server port unless you have a good reason to do so.
|
|
||||||
|
|
||||||
|
|
||||||
## Configure
|
1. Configure OSEM
|
||||||
There are a couple of environment variables you can set to configure OSEM. Check out the *dotenv.example* file.
|
You have at least to set `SECRET_KEY_BASE`
|
||||||
|
```
|
||||||
|
cp dotenv.example .env.production
|
||||||
|
vim .env.production
|
||||||
|
```
|
||||||
|
1. Build the docker image (only once)
|
||||||
|
```
|
||||||
|
docker-compose -f docker-compose.yml.production-example build
|
||||||
|
```
|
||||||
|
1. Start the services
|
||||||
|
```
|
||||||
|
docker-compose -f docker-compose.yml.production-example up
|
||||||
|
```
|
||||||
|
|
||||||
### Online Ticket Payments
|
## Configuration
|
||||||
We use [Stripe](https://stripe.com) for accepting your ticket payments securely over the web.
|
OSEM is configured through environment variables and falls back to sensible defaults. See the [dotenv.example](https://github.com/openSUSE/osem/blob/master/dotenv.example) for all possible configuration options. However here is a list of things you most likey want to configure because otherwise things will not work as expected.
|
||||||
Our application uses iFrame for accepting your user's payment details without storing them, making the application PCI SAQ-A Compliant.
|
|
||||||
Please refer to [PAYMENTS](PAYMENTS.md) documentation file for setting up your stripe account and start accepting payments from your users.
|
|
||||||
|
|
||||||
## Dependencies
|
### `SECRET_KEY_BASE`
|
||||||
|
A [random string](https://www.randomlists.com/string?base=16&length=64&qty=1) to encrypt sessions/cookies.
|
||||||
|
|
||||||
### ImageMagick
|
### `OSEM_NAME`
|
||||||
We use [ImageMagick](http://imagemagick.org/) for image manipulation so it needs to be available in your installation.
|
The name of your OSEM installation
|
||||||
If you would like to resize exisiting logos in your OSEM installation you can do so by running the following rake task:
|
|
||||||
|
|
||||||
```shell
|
### How to send emails
|
||||||
$ bundle exec rake logo:reprocess
|
By default OSEM tries to send emails over localhost.
|
||||||
```
|
|
||||||
### Ruby
|
|
||||||
OSEM is using Ruby version 2.5
|
|
||||||
|
|
||||||
## openID
|
#### `OSEM_HOSTNAME`
|
||||||
In order to use [openID](http://openid.net/) logins for your OSEM installation you need to register your application with the providers ([Google](https://code.google.com/apis/console#:access), [GitHub](https://github.com/settings/applications/new) or [Facebook](https://developers.facebook.com/)) and enter their API keys in the environment variables found in your *.env* file(s).
|
The host this OSEM instance runs on. This is used for generating urls in emails sent.
|
||||||
|
|
||||||
## Recurring Jobs
|
#### `OSEM_EMAIL_ADDRESS`
|
||||||
Open a separate terminal and go into the directory where the rails app is present, and type the following to start the delayed_jobs worker for sending email notifications.
|
The address OSEM uses to sending mails from.
|
||||||
```
|
|
||||||
bundle exec rake jobs:work
|
|
||||||
```
|
|
||||||
|
|
||||||
## Performance
|
#### `OSEM_SMTP_ADDRESS`
|
||||||
If you are experiencing performance issues (or just curious), you may be able to [apply a free Skylight account](https://www.skylight.io/oss).
|
The mail server we send mail over. (*default*: localhost)
|
||||||
Once you have your account setup, simply set `SKYLIGHT_AUTHENTICATION` and `SKYLIGHT_PUBLIC_DASHBOARD_URL` in your `.env` file.
|
|
||||||
If you are reporting a performance issue or submiting a performance patch, it would be helpful (but not required) to link to the relevant Skylight data.
|
#### `OSEM_SMTP_AUTHENTICATION`
|
||||||
|
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)
|
||||||
|
|
||||||
|
#### `OSEM_SMTP_USERNAME`
|
||||||
|
If your mail server requires authentication, set the username in this setting.
|
||||||
|
|
||||||
|
#### `OSEM_SMTP_PASSWORD`
|
||||||
|
If your mail server requires authentication, set the password in this setting.
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,32 @@
|
||||||
version: "2"
|
version: "2"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
database:
|
production_database:
|
||||||
image: postgres
|
image: postgres
|
||||||
environment:
|
environment:
|
||||||
PGDATA: /var/lib/postgresql/data/pgdata
|
PGDATA: /var/lib/postgresql/data/pgdata
|
||||||
volumes:
|
volumes:
|
||||||
- database:/var/lib/postgresql/data/pgdata
|
- osem_production_database:/var/lib/postgresql/data/pgdata
|
||||||
osem:
|
production_web:
|
||||||
build: .
|
build:
|
||||||
dockerfile: Dockerfile.production
|
context: .
|
||||||
env_file: .env.production # see dotenv.example file
|
dockerfile: Dockerfile.production
|
||||||
depends_on:
|
depends_on:
|
||||||
- database
|
- production_database
|
||||||
ports:
|
ports:
|
||||||
- 3000:3000
|
- 8080:3000
|
||||||
|
env_file: .env.production # see dotenv.example file
|
||||||
|
environment:
|
||||||
|
OSEM_DB_HOST: production_database
|
||||||
|
command: /osem/bin/osem-init.sh
|
||||||
volumes:
|
volumes:
|
||||||
- .:/osem
|
- osem_production_web_data:/osem/public/system
|
||||||
- web-data:/osem/public/system
|
- osem_production_web_assets:/osem/public/assets
|
||||||
- web-assets:/osem/public/assets
|
- osem_production_web_logs:/osem/log
|
||||||
- web-logs:/osem/log
|
|
||||||
|
|
||||||
# named volumes to persist data
|
# named volumes to persist data
|
||||||
volumes:
|
volumes:
|
||||||
database:
|
osem_production_database:
|
||||||
web-data:
|
osem_production_web_data:
|
||||||
web-assets:
|
osem_production_web_assets:
|
||||||
web-logs:
|
osem_production_web_logs:
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,13 @@
|
||||||
namespace :db do
|
namespace :db do
|
||||||
desc 'Bootstrap the database for the current RAILS_ENV (create, setup & seed if the database does not exist)'
|
desc 'Bootstrap the database for the current RAILS_ENV (create, setup & seed if the database does not exist)'
|
||||||
task bootstrap: :environment do
|
task bootstrap: :environment do
|
||||||
puts 'Bootstrapping the database...'
|
if ActiveRecord::Base.connection.tables.empty?
|
||||||
begin
|
puts 'Bootstrapping the database...'
|
||||||
# Only do this if the database does not exist...
|
|
||||||
Rake::Task['db:version'].invoke
|
|
||||||
# rubocop:disable Style/RescueStandardError
|
|
||||||
rescue
|
|
||||||
# rubocop:enable Style/RescueStandardError
|
|
||||||
Rake::Task['db:create'].invoke
|
Rake::Task['db:create'].invoke
|
||||||
Rake::Task['db:setup'].invoke
|
Rake::Task['db:setup'].invoke
|
||||||
Rake::Task['db:seed'].invoke
|
Rake::Task['db:seed'].invoke
|
||||||
|
else
|
||||||
|
puts 'Database exists, skipping bootstrap...'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue