Installation/Backport

From diaspora* project wiki
Jump to: navigation, search
»» Note
This page merely exists to fill some open holes while all older guides are rewritten for the new installation guides form



}}

Introduction

»» Note
Running your own pod is not the only way to use diaspora*.
See the list of community-operated servers to join the network by registering an account on a public instance.


This guide will outline the procedure to get you set up with a production-ready installation of diaspora*.

Things to know

  • The install is a bit complex, but we're here to help.
    It's extremely helpful to have some experience in Linux/Unix server administration or Rails app deployment already. But don't worry, if you run into problems and need help, just visit us in our IRC channels on Freenode.
  • Running a common setup will get you the most help, if you need it.
    Most people in the community will have some experience running diaspora* with Unicorn as the app server using Nginx as outward-facing web server. Of course, you're free to run any other app server (Thin, Passenger...) or web server (Apache), but you might find it harder to get help if you run into unexpected troubles.
  • diaspora* is developed utilizing latest web standards
    Therefore UX is best with recent browsers, so please update your Firefox, Opera, Chrome or Safari to the newest version. We do not currently support any version of Internet Explorer, though we won't reject any contributions attempting to change that circumstance.
  • diaspora* strongly recommends HTTPS
    as we encrypt communication amongst servers and to the client browsers. You can get a free TLS certificate from Let's Encrypt.
    Unfortunately, self-signed certificates or certificates issued by CACert won't work.
  • We need your feedback
    to constantly improve and update this guide. Have a look at How we communicate
  • Do not run any of the commands you find in this guide as root (except if requested).
    Just use your normal user - or even better - create a separate user for diaspora* (rationale).


Versions of this guide

»» Important
Make sure to use the correct version of the guide, see below.


» Help me decide!

In Production mode, your pod is configured to deal with high load for everyday usage. This is recommended for a pod you want to actually use.

In Development mode, your pod is configured for development. This is recommended ony for development contributors of diaspora* which use the pod only locally for testing purposes.

The Database you choose is up to you. In our experience PostgreSQL achieves a better performance but needs more resources.

The current guide is for a production setup with PostgreSQL as database.

You can change them below:

Running mode: Production | Development
Database: MySQL | PostgreSQL | MariaDB


Requirements

Hardware

Minimum recommended:

  • Memory: 1.5 GB
  • Swap: 1 GB
  • CPU: decent multicore
  • Storage: The amount of hard disk space required largely depends on how many images you expect your users to upload.

It is possible to run a pod on a Raspberry Pi >= 2. However, this will be very slow and is not recommended for multi-user pods.

Software

Over the course of this manual, you will install the following software if not already installed.

  • Build tools - for compiling source packages
  • Ruby - the Ruby programming language
  • RubyGems - package manager for Ruby code libraries (like CPAN for Perl or PEAR for PHP)
  • Bundler - gem management tool for Ruby projects
  • MySQL or MariaDB or PostgreSQL - backend storage engine
  • OpenSSL - encryption library.
  • libcurl - multiprotocol file transfer library WARNING: Due to sidekiq longjmp error, you need at least curl 7.32
  • ImageMagick - image processing library
  • Git - version control system
  • Redis - persistent key-value store
  • one of the JavaScript runtimes on execjs' supported list.


Prepare the system

Old guide placeholder

This is the part were you should follow the old OS specific guide.

Get the source

It's time to download diaspora*! As your diaspora user run:

cd ~
git clone -b master https://github.com/diaspora/diaspora.git
cd diaspora

Don't miss the cd diaspora, all coming commands expect to be run from that directory!

Configuration

Copy files

cp config/database.yml.example config/database.yml
cp config/diaspora.yml.example config/diaspora.yml

Now open config/database.yml and config/diaspora.yml in your favorite text editor and carefully review them, they are extensively commented.

Important values in config/database.yml

  • username Make sure to use the right username you created for diaspora.
  • password Make sure to use the right password for the user your created for diaspora.

Important values in config/diaspora.yml

  • environment.url: Set the public facing URL to your pod here, for example for https://pod.geraspora.de this would be https://pod.geraspora.de
  • environment.certificate_authorities: You have to set this, one of the examples should fit. If the file in the example doesn't exist you're missing a package, in most cases it's named ca-certificates.
  • server.rails_environment: You must set this to production. The server section is read by ./script/server and most alternative startup methods to setup the correct environment.
  • environment.require_ssl: If for some reason you can't run your pod on HTTPS (we highly encourage you to do it!), set this to false to prevent a redirect from http:// to https://

Reverse proxy

You most likely have already a webserver running on port 80 (http) and 443 (https). It also should serve Diasporas static content and forward all other requests to Diaspora. Here are some example configurations to achieve that:

Bundle

It's time to install the Ruby libraries required by diaspora*:

gem install bundler
RAILS_ENV=production bin/bundle install --jobs $(nproc) --deployment --without test development --with postgresql

This takes quite a while. When it's finished, you should see a message similar to: Bundle complete! 137 Gemfile dependencies, 259 gems now installed. If that's not the case, you should seek for help on the mailing list or the IRC channel. The --jobs $(nproc) flag speeds things a bit since it enables parallel downloading. nproc shows the number of CPU cores you have available.

Running the manual gem install command shown in the error message can sometimes show a clearer error message if the bundle command fails.

Database setup

Double check your config/database.yml looks right and run:

RAILS_ENV=production bin/rake db:create db:schema:load

Precompile assets

RAILS_ENV=production bin/rake assets:precompile

Start diaspora*

It's time to start diaspora*:

./script/server

In the most simple case you want to do this inside a screen or tmux session from which you can safely detach.

Further reading