Installation of Diaspora* pod on a VM Ubuntu20
Sources/tutos: https://www.howtoforge.de/anleitung/wie-man-das-dezentrale-social-media-netzwerk-diaspora-auf-debian-10-installiert/
https://angristan.fr/installer-pod-diaspora-debian-ubuntu/
https://wiki.diasporafoundation.org/Installation/Ubuntu/Focal#Configuration
$ sudo apt-get install postfix $ sudo apt-get install build-essential git curl gsfonts imagemagick libmagickwand-dev nodejs redis-server libssl-dev libcurl4-openssl-dev libxml2-dev libxslt1-dev libpq-dev $ sudo apt-get install postgresql
# systemctl start redis-server # systemctl enable redis-server # systemctl start postgresql # systemctl enable postgresql
$ sudo -u postgres psql
postgres=# CREATE USER diaspora WITH CREATEDB PASSWORD '<password_of_diaspora>';
Modification of the database to avoid issues due to UTF8:
postgres=# update pg_database set datallowconn = TRUE where datname = 'template0'; UPDATE 1 postgres=# \c template0 You are now connected to database "template0" as user "postgres". template0=# update pg_database set datistemplate = FALSE where datname = 'template1'; UPDATE 1 template0=# drop database template1; DROP DATABASE template0=# create database template1 with template = template0 encoding = 'UTF8'; CREATE DATABASE template0=# update pg_database set datistemplate = TRUE where datname = 'template1'; UPDATE 1 template0=# \c template1 You are now connected to database "template1" as user "postgres". template1=# update pg_database set datallowconn = FALSE where datname = 'template0'; UPDATE 1 template1=# \q
$ sudo adduser --disabled-login diaspora
$ sudo -iu diaspora $ gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB $ find .gnupg/ -type d -exec chmod 750 {} \; $ find .gnupg/ -type f -exec chmod 640 {} \; $ curl -L https://s.diaspora.software/1t | bash
nano ~/.bashrc /// and add at the end: [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
Logout and re-login:
$ exit $ sudo -iu diaspora
$ rvm autolibs read-fail => install as "root" the missing dependancies $ rvm autolibs read-fail $ rvm install 2.6 $ ruby -v
$ cd ~ $ git clone -b master https://github.com/diaspora/diaspora.git $ cd diaspora $ cp config/database.yml.example config/database.yml $ cp config/diaspora.toml.example config/diaspora.toml
$ nano config/database.yml port: 5432 username: "diaspora" password: "the_password_of_user_diaspora" encoding: unicode
$ nano config/diaspora.toml ###### let the "whitespaces" like in the commented sections!! [configuration.environment] ## Section url: "https://sub_domain.the_domain.tld/" certificate_authorities: '/etc/ssl/certs/ca-certificates.crt' require_ssl: true [configuration.server] ## Section rails_environment: 'production' [configuration.mail] ## Section enable = true sender_address = "notification@diaspora.domain.tld" method = "sendmail"
$ gem install bundler $ script/configure_bundler $ bin/bundle install --full-index ...."Bundle complete! 142 Gemfile dependencies, 234 gems now installed......"
$ RAILS_ENV=production bundle exec rake db:create db:migrate $ RAILS_ENV=production bin/rake assets:precompile
~/diaspora$ tmux $ pwd /home/diaspora/diaspora $ ./script/server
There should not be any error messages.
exit
to close the tmux session
Commands done from the user with sudo
permissions
$ sudo apt-get install nginx
Create a self-signed SSL certificate. Give the FQDN of the Diaspora* installation as the name of the cert! (here: diaspo.domain.tld)
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/diaspora_key.key -out /etc/ssl/certs/diaspora_crt.crt
$ sudo nano /etc/nginx/sites-available/diaspora
Adapt the domain name (“diaspo.domain.tld” here) and the file names of the cert+key:
upstream diaspora_server { server unix:/home/diaspora/diaspora/tmp/diaspora.sock; } server { listen 80; listen [::]:80; server_name diaspo.domain.tld; /// adapt domain name return 301 https://diaspo.domain.tld$request_uri; /// adapt domain name access_log /dev/null; error_log /dev/null; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name diaspo.domain.tld; /// adapt domain name access_log /var/log/nginx/dspr-access.log; error_log /var/log/nginx/dspr-error.log; ssl_certificate /etc/ssl/certs/diaspora_crt.crt; /// adapt file name ssl_certificate_key /etc/ssl/private/diaspora_key.key; /// adapt file name ssl_protocols TLSv1.2; ssl_ciphers EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES; ssl_ecdh_curve X25519:P-521:P-384:P-256; ssl_prefer_server_ciphers on; # ssl_stapling on; # ssl_stapling_verify on; resolver 80.67.169.40 80.67.169.12 valid=300s; resolver_timeout 5s; ssl_session_cache shared:SSL:10m; root /home/diaspora/diaspora/public; client_max_body_size 5M; client_body_buffer_size 256K; try_files $uri @diaspora; location /assets/ { expires max; add_header Cache-Control public; } location @diaspora { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://diaspora_server; } }
$ sudo ln -s /etc/nginx/sites-available/diaspora /etc/nginx/sites-enabled/diaspora $ sudo systemctl restart nginx $ sudo systemctl status nginx
Running diaspora* over services is for me more comfortable than running over a tmux console.
$ sudo nano /etc/systemd/system/diaspora.target and enter: [Unit] Description=Diaspora social network Wants=postgresql.service Wants=redis-server.service After=redis-server.service After=postgresql.service [Install] WantedBy=multi-user.target
$ sudo nano /etc/systemd/system/diaspora-web.service and enter: [Unit] Description=Diaspora social network (unicorn) PartOf=diaspora.target StopWhenUnneeded=true [Service] User=diaspora Environment=RAILS_ENV=production WorkingDirectory=/home/diaspora/diaspora ExecStart=/bin/bash -lc "bin/bundle exec unicorn -c config/unicorn.rb -E production" Restart=always [Install] WantedBy=diaspora.target
$ sudo nano /etc/systemd/system/diaspora-sidekiq.service and enter: [Unit] Description=Diaspora social network (sidekiq) PartOf=diaspora.target StopWhenUnneeded=true [Service] User=diaspora Environment=RAILS_ENV=production WorkingDirectory=/home/diaspora/diaspora ExecStart=/bin/bash -lc "bin/bundle exec sidekiq" Restart=always [Install] WantedBy=diaspora.target
$ sudo systemctl daemon-reload $ sudo systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.service $ sudo systemctl status diaspora.target diaspora-sidekiq.service diaspora-web.service
Reboot.
Diaspora* should now be available over the web browser at https://diaspo.domain.tld“