Imagine you have just set up your own remote service at home. Maybe it is a web server, maybe it is just a SSH server, or maybe is your own private cloud with NextCloudPi.
First, you have to forward any ports you are intested in accessing from outside in your modem-router.
The next step is to access it from outside. Your ISP most likely will change your public IP every now and then, and also accessing by IP is harder because you have to remember it.
The solution to this is to use a dynamic DNS provider. There are a number of them out there, like duckDNS or DynDNS. I personally use no-ip.org.
Installation
Note that the Raspberry Pi requires internet access during the process in order to register with no-ip.org.
First, clone the repo
1 |
git clone https://github.com/nachoparker/nextcloud-raspbian-generator.git |
Online installation through SSH
Use the generic software installer with the script no-ip.sh
1 |
./installer.sh no-ip.sh 192.168.0.130 |
Adjust to the IP address of your Raspberry Pi.
If you do not want to be asked for the username and password, and you changed the default password for user pi, you can specify username and/or password in the command line.
1 |
PIUSER=nacho PIPASS=ownyourbits ./installer.sh no-ip.sh 192.168.0.130 |
Offline installation
You can do this process offline using QEMU.
Extract the SD card and copy the image to your computer (adjust sdx).
1 |
sudo dd if=/dev/sdx of=my_rpi.img bs=4M |
Then,
1 |
./installer.sh no-ip.sh 192.168.0.145 my_rpi.img |
Once done, you can copy it back (adjust sdx).
1 |
sudo dd if=my_rpi.img if=/dev/sdx bs=4M |
Usage
You can verify that the noip2 daemon runs at boot
You can check the status of the noip2 daemon with
1 2 3 4 5 6 7 8 9 10 |
$ sudo noip2 -S 1 noip2 process active. Process 414, started as noip2, (version 2.1.9) Using configuration from /usr/local/etc/no-ip2.conf Last IP Address set 0.0.0.0 Account nacho@ownyourbits.com configured for: host mycloud.ownyourbits.com Updating every 30 minutes via /dev/eth0 with NAT enabled. |
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
#!/bin/bash # no-ip.org installation on Raspbian # Tested with 2017-01-11-raspbian-jessie.img (and lite) # # Copyleft 2017 by Ignacio Nunez Hernanz <nacho _a_t_ ownyourbits _d_o_t_ com> # GPL licensed (see end of file) * Use at your own risk! # # Usage: # cat no-ip.sh | ssh pi@$IP # # , or scp this file to a Raspberry Pi and run it from Raspbian # # ./no-ip.sh # # Notes: # Note that you need internet access for the installation to register with no-ip.org # set -xe sudo su USER_=my-noip-user@email.com PASS_=noip-pass TIME_=30 set -xe # INSTALLATION ########################################## mkdir /tmp/noip && cd /tmp/noip wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz tar vzxf noip-duc-linux.tar.gz cd noip-* sed -i "31s=^.*$=\t/usr/local/bin/noip2 -C -c /tmp/no-ip2.conf -U $TIME_ -u $USER_ -p $PASS_=" Makefile make make install cat > /etc/init.d/noip2 <<'EOF' #! /bin/sh # /etc/init.d/noip2 ### BEGIN INIT INFO # Provides: no-ip.org # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start no-ip.org dynamic DNS ### END INIT INFO EOF cat debian.noip2.sh >> /etc/init.d/noip2 chmod +x /etc/init.d/noip2 update-rc.d noip2 defaults cd rm -r /tmp/noip # CLEANUP ########################################## rm -f /home/pi/.bash_history systemctl disable ssh halt # License # # This script is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This script is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this script; if not, write to the # Free Software Foundation, Inc., 59 Temple Place, Suite 330, # Boston, MA 02111-1307 USA |
References
http://projpi.com/raspberry-pi-tips-and-hacks/raspberry-pi-2-on-dynamic-ip-and-noip/
Hello,
is there a easy way to change the Code or to bind easy the follow script ?
https://github.com/fschaefer/spdns-client.sh/blob/master/spdns-client.sh
Can i not only change the no-ip script with this ?
Where is the path of the no-ip script?
Im a noob. Please a easy way.
My problem is,that i don get a no-ip Account. I try it already 3 times. Maybe i am not from America. I dont know.
cYu
well, you would have to do it yourself.
setup a cron job or systemd timer that executes that script periodically
there’s plenty of resources online. Probably the easiest is to put that script in
/etc/cron.hourly
Hello,
i try 1 more time to register a free no-ip DNS. I only can choose between
.hopto.org
.zapto.org
.sytes.net
.ddns.net
Works this adresses also with no-ip ?
cYu
mmmm, when I did it it was
no-ip.org
, but I guess there would be no difference.Probably those work as well
Hello,
problems solved 🙂 The verify Mail was in the SPAM Folder. Now everything works fine. Thx for the great support.
Is there a forum ? Sometime i am confuesed to find my posts here.
cYu
I am glad.
Well, if people continue asking technical questions might have to consider getting one LOL.
It was not the idea, though. Some people do ask me questions in the nextcloud forums
Hello,
how often the script send my ip to no-ip? In the config i put in the TIME tab 5.
After 10min i check in noip.com my IP there, but there was the old one. What i make wrong?
cYu
Hello,
i get also this output. But after 5 minutes nothing changes in the IP field.
well, it seems to me that you are all set.
Nothing is going to change every 5 minutes, but whenever your internet provider decides to change your IP, maybe once a month, maybe once a week, maybe never… your raspberry pi will be there, checking every 5 mins if it changed and updating the DNS so you can always access through
mycloud.ddns.net
how do i add my no-ip ddns hostname to “trusted_domains”?
Right now it sets up trusted domains when you activate dnsmasq. It is true that it would also be nice if it did on setting up noip
I will include that