13 Dicembre 2015, 23:30:37 Ultima modifica: 16 Gennaio 2016, 18:28:40 di Darko
A grande richiesta (in pratica @Buntolo e @madnessmike :asd:) ecco la guida passo passo, circa quasi, per realizzare un server casalingo che permetta scambio di file, streaming musica, galleria fotografica condivisibile, sync rubrica e calendario e tanto altro.
Potrete dire addio a Dropbox, GoogleDrive, oneDrive e anche a vostra mamma :lkof:

Premessa: una macchina con Arch (è la distro che conosco meglio) con il minimo sindacale installato: base, base-devel, sudo, yaourt e openssh.
Vi lascio al wiki di Arch per queste operazioni e per l'installazione del tutto.

Andiamo al sodo: installare una LAMP stack sul vostro server (Linux, Apache, MySQL, PHP).

1. Apache
Installiamolo
sudo pacman -Syyu apache
Configuriamolo
sudo nano /etc/httpd/conf/httpd.conf
e decommentiamo
#LoadModule unique_id_module modules/mod_unique_id.so
Riavviamo il server
sudo systemctl restart httpd
Se spunta l'errore
httpd: apr_sockaddr_info_get() failed for droplet1
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                                         [DONE]

Basta aggiungere il proprio username al file /etc/hosts
127.0.0.1       localhost.localdomain   localhost USERNAME


2. MySQL
In Arch MySQL è rappresentato da MariaDB, ma non cambia nulla
sudo pacman -S mysql
Avviamolo
sudo systemctl start mysqld
Configuriamo il tutto
sudo mysql_secure_installation
Immettiamo una nuova password per MySQL e rispondiamo alle domande
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y                                           
... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...


3. PHP
Per chi installa su arch, la versione di PHP distribuita è la 7, più stabile e veloce della 5 utilizzata finora
sudo pacman -S php php-apache
sudo  nano /etc/httpd/conf/httpd.conf
E infiliamo la riga
LoadModule php7_module       modules/libphp7.so
Sotto l'ultimo LoadModule
la riga
AddHandler php7-script php
sotto l'ultimo AddHandler
e la riga
Include conf/extra/php7_module.conf
Sotto l'ultimo Include

Abilitiamo il tutto all'autoavvio
sudo systemctl enable mysqld httpd
e riavviamo il server
sudo systemctl restart httpd


4. OwnCloud
Una volta configurata la macchina passiamo ad OwnCloud
Ma prima dobbiamo installare e configurare il modulo MDB2 per PHP
sudo pacman -Sy php-pear
sudo pear install MDB2


Con Arch OwnCloud è già nei repository community, per cui basta un
sudo pacman -S owncloud
e via
Copiamo le impostazioni di base
sudo cp /etc/webapps/owncloud/apache.example.conf /etc/httpd/conf/extra/owncloud.conf
e le includiamo nel file /etc/httpd/conf/httpd.conf incollando al riga
Include /etc/httpd/conf/extra/owncloud.conf
sotto l'ultimo Include (probabilmente quello di PHP)

Apriamo il file /etc/php/php.ini e abilitiamo i seguenti moduli eliminando il ; che si trova davanti la riga
extension=bz2.so
extension=curl.so
extension=exif.so
extension=ftp.so
extension=gd.so
extension=gettext.so
extension=iconv.so
extension=intl.so
extension=mcrypt.so
extension=mysql.so
extension=mysqli.so
zend_extension=opcache.so
extension=openssl.so
extension=pdo_mysql.so
extension=posix.so
extension=xmlrpc.so
extension=zip.so



Quindi editiamo le configurazioni di OwnCLoud
sudo nano /etc/httpd/conf/extra/owncloud.conf

<IfModule mod_alias.c>
Alias /owncloud /usr/share/webapps/owncloud/
</IfModule>
<Directory /usr/share/webapps/owncloud/>
   Options FollowSymlinks
   Order allow,deny
   AllowOverride all
   allow from all
   php_admin_value open_basedir
"/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/$
</Directory>
<VirtualHost *:80>
    ServerAdmin email@example.com
    DocumentRoot /usr/share/webapps/owncloud
    ServerName owncloud.example.com
    ErrorLog logs/owncloud.foo.info-error_log
    CustomLog logs/owncloud.foo.info-access_log common
