Diaspora è un social network open source consapevole della privacy. In questo tutorial imparerai come impostare e configurare un pod Diaspora su CentOS 7.
Prerequisiti
- Un'istanza del server CentOS 7.
- 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, scarica e installa l'ultima versione di EPEL.
sudo yum install epel-release
Installa i pacchetti necessari.
sudo yum install tar make automake gcc gcc-c++ git net-tools cmake libcurl-devel libxml2-devel libffi-devel libxslt-devel wget redis ImageMagick nodejs postgresql-devel
Abilita redis
l'avvio all'avvio del sistema.
sudo systemctl enable redis
sudo systemctl start redis
Installa PostgreSQL
Diaspora supporta MySQL, MariaDB e PostgreSQL. In questa guida useremo PostgreSQL.
Installa PostgreSQL.
sudo yum install postgresql-server postgresql-contrib postgresql-setup initdb
Abilita PostgreSQL per l'avvio all'avvio del sistema.
sudo systemctl enable postgresql
sudo systemctl start postgresql
Connettiti a PostgreSQL con l' postgres
utente.
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 rbenv
per gestire l'ambiente e le versioni.
Innanzitutto, dovrai installare i pacchetti richiesti da Ruby.
sudo yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel
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-build
plugin per rbenv
compilare 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
Configurare un server di posta
Useremo Postfix come inoltro SMTP per inviare e-mail agli utenti. Fare riferimento a questo articolo per informazioni su come installare un semplice server di posta, con Postfix come MTA, Dovecot come MDA e Sieve per l'ordinamento della posta.
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
: Rimuovi il # iniziale per decommentarlo.
rails_environment
: È necessario impostarlo sulla produzione.
require_ssl
: Impostare questo su false per impedire un reindirizzamento da 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-version
e inserirne una propria (qui 2.4.3
anziché 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.
-
target
file systemd :
touch /etc/systemd/system/diaspora.target
-
web
file di servizio systemd :
touch /etc/systemd/system/diaspora-web.service
-
sidekiq
file 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.sh
codice 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 yum 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.com
al 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 stai eseguendo un firewall, esegui i seguenti comandi per consentire HTTP
e gestire il HTTPS
traffico.
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
Se ora visiti il nome di dominio del tuo pod Diaspora nel tuo browser ( 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 logrotate
per gestire i registri della diaspora.
Crea un nuovo logrotate
file 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 i pacchetti installati.
sudo yum update
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