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. ApacheInstalliamolo
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. MySQLIn 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. PHPPer 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. OwnCloudUna 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 varieAbilitiamo 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.comIndispensabile 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
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
figuo, figuo :ueue:
Aspetto i nuovi post :ueue:
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.
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:
Comprata con amazon e spedita come regalo :ueue:
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:
Aggiunto ssh
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?
E anche SSL
@sgnablo corretto, lo avvio definitivamente successivamente.
In quel momento mi serve spari errori ;)
Citazione di: madnessmike il 14 Dicembre 2015, 11:29:58
Comprata con amazon e spedita come regalo :ueue:
No, spé.
@madnessmike sul serio? :rp:
No, dicevo a
@Cire come pagarti riguardo alla spartizione degli utili :asd:
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)
http://www.amazon.it/Kwak-KWAK/dp/B003WGCTZ8/ref=sr_1_1?ie=UTF8&qid=1450100856&sr=8-1&keywords=kwak
Va bene?
Ma anche no, tranquillo :rp:
Eh osti, proprio lavorare a gratis :@@@:
:asd:
Piuttosto qualcuno provi per vedere se ci sono errori :ysy:
Quando ho tempo comunque te lo rubo :-*
In poche parole hai fatto quello che cercavo di fare qualche anno fà , circa 8 per la precisione . Dunque dando il link a chiunque si voglia avrebbe accesso giusto ? Poi per il dominio come si fà a procurarlo magari gratis e a reindirizzare il traffico al web server ?
Ti ringrazio anchio del tuo lavoro per scrivere il topic . La birra solo virtuale purtroppo . :beer:
Ultima domanda , io arck non sò usarlo nel caso che abbia il tempo la mente libera e non fossi costretto a letto , ti faccio una domanda è sempre connesso come ubuntu e altri S.O. ad internet ha bisogno di bloccare le connessioni dei programmi o è come kali che se non ricordo male non ha demoni in ascolto e quindi si connette solo quando lo si devide . Amazon e altre piccole rotture è disabilitato o bisogna anche in arck cercare e bloccarlo come i documenti recenti cochie la registrazione dei log del terminale e della tastiera ecc . Sono molte domande e capirò se non vuoi rispondere . Veramente ne avrei all infinito visto i ultimi anni di informazioni caos dei vari forum e utenti S.O. D.E. ecc . . Ma per adesso potrei accontentarmi .
Se tu sei l'amministratore devia nche creare un utente, se vuoi che anche quella persona usi lo spazio.
Ma se vuoi condividere un file o una cartella puoi farlo con chiunque ;D
Per il dominio
Leggi la parte di noip
Ti da un dominio gratuito, ma da rinnovare ogni 30 giorni.
Per ora è ok. Se trovo altro lo aggiungo ;)
Citazione di: Darko il 14 Dicembre 2015, 23:52:33
Se tu sei l'amministratore devia nche creare un utente, se vuoi che anche quella persona usi lo spazio.
Ma se vuoi condividere un file o una cartella puoi farlo con chiunque ;D
Per il dominio
Leggi la parte di noip
Ti da un dominio gratuito, ma da rinnovare ogni 30 giorni.
Per ora è ok. Se trovo altro lo aggiungo ;)
Ti ringrazio nuovamente , ho aggiunto un po di altre domande ma nel caso tu possa abbia voglia potresti rispondere anche più avanti .
Ma figurati, fino a quando non crollo per il sonno rispondo ;D
Arch la configuri come vuoi.
Se installi la base hai solo l'essenziale.
Quindi niente che non sia realmente necessari al sistema per fare le sue cose.
Poi con apache apri la porta 80 per http, ma nella guida ho scritto come forzare https, quindi più sicuro.
SSH ascolta sulla porta 22, ma si può cambiare molto facilmente con una più alta e meno facilmente rintracciabile.
In ogni caso caso ho settato SSH con il socket e non con il demone, quindi si apre se e solo se arriva una connessione valida.
Qualche piccola accortezza per renderla un po' più sicura.
Poi, considera anche che io non sono un genio del pc, per cui amagari qualche buco resta.
Ho cercato di mettere insieme varie guide proprio per ridurre il rischio al minimo, ma azzerarlo è praticamente impossibile
Anche per il dominio volendo ci sono le offerte di domini che escono ciclicamente a 0.99€/anno, quindi volendo si potrebbe considerare anche un dominio "ufficiale", che poi volendo può essere usato anche per altre cose se servisse.
http://www.register.it/
Hanno .it e .com in offerta a 0.99€, per gli altri anni dovrebbero essere 12€ ivati all'anno, quindi non una grande spesa (basta dominio+gestione dns, più che altro è gestire l'IP dinamico il problema, ma credo sia spiegato anche questo sulla guida di
@Darko
Ci sarebbero anche i domini .tk, completamente gratuiti
http://www.dot.tk/it/index.html
Interessante. Non lo sapevo.
Server di stampa impostato :tnz:
Ormai credo di avere sistemato tutto :ueue:
Volendo se usano pc Windows mancherebbe il server aggiornamenti, ma non so se riesci a farlo con linux. Nel senso che potrebbe essere il NAS che scarica gli aggiornamenti e li manda ai computer per risparmiare banda, ma con 2 pc cambia poco.
No, guarda, su windows meno ci metto mani e meglio è.
Farei solo casino.
:lkof:
Citazione di: Cire il 14 Dicembre 2015, 14:47:50
http://www.amazon.it/Kwak-KWAK/dp/B003WGCTZ8/ref=sr_1_1?ie=UTF8&qid=1450100856&sr=8-1&keywords=kwak
Va bene?
Ammazza quanto costa, qua dallo spaccino in angolo costa tipo 8€.
Ha pure il serve torrent integrato :la::la::la::la::la::la:
Citazione di: Buntolo il 13 Gennaio 2016, 23:03:08
Citazione di: Cire il 14 Dicembre 2015, 14:47:50
http://www.amazon.it/Kwak-KWAK/dp/B003WGCTZ8/ref=sr_1_1?ie=UTF8&qid=1450100856&sr=8-1&keywords=kwak
Va bene?
Ammazza quanto costa, qua dallo spaccino in angolo costa tipo 8€.
1€ in più.
Dal mio fornitore di fiducia non ho idea.
@Darko usi ancora noip?
Come ti trovi? Io sto usando dyndns.it
io uso duckdns al momento, noip mi ha rotto le balle.
@sgnablo pubblicità, down, o altro?
Duckdns è free? Ha dei limiti?
assolutamente free, è gestito da due tizi. non mi ricordo se abbia dei limiti.. https://www.duckdns.org/
la grafica del sito è MOLTO spartana, ma fa quello che dichiarano. conta che usano AWS per i server.
La paperella! XD
La presentazione mi piace! Il merito è al 99% della paperella, e poi delle istruzioni che arrivano subito al dunque.
Il servizio che sto utilizzando ora ha bisogno di una conferma mensile, che è diversa dalla richiesta di aggiornare l'IP, e non è documentata per inserirla in uno script.
La paperella mi ispira fiducia e sicurezza, perché nei momenti di crisi hai comunque una paperella da mettere sotto i denti :lkib:
P.S.
+1 karmo per la paperella :asd:
duckdns è il servizio free migliore ad oggi.
Citazione di: TonyWhite il 27 Agosto 2019, 15:49:12
La paperella! XD
La presentazione mi piace! Il merito è al 99% della paperella, e poi delle istruzioni che arrivano subito al dunque.
Il servizio che sto utilizzando ora ha bisogno di una conferma mensile, che è diversa dalla richiesta di aggiornare l'IP, e non è documentata per inserirla in uno script.
La paperella mi ispira fiducia e sicurezza, perché nei momenti di crisi hai comunque una paperella da mettere sotto i denti :lkib:
P.S.
+1 karmo per la paperella :asd:
secondo te, perchè ho mollato noip? :asd:
tra l'altro spiegavano perfettamente come configurare il nas synology che ho per aggiornare l'ip, ci ho messo 2 minuti a fare tutto
Immagino!
Ho scritto uno script per aggiornare l'IP solo quando cambia realmente.
Tutte le operazioni sono state pensate per avere il minimo impatto sulla rete e sull'hard disk.
Lo script può essere chiamato da cron ogni minuto.
Il nome che consiglio è "quack" :asd:
Ovviamente dovete mettere i vostri valori di token e dominio.
#!/bin/bash
TOKEN="miotoken"
DOMAIN="miodominio"
# I'm online?
wget -q --spider "http://google.com"
if [ $? -eq 0 ]; then
# I'm online. Check if IP was changed.
CURRENT_IP=`curl "http://icanhazip.com/"`
LAST_IP=`cat "/tmp/last_ip"`
if [ $CURRENT_IP -eq $LAST_IP ]; then
# IP was changed.
# Update IP in RAM
echo ${CURRENT_IP} > "/tmp/last_ip"
# Send new IP at the best DDNS Server
echo url="https://www.duckdns.org/update?domains=${DOMAIN}&token=${TOKEN}&ip=${CURRENT_IP}" | curl -k -o "/dev/null" -K -
fi
fi