====== 1st little steps ======
This is a beginners step-by-step guide on how can you enhance your **DNS-323** box with **fun_plug** tweaking.
----
This guide supposes you use Unix/Linux desktop (altough, with very small effort it is usable for windows users as well, if using putty ssh/telnet application) with IP address **10.10.10.150**.
It is assumed that your NAS device is plugged into home network **10.10.10.0/24**, having DHCP server turned on.
It is assumed that your NAS device has gotten the **10.10.10.1** IP address from DHCP server (later this address will be changed to **10.10.10.123**, or whatever by your choice).
----
Don't forget to substitute all IP addresses and passwords mentioned below to your environment.
===== Step 0.(optional) Clean from previous fun_plug =====
* Attach shared root folder, and delete files **ffp.log**, **fun_plug** and folder **ffp**.
* Alternatively you can telnet or ssh to nas, if you can.
# cd /mnt/HD_a2
# rm -r ffp
# rm ffp.log
# rm fun_plug
# reboot
===== Step 1. HW reset =====
* Turn the device on and wait for leds constantly glowing. Then push thin wire to reset hole, hold for at least 10s, and release the wire.
* Wait for leds constantly glowing again.
* Check what IP address is assigned to DNS-323 (read it from your DHCP server, or try ping through DHCP range).
* Put the DHCP assigned IP address into browser (assumed http://10.10.10.1)
===== Step 2. The very first init =====
* Login (user:'admin', pwd:'')
* Menu **Setup/Wizard/**, [//Run Wizard//]
* [//Next//]
* Enter admin password: 'adminpwd', [//Next//]
* Enter timezone +1, [//Next//]
* Switch to Static IP and fill with '10.10.10.123' address, [//Next//]
* Name 'joesnas', [//Next//]
* [//Completed//]
* Wait 1-2 minutes, until browser reloads with new IP address to login window.
* Make sure there is at least one drive in the NAS and it has been formatted.
===== Step 3. Prepare Ftp server for FunPlug =====
* Login to browser page \\ http://10.10.10.123, user:'admin', password:'adminpwd'
* Menu **Advanced/UserGroups**: \\ User Name: 'joe' \\ password: 'joepwd' \\ [//Add//]
* Menu **Advanced/FTP Server**: \\ User: 'joe' \\ Folder: 'Root' checked \\ Permission: 'R/W Read/Write' \\ [//Add//],
* Client language: (choose what best fits to your country; in doubts use Unicode), \\ [//Apply//]
* [//Start FTP Server//]
===== Step 4. Install FunPlug with Telnet enabled =====
See details at http://wiki.dns323.info/howto:fun_plug (chapter Transfer using FTP)
* In your linux desktop, make folder fp and cd to fp
$ mkdir fp; cd fp
* Download http://www.inreto.de/dns323/fun-plug/0.5/fun_plug, http://www.inreto.de/dns323/fun-plug/0.5/fun_plug.tgz
$ wget http://www.inreto.de/dns323/fun-plug/0.5/fun_plug ; chmod 777 fun_plug
$ wget http://www.inreto.de/dns323/fun-plug/0.5/fun_plug.tgz ; chmod 777 fun_plug.tgz
* In fp folder, use FTP and put files into root folder
$ ftp 10.10.10.123
Name (10.10.10.123): joe
331 User joe OK. Password required
Password: joepwd
ftp> cd Volume_1
ftp> bin
ftp> mput fun*
mput fun_plug? y
mput fun_plug.tgz? y
ftp> chmod 777 fun_plug
ftp> bye
* Login to browser page \\ http://10.10.10.123, user:'admin', password:'adminpwd'
* Menu **Tools/System**, button [//Restart//]
* Wait about 1-2 minutes after leds are constantly glowing again (time taken by fun_plug first installing)
===== Step 5. Enable SSH, disable Telnet =====
See details at http://nas-tweaks.net/CH3SNAS:Tutorials/fun_plug
* Telnet to 10.10.10.123
* Prepare root login
/ # pwconv
/ # passwd (enter 'adminpwd' as mentioned before)
/ # usermod -s /ffp/bin/sh root
/ # store-passwd.sh
* Activate ssh
/ # chmod a+x /ffp/start/sshd.sh
/ # sh /ffp/start/sshd.sh start
* Use ssh to connect from your machine (Linux assumed, but putty is possible also for Windows)
$ ssh -l root 10.10.10.123
root@10.10.10.123's password: 'adminpwd'
root@joes_nas:~#
* Deactivate telnet
root@joes_nas:~# /ffp/start/telnetd.sh stop
root@joes_nas:~# chmod -x /ffp/start/telnetd.sh
===== Step 6. Install repository for local use =====
See at http://nas-tweaks.net/CH3SNAS:Tutorials/ffp-packages
See at http://ffp.wolf-u.li/additional/
**It appears that inreto.de is no longer accepting connections via rsync.** The following commands are no longer working. If they do not work for you, you can download the packages by some other means (such as wget).
$ ssh -l root 10.10.10.123
cd /ffp/
mkdir pkg ; cd pkg ; rsync -av --delete inreto.de::dns323/fun-plug/0.5/packages .
rsync -av --delete wolf-u.li::ffp/additional .
rsync -av --delete inreto.de::dns323/fun-plug/0.5/extra-packages .
Note, if you are using the 0.7 version the command is:
rsync -av --delete inreto.de::dns323/fun-plug/0.7/XXXXXXXXXXXXXX/packages/
Were XXXXXXXXXXXXXX is the architecture of your NAS
===== Step 7. Install MidnightCommander =====
# funpkg -i /mnt/HD_a2/ffp/pkg/additional/app-misc/mc-*.tgz
===== Step 8. Install NTP Time synchronisation =====
See a complete Tutorial at http://nas-tweaks.net/CH3SNAS:Tutorials/ntp
See at http://wiki.dns323.info/howto:ffp (chapter NTP Network Time Protocol)
# cd /ffp/etc
# cp examples/ntp.conf .
# chmod a+x /ffp/start/ntpd.sh
# sh /ffp/start/ntpd.sh start
# ntpq -p
== Fix: HDD stand by issue ==
It is recommended to change drift file path in ///ffp/start/ntpd.sh// file to ///tmp/ntp.drift//. Otherwise drive won't go to stand by anymore.
@yozik04
== Issue with DNS-313 ==
[[http://forum.dsmg600.info/viewtopic.php?id=6157|ntpd seems incompatible with (some versions of?) DNS-313]]
===== Step 9. Install Lighttpd web server =====
See a complete Tutorial at http://nas-tweaks.net/CH3SNAS:Tutorials/lighttpd
See at http://wiki.dns323.info/howto:lighttpd_php (chapter Easy Ways )\\ See at http://wiki.dns323.info/howto:ffp (chapter Lighttpd Web Server)
* Prepare www store
# cd /mnt/HD_a2
# mkdir -p www/logs www/pages
# echo " " > /mnt/HD_a2/www/pages/index.html
# echo " Lighttpd is OK and running " >> /mnt/HD_a2/www/pages/index.html
* Prepare server
# cd /ffp/etc
# cp examples/lighttpd.conf /ffp/etc/lighttpd.conf
# chmod a+x /ffp/start/lighttpd.sh
* Change the user and group the daemon will run as (optional, more secure)
# groupadd www-data
# useradd -g www-data www-data
# sed -i s/#server.username.*/'server.username = "www-data"'/ /ffp/etc/lighttpd.conf
# sed -i s/#server.groupname.*/'server.groupname = "www-data"'/ /ffp/etc/lighttpd.conf
# chown root:www-data /mnt/HD_a2/www/logs/
# chmod 774 /mnt/HD_a2/www/logs/
* Start webserver
# sh /ffp/start/lighttpd.sh start
* Test webserver \\ Navigate browser to http://10.10.10.123:8080 and read the page
===== Step 10. Add PHP packages into to Lighttpd =====
See a complete Tutorial at http://nas-tweaks.net/CH3SNAS:Tutorials/php
See at http://forum.dsmg600.info/viewtopic.php?id=3466
* Install PHP (**fun_plug** 0.5)
# funpkg -i /ffp/pkg/additional/dev-lang/php-*.tgz
# funpkg -i /ffp/pkg/additional/net-misc/curl-*.tgz
* Install PHP (**fun_plug** 0.7)
# funpkg -i /ffp/pkg/packages/php-*.txz
# funpkg -i /ffp/pkg/packages/curl-*.txz
* Prepare webserver for PHP (**fun_plug** 0.5 and **fun_plug** 0.7)
# cp /ffp/etc/examples/lighttpd.conf-with-php /ffp/etc/lighttpd.conf
# sed -i s/#server.username.*/'server.username = "www-data"'/ /ffp/etc/lighttpd.conf
# sed -i s/#server.groupname.*/'server.groupname = "www-data"'/ /ffp/etc/lighttpd.conf
* Copy the php.ini file (**fun_plug** 0.5)
# cp /ffp/etc/examples/php.ini-dist /ffp/etc/php.ini
* Copy the php.ini file (**fun_plug** 0.7)
# cp /ffp/etc/examples/php.ini-production /ffp/etc/php.ini
* Build a test PHP page and restart lighttpd. (**fun_plug** 0.5 and **fun_plug** 0.7)
# echo "" > /mnt/HD_a2/www/pages/a.php
# sh /ffp/start/lighttpd.sh restart
* Test PHP in webserver \\ Navigate browser to http://10.10.10.123:8080/a.php and read the page
===== Step 11. Add MySQL packages into to Lighttpd =====
See a complete Tutorial at http://nas-tweaks.net/CH3SNAS:Tutorials/Mysql
See at http://forum.dsmg600.info/viewtopic.php?id=3466
* Install MySql (**fun_plug** 0.5)
# cd /mnt/HD_a2/ffp/pkg
# wget http://81.216.140.39/dns-323/mysql_and_php/mysql-5.1.28-rc-1.tgz
# funpkg -i mysql-5.1.28-rc-1.tgz
* Install MySql (**fun_plug** 0.7)
# funpkg -i /ffp/pkg/packages/mysql-*.txz
* Prepare PHP for MySQL
# echo extension=mysql.so >> /ffp/etc/php.ini
# echo extension=pdo.so >> /ffp/etc/php.ini
# echo extension=pdo_mysql.so >> /ffp/etc/php.ini
# vi /ffp/etc/php.ini
Comment extension dir line. This line is under the //Paths and Directories// heading, which is 42% of the way through the file.
;extension_dir = "./"
Below it, add a new extension directory path. (**fun_plug** 0.5)
extension_dir = "/ffp/lib/php/extensions/no-debug-non-zts-20060613/"
Below it, add a new extension directory path. (**fun_plug** 0.7)
extension_dir = "/ffp/lib/php/extensions/no-debug-non-zts-20090626/"
* Copy the my.cnf template. (**fun_plug** 0.5)
# cp /ffp/etc/examples/my.cnf /ffp/etc/.
* Copy the my.cnf template. (**fun_plug** 0.7)
# cp /ffp/etc/examples/mysql/my-small.cnf /ffp/etc/my.cnf
* Edit the my.cnf template. Here is how it looks before editing. (**fun_plug** 0.7)
# The MySQL server
[mysqld]
port = 3306
socket = /ffp/var/run/mysql/mysql.sock
skip-locking
key_buffer_size = 16K
* This is what it should look like after editing. A //datadir// row has been added, and //skip-locking// has been changed to //skip-external-locking//. (**fun_plug** 0.7)
# The MySQL server
[mysqld]
port = 3306
socket = /ffp/var/run/mysql/mysql.sock
datadir = /ffp/var/lib/mysql
skip-external-locking
key_buffer_size = 16K
Create space for logs, then initialize the data directory. (**fun_plug** 0.7)
# mkdir -p /srv/mysql
# mysql_install_db --datadir=/ffp/var/lib/mysql
Prepare MySQL. Be careful, initial password setting is possible only at the first time
# sh /ffp/start/mysqld.sh start
# mysql_secure_installation
* Test MySQL local connection
# /ffp/bin/mysql -uroot -p
mysql> show databases;
mysql> use mysql;
mysql> show tables;
mysql> select host, user, password from user;
* Test MySQL presence in lighttpd server
# sh /ffp/start/lighttpd.sh restart
Navigate browser to http://10.10.10.123:8080/a.php and see mysql section at the page
===== Step 12. Allow remote connection to MySql =====
See http://nas-tweaks.net/96/installation-and-configuration-of-mysql-on-fonz-fun_plug/#Allowing_external_access \\
See http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html \\ See http://forums.mysql.com/read.php?108,62926,199511
* Allow user 'root' to connect remotely, for instance to administrate MySQL with graphical tools (SQLYog mysqladmin)
# /ffp/bin/mysql -uroot -p
mysql> GRANT ALL ON *.* TO root@'10.10.10.150'IDENTIFIED BY 'put-your-root-password-here' ;
mysql> FLUSH PRIVILEGES;
* Add new user with strictly defined rights
# /ffp/bin/mysql -uroot -p
mysql> INSERT INTO mysql.user
( HOST, USER, PASSWORD, select_priv, insert_priv, update_priv, delete_priv, create_priv, drop_priv, reload_priv, shutdown_priv, process_priv, file_priv, grant_priv, references_priv, index_priv, alter_priv, show_db_priv, super_priv, create_tmp_table_priv, lock_tables_priv, execute_priv, repl_slave_priv, repl_client_priv, create_view_priv, show_view_priv, create_routine_priv, alter_routine_priv, create_user_priv, event_priv, trigger_priv )
VALUES
( '%', 'john', PASSWORD('johnpwd'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y' );
mysql> FLUSH PRIVILEGES;
Command allows user 'John' to login with password 'johnpwd' from any IP ('%'), and do defined activities (e.g. all, in this case). \\ \\ This command is just an example, DO NOT USE IT IN PRODUCTION ENVIRONMENT - IT IS TOO VULNERABLE !!! First, let 'Y' only with parameters you really need. \\ \\ Or better, forget about it, and connect DB with SqlYog software, where is better command understanding in its GUI.