Diaspora è un social network open source consapevole della privacy. In questo tutorial imparerai come impostare e configurare un pod Diaspora su Debian 9.
Prerequisiti
- Un'istanza del server Debian 9.
- Con un pod di dimensioni medie, il tuo server dovrebbe avere almeno 512 MB di RAM (+ 1 GB di spazio di swap) e una CPU multi-core decente.
- Un utente sudo .
Installa pacchetti prerequisiti
Innanzitutto, aggiorna il sistema e installa i pacchetti necessari.
sudo apt-get update
sudo apt-get install build-essential libssl-dev libcurl4-openssl-dev libxml2-dev libxslt-dev imagemagick ghostscript curl libmagickwand-dev git libpq-dev redis-server nodejs
Installa PostgreSQL
Diaspora supporta MySQL, MariaDB e PostgreSQL. In questa guida useremo PostgreSQL.
Installa PostgreSQL.
sudo apt-get install PostgreSQL-server
Connettiti a PostgreSQL con l' postgresutente.
sudo -u postgres psql
Crea un utente Diaspora.
CREATE USER diaspora WITH CREATEDB PASSWORD '<password>';
Aggiungi un utente Diaspora dedicato
Questo è l'account utente che eseguirà Diaspora.
sudo adduser --disabled-login diaspora
Passa al nuovo utente.
sudo su - diaspora
Installa Ruby
Esistono diversi modi per installare Ruby. Useremo rbenvper gestire l'ambiente e le versioni.
Innanzitutto, dovrai installare i pacchetti richiesti da Ruby.
sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
Installa rbenv.
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
Riconnetti per ricaricare il percorso.
exit
sudo su - diaspora
Installa il ruby-buildplugin per rbenvcompilare Ruby:
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Installa Ruby.
rbenv install 2.4.3
rbenv global 2.4.3
Installa Exim4
Useremo Exim4 come inoltro SMTP per inviare e-mail agli utenti.
Installa e configura il pacchetto.
sudo apt-get install exim4
sudo dpkg-reconfigure exim4-config
Clonare il codice sorgente per Diaspora.
cd ~
git clone -b master https://github.com/diaspora/diaspora.git
cd diaspora
Copia il file di configurazione del database di esempio nella posizione richiesta da Diaspora.
cp config/database.yml.example config/database.yml
cp config/diaspora.yml.example config/diaspora.yml
Aprire il file di configurazione del database in un editor di testo per modificare alcune impostazioni.
nano config/database.yml
Modificare le impostazioni del database in modo che corrispondano all'utente PostgreSQL e alla password creati in precedenza.
postgresql: &postgresql
adapter: postgresql
host: localhost
port: 5432
username: diaspora
password: __password__
encoding: unicode
Apri il file di configurazione di Diaspora.
nano config/diaspora.yml
Dovrai aggiornare alcune impostazioni in questo file per far funzionare correttamente Diaspora.
url: Imposta qui l'URL pubblico sul tuo pod.
certificate_authorities: Rimuove il lead #per decommentarlo.
rails_environment: È necessario impostarlo su production.
require_ssl: Imposta questa opzione falseper impedire a un reindirizzamento http://a https://.
Installa le gemme richieste
Installa Bundle, il gestore della libreria Ruby.
gem install bundler
script/configure_bundler
Nota: se si verificano errori relativi alla versione di Ruby, modificarla .ruby-versione inserirne una propria (qui 2.4.3anziché 2.4).
Database di installazione
Crea e configura il database.
RAILS_ENV=production bin/rake db:create db:migrate
Pre-compilare le risorse
Questo comando rake precompila le risorse.
RAILS_ENV=production bin/rake assets:precompile
Servizi di sistema diaspora
Esistono molti modi per gestire la Diaspora come servizio. In questo tutorial useremo Systemd.
Innanzitutto, crea i seguenti file.
targetfile systemd :touch /etc/systemd/system/diaspora.target
webfile di servizio systemd :touch /etc/systemd/system/diaspora-web.service
sidekiqfile di servizio systemd :touch /etc/systemd/system/diaspora-sidekiq.service
Incolla il seguente testo di configurazione per ciascun file creato in precedenza.
target file:
[Unit]
Description=Diaspora social network
Wants=postgresql.service
Wants=redis-server.service
After=redis-server.service
After=postgresql.service
[Install]
WantedBy=multi-user.target
web file di servizio:
[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
sidekiq file di servizio:
[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
Abilita i servizi di avvio.
sudo systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.service
Riavvia i servizi.
sudo systemctl restart diaspora.target
Assicurarsi che funzionino correttamente.
sudo systemctl status diaspora-web.service
sudo systemctl status diaspora-sidekiq.service
Proxy inverso di Nginx
Useremo Nginx come proxy inverso per servire risorse statiche.
Useremo acme.sh per ottenere un certificato Let's Encrypt.
Scarica il acme.shcodice sorgente.
git clone https://github.com/Neilpang/acme.sh.git
Genera un certificato Let's Encrypt.
./.acme.sh/acme.sh --issue --log \
--dns \
--keylength ec-256 \
--cert-file /etc/nginx/https/cert.pem \
--key-file /etc/nginx/https/key.pem \
--fullchain-file /etc/nginx/https/fullchain.pem \
-d example.com \
-d www.example.com
Installa Nginx.
sudo apt-get install nginx
Crea un nuovo file di configurazione Nginx per il nostro pod Diaspora.
nano /etc/nginx/conf.d/diaspora.conf
Popolare il file con il seguente contenuto.
upstream diaspora_server {
server unix:/home/diaspora/diaspora/tmp/diaspora.sock;
}
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
access_log /dev/null;
error_log /dev/null;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com example.com;
if ($host = www.example.com) {
return 301 https://example.com$request_uri;
}
access_log /var/log/nginx/dspr-access.log;
error_log /var/log/nginx/dspr-error.log;
ssl_certificate /etc/nginx/https/fullchain.pem;
ssl_certificate_key /etc/nginx/https/key.pem;
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;
}
}
Nota: passare example.comal proprio nome di dominio registrato.
Dopo che tutte le modifiche sono state completate, verificare la presenza di errori nel file di configurazione.
sudo nginx -t
Riavvia Nginx per applicare le modifiche.
sudo systemctl restart nginx
Se ora visiti il nome di dominio del tuo pod Diaspora nel tuo browser (esempio:) https://example.com, raggiungerai la pagina di benvenuto di Diaspora.
Crea un utente Diaspora
Fai clic sul collegamento Start by creating an account.e inserisci i dettagli per creare un nuovo utente Diaspora. Quindi, sarai in grado di visualizzare la home page del tuo utente e iniziare a utilizzare il social network Diaspora.
Dopo aver creato un account, assegnagli i diritti di amministratore :.
Role.add_admin User.where(username: "your_username").first.person
Ora hai accesso alla dashboard di amministrazione.
https://example.com/admins/dashboard
Sidekiq
Sidekiq, che gestisce l'elaborazione dei processi in background, ha un'interfaccia web disponibile su https://example.com/sidekiq. Le statistiche del pod sono disponibili all'indirizzo https://example.com/statistics.
logrotate
Useremo logrotateper gestire i registri della diaspora.
Crea un nuovo logrotatefile per Diaspora.
nano /etc/logrotate/diaspora
Quindi, aggiungi le seguenti righe.
/home/diaspora/diaspora/log/*.log {
notifempty
copytruncate
missingok
compress
weekly
rotate 52
}
Ciò ruoterà i registri settimanalmente, li comprimerà e li manterrà per 52 settimane.
Aggiorna Diaspora
Quando arriva il momento di aggiornare Diaspora, attenersi alla seguente procedura.
Innanzitutto, aggiorna il sistema.
sudo apt-get update
sudo apt-get dist-upgrade
Aggiorna il codice sorgente di Diaspora con git.
su - diaspora
cd diaspora
git pull
Aggiorna le gemme.
gem install bundler
bin/bundle --full-index
Migrare il database e ricompilare le risorse.
RAILS_ENV=production bin/rake db:migrate
RAILS_ENV=production bin/rake assets:precompile
Infine, riavvia Diaspora.
systemctl restart diaspora.target