The site behind It is the default web interface to download openSUSE distribution and to search for OBS packages.Packages at
Ruby HTML CSS JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
app Merge pull request #222 from michelmno/ppc64le_leap423_again Mar 5, 2018
bin update rails files Oct 20, 2017
config Add images.xml Feb 13, 2018
doc start a readme for i18n Feb 11, 2010
lib Small bump to next rubocop that works Feb 2, 2018
locale Translated using Weblate (Chinese (Taiwan)) Mar 14, 2018
public Removal of old 11.1 download site Feb 15, 2018
script Move the downloads calculation from delayed_job to a rake task May 9, 2014
test Do not crash if appdata is not available Feb 20, 2018
.gitignore Add vendor to .gitignore Feb 2, 2018
.gitmodules Change git submodules url Jul 25, 2017
.rubocop.yml Not needed, and it overrides sane defaults Feb 2, 2018
.rubocop_todo.yml Regenerate rubocop todo file with newer version Feb 2, 2018
.travis.yml Enable running tests in travis Feb 3, 2018 Contributing guide: Require screenshots for visual changes Feb 22, 2018
Capfile Small bump to next rubocop that works Feb 2, 2018
Dockerfile Get some Vagrant/Docker dev environment going Feb 24, 2017
Gemfile Small bump to next rubocop that works Feb 2, 2018
Gemfile.lock Small bump to next rubocop that works Feb 2, 2018
README.i18n Wrong url in README.i18n Jul 28, 2016 Add contributor's guide Feb 21, 2018
Rakefile Small bump to next rubocop that works Feb 2, 2018
TODO improve display of subpackages in search result list Apr 20, 2012
Vagrantfile Small bump to next rubocop that works Feb 2, 2018 Enable Style/ExtraSpacing Rubocop cop Jun 8, 2017
manifest.yml manifest: increase disk quota Oct 20, 2017

Build Status

Ruby on Rails application powering

We hope you'll get involved! Read our Contributors' Guide for details.

Installing dependencies in a (open)SUSE system

zypper ref
zypper in ruby ruby-devel rubygem-bundler gcc make libxml2-devel libxslt-devel

Running the application locally

Just for running it in development mode. If you are playing to deploy it in a server, please apply good Ruby on Rails practices (like generating your own keys for secrets.yml).

git clone
cd software-o-o
git submodule init
git submodule update

bundle package
bundle exec rails s

Enjoy your clone at

Running the application in production

The application will take the following environment variables:

  • SECRET_KEY_BASE: See Encrypted Session Storage in Rails documentation.
  • API_USERNAME and API_PASSWORD: Credentials to the Open Build Service API end-point
    • These can be replaced with OPENSUSE_COOKIE if you have admin access to the Open Build Service instance.

Puma will honor other variables too:

  • PORT


memcache should be running. It seems to be hardcoded in environments/production.rb to localhost:11211. This probably needs to be fixed, as the dalli gem, automatically uses MEMCACHE_SERVERS env variable or as default.


If you plan to run the application on PaaS, make sure you set all the above variables correctly.

Official instance

The official instance is deployed using an rpm package. The rpm package bundles all the required gems.

There is a software_opensuse_org.service you can control via systemd.

The systemd service will read the variables described above from /etc/software_opensuse_org.conf in the form of an EnvironmentFile:


Development environment using Vagrant

There is also a Vagrant setup to create our development environment. All the tools needed for this are available for Linux, MacOS and Windows.

  1. Install Vagrant and docker. Both tools support Linux, MacOS and Windows.

  2. Clone this code repository:

    git clone --recurse-submodules
  3. Build your Vagrant box:

    vagrant up
  4. Attach to your new development box

    docker attach software_web
  5. Setup the database

    rake db:setup db:seed
  6. Start the app

    rails server
  7. Enjoy your clone at

If you exit the shell inside the vagrant box your development environment is stopped. Want to continue? Run vagrant up and docker attach software_web again. Happy hacking!