</VirtualHost>

In particolare la seconda parte, dove potete mettere la vostra email , che verrà usata da eventuali altri utenti per segnalare problemi e il server name (ma vedremo poi quando abiliteremo il servizio con noip.com)

Creiamo il nostro DB
$ mysql -u root -p
sql> CREATE DATABASE owncloud;
sql> USE owncloud;
sql> CREATE USER 'owncloud'@'localhost' IDENTIFIED BY '<span style="color: red">password';
sql> GRANT ALL PRIVILEGES ON owncloud TO 'owncloud'@'localhost' WITH GRANT OPTION;
sql> \q

E riavviamo il server
sudo systemctl restart httpd

Rendiamo la directory di OwnCLoud leggibile all'utente http (apache)
sudo chown -R http:http /usr/share/webapps/owncloud

Aprite un browser, puntate all'IP della macchina server (da un altro pc LAN o sul server stesso) e compilato il modulo di avvio di OwnCloud


Da questo momento in poi OwnCloud è utilizzabile senza problemi dalla vostra rete

5. SSH
È un webserver, lo piazzate nello sgabuzzino e lo dimenticate lì.
Ma ogni tanto può essere utile entrare per dare una sistemata, ma la tastiera, tra le scarpe e i detersivi, non ci entra, figurarsi un monitor (specie se non usate un netbook come ho fatto io).
Allora installiamo openssh e leviamoci il pensiero
sudo pacman -S openssh
e avviatelo come demone
sudo systemctl start sshd.socket
Il socket permette di avviare una sessione SSH se e solo se arriva una richiesta valida, a differenza di sshd.service che resta in ascolto sempre
Installate OpenSSH anche nel pc su cui lavorate normalmente e accedete con
ssh -p port user@server-address
dove user è l'utente del webserver (non usate root che è disabilitato di default per ovvie ragioni) e server address è l'ip casalingo del server (192.168.X.Y)
loggatevi con la password di quell'utente e siete a posto.
Ci sono modi per aumentare la sicurezza di ssh (cambiare porta in ascolto, usare chiavi cifrate ecc), ma vi rimando alla wiki di arch.


6. SSL (HTTPS)
Altra cosa importante da fare è "obbligare" le connessioni in entrata ad usare un protocollo protetto (https al posto di http)
A tal proposito ci viene in aiuto Openssl, presente nei repo
sudo pacman -S openssl
Creiamo la chiave protetta nella directory /etc/httpd/conf/
cd /etc/httpd/conf/
sudo openssl req -new -x509 -nodes -newkey rsa:4096 -keyout apache.key -out apache.crt -days 20000

Rispondiamo alle domande in base alle nostre esigenze e, appena finito, diamo dei permessi più adeguati ai due file creati
sudo chmod 400 apache.key
sudo chmod 444 apache.crt

Alcune piccole modifiche alla configurazione
sudo nano /etc/httpd/conf/extra/httpd-ssl.conf
mettere on su SSLEngine, aggiungere queste righe negli appositi settori (ctrl+w per cercare su nano)
SSLCertificateFile "/etc/httpd/conf/apache.crt"
SSLCertificateKeyFile "/etc/httpd/conf/apache.key"

Abilitiamo ssl in /etc/httpd/conf/httpd.conf decommentando, se commentato,
LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so

e
Include conf/extra/httpd-ssl.conf
Obblighiamo la connessione sicura tramite /etc/httpd/conf/extra/owncloud.conf (allego il mio, ricopiatelo e modificate le parti in rosso)
Citazione
<IfModule mod_alias.c>
    Alias /owncloud /usr/share/webapps/owncloud/
</IfModule>

<Directory /usr/share/webapps/owncloud/>
    Options FollowSymlinks
    AllowOverride all
    Require all granted
    php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr$
</Directory>

<VirtualHost IP_LAN_DEL_SERVER:80>
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
    ServerAdmin EMAIL_ADMIN
    DocumentRoot /usr/share/webapps/owncloud
    ServerName NOME_SERVER_SU_NOIP
    ErrorLog /var/log/httpd/owncloud.foo.info-error_log
    CustomLog /var/log/httpd/owncloud.foo.info-access_log common
