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/