linux, networking, nextcloudpi

Dynamic DNS for Raspbian with no-ip.org installer

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

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

./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.

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).

 sudo dd if=/dev/sdx of=my_rpi.img bs=4M

Then,

./installer.sh no-ip.sh 192.168.0.145 my_rpi.img

Once done, you can copy it back (adjust sdx).

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

$ 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
#!/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/

https://tech.enekochan.com/en/2013/11/03/compile-install-configure-and-make-start-on-boot-the-noip-com-client-in-raspbian/

Author: nachoparker

Humbly sharing things that I find useful [ github dockerhub ]

14 Comments on “Dynamic DNS for Raspbian with no-ip.org installer

    1. 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`

  1. 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

      1. 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

        1. 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

  2. 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

    1. Hello,
      i get also this output. But after 5 minutes nothing changes in the IP field.

      $ 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 77.112.101.22
      Account myName
      configured for:
              host  mycloud.ddns.net
      Updating every 5 minutes via /dev/eth0 with NAT enabled.
      

      1. 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`

Leave a Reply to nachoparker Cancel reply

Your email address will not be published. Required fields are marked *