- 1 Introduction
- 2 Before you start
- 3 Versions of this guide
- 4 Requirements
- 5 Prepare the system
- 6 Get the source
- 7 Configuration
- 8 Bundle
- 9 Database setup
- 10 Precompile assets
- 11 Start Diaspora
- 12 Further reading
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 SSL certificate from StartSSL.
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).
Before you start
You need to choose if you want a production setup or development setup. Diaspora has three development trees: master, stable and develop. The master tree always contains the current release. The stable tree is where new features and bug fixes are added before a new minor version is released. The develop tree is where new features and bug fixes are added before a new major version is released. Therefore if you want a development setup you should run from develop. But it isn't guaranteed to be in a good state, so it's not recommended to run a production setup from it.
Diaspora is written in Ruby on Rails and therefore knows different running modes. These have nothing to do with running from the master or the develop tree. Nonetheless we recommend the development mode for development setups and production mode for production setups. The difference is, apart from a slightly different default configuration, speed. The development mode reloads the code on each request, so it speeds up your development. The production mode doesn't do that, so pages load significantly faster. That's the only major difference you need to care about. To emphasize it one more time: Running a production setup in development mode gains you nothing.
Lastly you can choose between running on MySQL/MariaDB or PostgreSQL, in our experience PostgreSQL achieves a better performance.
Versions of this guide
Important! Make sure to use the correct version of the guide, see below.
The current guide is for a production setup with PostgreSQL as database.
You can change them below:
For running an average-sized pod, your server should have at the very least 512MB of RAM (+1GB swap space) and a decent multi-core CPU. The amount of hard disk space required largely depends on how many images you expect your users to upload. If you plan to run the database server on the same host you should allow for at least double the amount of RAM and disk space.
- 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
- 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
Prepare the system
Please read and follow Debians instructions if you haven't enabled the backports already.
As root run:
apt-get install build-essential libssl-dev libcurl4-openssl-dev libxml2-dev libxslt-dev imagemagick ghostscript git curl libpq-dev libmagickwand-dev apt-get install -t wheezy-backports redis-server nodejs
Debian ships with an old cURL version that can let your Sidekiq workers crash under higher load. If this happens make sure to have a version that is compiled either with --enable-threaded-resolver, or c-ares support. Preferably try to find a package, installing software directly to your system is dangerous and needs special care in maintaining it. More information to this issue can be found in this issue
Install the database
Skip this step if you already have one.
See the Debian wiki.
Creating a user for Diaspora
As root run:
adduser --disabled-login diaspora su diaspora cd ~
The rest of the guide should happen under this user!
We recommend using Ruby Version Manager it will ensure you're always on the currently recommended Ruby version and cleanly separate your Diaspora installation from all other Ruby applications on your machine. If you opt for not using it ensure your Ruby version is at least 2.0.0, prior versions are incompatible. Be aware that this version is not maintained with security updates from the Ruby core team anymore. We currently recommend using the latest release of the 2.1 series.
As the user you want to run Diaspora under, that is not as root run:
curl -L dspr.tk/1t | bash
and follow the instructions. If you get GPG signature problems, change the permissions for all files in the .gnupg folder to 644.
Set up RVM
Ensure the following line is in your ~/.bashrc:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
Now close all your terminals and open a new one or run source ~/.bashrc in all of them.
If you don't have sudo installed or your current user doesn't have the privileges to execute it, run:
rvm autolibs read-fail
The the next command will check if all dependencies to build Ruby are installed. If these are not met, you will see a list of packages preceded by "Missing required packages:". As root install all the packages listed there for your OS. Then rerun the install command.
Ensure the currently recommend version of Ruby is installed:
rvm install 2.1
Get the source
It's time to download Diaspora! As your diaspora user run:
cd ~ git clone -b master git://github.com/diaspora/diaspora.git cd diaspora
Don't miss the cd diaspora, all coming commands expect to be run from that directory!
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. Make sure to enable postgres in config/database.yml!
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://
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:
It's time to install the Ruby libraries required by Diaspora:
gem install bundler RAILS_ENV=production DB=postgres bin/bundle install --without test development
This takes quite a while. You should get a green success message when it's finished, if that's not the case you should seek for help on the mailing list or the IRC channel. You can speed it up a bit adding -jn to the command, where n is 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.
Double check your config/database.yml looks right and run:
RAILS_ENV=production DB=postgres bin/rake db:create db:schema:load
RAILS_ENV=production DB=postgres bin/rake assets:precompile
It's time to start Diaspora: