Installation/openSUSE/13: Difference between revisions

From diaspora* project wiki
m (Replaced content with "{{Work_in_progress}} {{#vardefine:dist|openSUSE}} {{#vardefine:version|13}} {{Template:Installation}} === Troubleshooting === Some thing you may fix ==== RVM rvmrc_ful...")
 
(36 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Installation/Head}}
{{Work_in_progress}}
{{#vardefine:dist|openSUSE}}
{{#vardefine:version|13}}


=== Install packages ===
{{Template:Installation}}


As root run:
=== Troubleshooting ===


{{#tag:syntaxhighlight|
Some thing you may fix
zypper install libmysqlclient-devel ruby-devel rubygem-bundler mysql-community-server libmysqlclient-devel mysql-community-server-client make automake gcc gcc-c++ git libcurl-devel ImageMagick ImageMagick-extra libtool nginx rubygem-passenger-nginx bison libtool patch libxml2-devel libxslt-devel libffi-devel libyaml-devel nodejs redis
|lang=bash}}
 
=== Install the database ===
 
If you already have one skip this step.
 
As root run:
 
{{#tag:syntaxhighlight|
zypper install {{#switch: {{#var:DB}}|mysql=mysql-community-server mysql-community-server-client libmysqlclient-devel|postgres=postgresql-server}}
 
/etc/init.d/mysql start
|lang=bash}}
 
=== Creating a user for Diaspora ===
 
As root run:
 
{{#tag: syntaxhighlight|
useradd -m diaspora
su diaspora
cd ~
|lang="bash"}}
 
=== RVM ===
 
We recommend using [http://rvm.io 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 1.9.2-p320, 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 {{#var:rubyversion}}.
 
==== Install RVM ====
 
As the user you want to run Diaspora under, that is '''not as root''' run:
 
<syntaxhighlight lang="bash">
curl -L dspr.tk/1t | bash
</syntaxhighlight>
 
and follow the instructions.
 
==== Set up RVM ====
 
 
'''Now close all open terminals and open a new one!'''
 
 
If you '''don't''' have sudo installed or your current user doesn't have the privileges to execute it, run:
<syntaxhighlight lang="bash">
rvm autolibs read-only
</syntaxhighlight>


'''Closely watch the output of the next step for something''' like "<tt>Missing required packages:</tt>". If it appears, hit <tt>Ctrl+C</tt> and install all the packages listed there. Then rerun that command.
==== RVM rvmrc_full_path_to_file error ====


Ensure the currently recommend version of Ruby is installed:
Find diaspora/.rvmrc file and remove the line above to prevent it


{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
rvm install {{#var:rubyversion}}
rvm rvmrc warning ignore
|lang=bash}}
|lang=bash}}

Latest revision as of 05:25, 2 September 2016

Work in progressWork in progress:This article is a work in progress, it may contain incomplete or inaccurate information. There may be additional information on the talk page.



}}

Introduction

NoteNote:You don't need to have your own pod to use diaspora*.
Running your own diaspora* server allows more control over your data, but it requires technical skills and time. Instead, you can register on one of the installations open to everyone that allow you to use diaspora* in a few clicks without any requirements

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).


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.


Please note that running diaspora* together with other applications that use Redis on the same machine can be dangerous. Only do that if you absolutely know what you are doing, and if you know how to change the Redis database for all of the applications.


Versions of this guide

WarningWarning: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.

For Database, choose PostgreSQL unless you already have an existing database server that you want to re-use. We recommend an isolated PostgreSQL installation exclusively for your pod.

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

You can change them below:

Running mode: Production | Development

Database: PostgreSQL | MySQL (deprecated) | MariaDB (deprecated)



Prepare the system

Install packages

sudo zypper install make automake gcc gcc-c++ git libcurl-devel ImageMagick ImageMagick-extra libtool bison libtool patch libxml2-devel libxslt-devel libffi-devel libyaml-devel nodejs gdbm-devel libopenssl-devel

Install database

If you already have one skip this step.

sudo zypper install postgresql-server

Firewall

openSUSE use to have a firewall turned on (good work!) but this filter the HTTP/s protocols. In this particular case we need ports 80 and 443 open.

To do so, do as follows:

TODO: Adapt to systemd

Setup REDIS

As root run:

zypper install redis
cp /etc/redis/default.conf.example /etc/redis/default.conf
chown redis: /etc/redis/default.conf

TODO: Adapt properly to systemd

Creating a user for Diaspora

As root run:

sudo useradd -m diaspora
sudo su - diaspora

Creating a user for DB

If you like a separate DB user for your diaspora* installation, log in to your PostgreSQL server as the main user 'postgres'. One way to do this is:

sudo -u postgres psql

You need a user with the privilege to create databases.

CREATE USER diaspora WITH CREATEDB PASSWORD '<password>';


RVM

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.6.0, prior versions are incompatible. We currently recommend using the latest release of the 3.3 series.

Install RVM

As the user you want to run diaspora* under, that is not as root, run:

curl -L https://s.diaspora.software/1t | bash

and follow the instructions. If you get GPG signature problems, follow the instructions printed by the command. Running the 'gpg --recv-keys' command with 'sudo' should not be necessary. If those commands give you permission denied errors, change them to 600 for all files and 700 for all folders in the .gnupg folder.

Set up RVM

Ensure the following line is in your ~/.bashrc:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Now run source ~/.bashrc in the terminal(s) you are using for this guide.

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 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 3.3



Get the source

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

cd ~
git clone -b main 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.toml.example config/diaspora.toml

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

Important values in config/database.toml

  • 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.toml

  • configuration.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
  • configuration.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.
  • configuration.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://

Bundle

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

script/configure_bundler
bin/bundle install --full-index

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.

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:migrate

Precompile assets

RAILS_ENV=production bin/rake assets:precompile

Start diaspora*

It's time to start diaspora*:

./script/server

Your diaspora server is now running, either on a unix socket (current default) or on http port 3000. The listening method can be configured in diaspora.toml, search for '3000' or 'listen' to find the correct line.

The server script is good to ensure your server works as expected. You should set up automatic startup for your pod, so that your pod automatically starts on server reboots, and recovers from eventual crashes.

Reverse proxy

To connect the internet to diaspora*, and to serve static files, you need to set up a reverse proxy. We highly recommend nginx, and you can find an example configuration for nginx here.

Alternatives to nginx (not recommended)

Alternatively, you can check out these community-contributed options. However, please note that we will have a hard time supporting you if you run into issues with them!

Backup

WarningWarning:You have to do backups of your pod data. If you lose your data, you won't be able to use the combination of your old username and old domain ever again. Make sure to store the backups on a different server, or at least on a different hard drive.
For details on how to do backups, see Pod data backup.

Further reading



Troubleshooting

Some thing you may fix

RVM rvmrc_full_path_to_file error

Find diaspora/.rvmrc file and remove the line above to prevent it

rvm rvmrc warning ignore