</VirtualHost>

<VirtualHost IP_LAN_DEL_SERVER:443>
SSLEngine on
SSLCertificateFile /etc/httpd/conf/apache.crt
SSLCertificateKeyFile /etc/httpd/conf/apache.key
</VirtualHost>
Ovviamente il nomeserver non lo abbiamo ancora, ma potete inserire il nome che pensate di dare (nomeserver.noip.me) e poi modificarlo nel caso sia diverso

Riavviamo apache
sudo systemctl restart httpd


7. Configurazioni varie
Abilitiamo la cache per PHP creando il file Al momento andrebbe evitato, quantomeno con APCu perché non è stato ancora aggiornato alla versione 7 e va in conflitto, per cui saltate la parte della cache e andate direttamente alla configurazione di OwnCloud subito sotto
sudo nano /etc/php/conf.d/apcu.ini
e inserendo solo
extension=apcu.so

Ora diamo una ulteriore sistemata alla configurazione di OwnCloud, attraverso
sudo nano /etc/webapps/owncloud/config/config.php
aggiungere l'ip lan e il NOIP del server sotto l'array in trusted domain
Citazione<?php
$CONFIG = array (
  array (
    0 => 'localhost',
    'IP_LAN',
    'SERVER_NOIP'
  ),
E questo in fondo, prima della chiusura dell'ultima parentesi
Citazione  'forcessl' => true,
  'openssl' => array(
        'config' => '/etc/ssl/openssl.cnf',
  ),


8. DDNS Noip.com
Indispensabile se volete accedere dall'esterno
Andiamo su Noip e registriamoci
Aggiungi host e inseriamo i dati richiesti.
Il nome lo scegliete voi e scegliete anche il dominio dal menu a cascata.
Tipo DNS Host (A)
Il resto non serve (opzioni Plus, più che altro). Cliccate su "Add Host"

Ora installiamo noip sul server, che si trova su AUR (per questo abbiamo installato yaourt sulla macchina)
yaourt -S noip
Noip prende il vostro ip pubblico, dinamico, e lo gira a noip.com.
Configuriamolo
sudo noip2 -C -Y
e avviamolo come demone, abilitandolo all'autostart
sudo systemctl start noip2
sudo systemctl enable noip2

A questo punto configuriamo il port forwarding del router, in modo che qualunque connessione arrivi su porta 80 (http) e 443 (https) arrivi direttamente al server
Vi lascio ai manuali dei vostri modem per questo


Ok, a questo punto avete il vostro bel webserver accessibile sia da lan (via 192.168.X.Y) che dall'esterno (via miodomino.noip.me)
Ricordatevi solo che, essendo la connessione protetta dovete per forza indicare anche la directory "owncloud", nella barra degli indirizzi, per cui
192.168.X.Y/owncloud
miodomino.noip.me/owncloud
Pena l'errore

Ps dalla lan non riuscirete ad accedere al server noip, a meno di router più avanzati.
Provate da cell via dati se riuscite ad accedere o tramite un pc non in quella lan

Per errori, domande, chiarimenti scrivete pure
The End ... almeno mi pare
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula

#1 14 Dicembre 2015, 10:27:52 Ultima modifica: 14 Dicembre 2015, 13:30:36 di Darko
Al prossimo giro posto
- creare un DDNS con noip.com in modo da potere entrare anche da fuori LAN
- obbligare una connessione sicura via https
- aprire un tunnel SSH per gestire al meglio il server da qualunque pc in LAN
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula

figuo, figuo :ueue:

Aspetto i nuovi post :ueue:
Il bere trionfa sempre sul male

Potresti anche farti un blog, magari guadagni qualcosa con la pubblicità, visto che comunque le guide le scrivi.

Citazione di: Cire il 14 Dicembre 2015, 10:58:50
Potresti anche farti un blog, magari guadagni qualcosa con la pubblicità, visto che comunque le guide le scrivi.

Mi scoccia. Le scrivo quando mi servono, ma con un blog dovrei starci dietro ;D

Citazione di: madnessmike il 14 Dicembre 2015, 10:40:18
figuo, figuo :ueue:

Aspetto i nuovi post :ueue:

Integro tutto su. sono passaggi semplici, ma essenziali, imho, per la sicurezza (https) e per la comodità (ssh e DDNS)

Ps. in lan è un missile, nonostante l'eeepc sia quello che è, ma, ovviamente, via web è una tragedia, causa upload ridicola di Telecom (480K fisso).
A breve provo la 20Mb e allora potrebbe valerne davvero la pena.
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula

#5 14 Dicembre 2015, 11:17:28 Ultima modifica: 14 Dicembre 2015, 11:22:35 di Cire
Citazione di: Darko il 14 Dicembre 2015, 11:10:08
Citazione di: Cire il 14 Dicembre 2015, 10:58:50
Potresti anche farti un blog, magari guadagni qualcosa con la pubblicità, visto che comunque le guide le scrivi.

Mi scoccia. Le scrivo quando mi servono, ma con un blog dovrei starci dietro ;D

Potrei farti usare il mio, il problema è casomai dividere i guadagni, cioè potrei pagarti come collaboratore esterno ma il problema è che si parla di cifre ridicole per ora.

Nell'allegato i guadagni da febbraio.

Se conti 86K visite dal 9 luglio 2015 (5K visitatori unici) penso sia dura fare soldi decenti.

Ma dai!
1 non sono guide che non si trovano in giro
2 sono CC. usale e fine ;)
Se un giorno ti dovessi fare i soldi, mandami un assegno.
O una birra :ueue:
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula

Comprata con amazon e spedita come regalo :ueue:
Il bere trionfa sempre sul male

Citazione di: madnessmike il 14 Dicembre 2015, 11:29:58
Comprata con amazon e spedita come regalo :ueue:
A darko piace la birra come regalo :ueue:
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula

Aggiunto ssh
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula

Citazione di: Darko il 14 Dicembre 2015, 11:26:04
Ma dai!
1 non sono guide che non si trovano in giro
2 sono CC. usale e fine ;)
Se un giorno ti dovessi fare i soldi, mandami un assegno.
O una birra :ueue:
Mannò, mi dispiace rubarti il lavoro.

Se faccio i soldi faccio come Aranzulla, pago la gente per scrivere e non faccio un cazzo tutto il giorno  :asd:

un commento: systemctl start fa partire il demone solo per quella run, o sbaglio? non dovresti usare enable?
スニャブロ ufficiale del forum
pulsantoni pulsantosi per greasemonkey: http://bubs.altervista.org/index.php?topic=4.msg183#msg183
script greasemonkey anti-ads: http://bubs.altervista.org/index.php?topic=6.msg2581#msg2581

I miei vaneggi pseudodisegnosi: http://sgnafp.deviantart.com/

"Speed never killed anyone, suddenly becoming stationary, that's what gets you."

E anche SSL

@sgnablo corretto, lo avvio definitivamente successivamente.
In quel momento mi serve spari errori ;)
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula

Citazione di: madnessmike il 14 Dicembre 2015, 11:29:58
Comprata con amazon e spedita come regalo :ueue:

No, spé. @madnessmike sul serio? :rp:
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula

No, dicevo a @Cire come pagarti riguardo alla spartizione degli utili :asd:
Il bere trionfa sempre sul male

Forza @Cire, aspetto birra :lki:

Finito tutto.
Ci sarebbero altre piccole cosine, ma magari ne parliamo quando escono fuori (tipo accesso diretto via filemanager, invece che dal client)
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula


Ma anche no, tranquillo :rp:
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula


:asd:

Piuttosto qualcuno provi per vedere se ci sono errori :ysy:
Ritengo di avere diritto alle royalties sull'acronimo BUBS :lki:
Sono scemo di mio :verovero: Tutto a posto | I don't have a problem with caffeine. I have a problem without caffeine.
Se i nostri cervelli fossero abbastanza semplici da poter essere capiti, allora saremmo così semplici che non capiremmo - Ian Stewart
Fotografia ad mentula