3.6 KiB

Initial Setup for the Orange Pi Zero

Downloading and burning the image

Download Debian testing:

Download and install Etcher:

Run it to install the OS on the micro SD card.

I edited /etc/ssh/sshd_config on the SD card uncommenting this line: #Port 22

#Logging in

Make sure you have a working Ethernet cable. (I didn't the first time.) Then login as root: root@IPADDRESS

The password as of this writing is 1234 and you MUST reset it upon logging in.

It will prompt you for your current password once and your new password two times.

Other Setup

There is no need to resize the partition when using Armbian.

Run: apt-get update && sudo apt-get upgrade to update the software on the Orange Pi and

apt-get install screen curl nano htop fail2ban rsync man git ca-certificates to install some basic system utilities.

128MB Swap was automatically configured.


No issues installing node or NPM using the install script.

npm install -g ursa and npm install -g sqlite ran without a hitch. Much auto-compiling.

I used npm list -g --depth=0 to confirm that the packages were successfully installed.

Duck DNS

I am following (and elaborating on) these instructions: I setup the Orange Pi as

You can run ran ps -ef | grep cr[o]n to check and see if cron is installed, it is installed by default in Raspbian.

You can run curl --version to make sure curl is installed.

Then run mkdir duckdns to create the duckdns folder, then you can run: cd duckdns to enter the folder. Then you need to create

Add this line into the file echo url="" | curl -k -o ~/duckdns/duck.log -K -

(You need to replace with your Duck DNS URL for your domain and the gibberish after token= with the token you can find in your Duck DNS interface:

I like more output showing that it was successful that just OK so I added &verbose=true right after ip= on that command above.

Then make the file executable using sudo chmod 700

Then we can setup cron to run the script every 5 minutes by running: crontab -e and adding this line to the bottom:

*/5 * * * * ~/duckdns/ >/dev/null 2>&1

Then save and exit.

Then test the script by running ./

You can then see if the attempt was successful by running: cat duck.log

Weird but not important stuff

Had to run sudo update-command-not-found to update command-not-found

Gitea setup

I setup Gitea using the following procedure:

Make a directory: mkdir gitea

Go into it: cd gitea

Download Gitea for ARMv7 boards: curl -O

Download the sha256sum: curl -O

Verify the binary: sha256sum -c gitea-1.4.0-linux-arm-7.sha256

It should come back with something like: gitea-1.4.0-linux-arm-7: OK

Assuming the verification works, mark the file as executable by running sudo chmod 700 gitea-1.4.0-linux-arm-7

Then run Gitea using: ./gitea-1.4.0-linux-arm-7 web

Then go to http://your-ip-address:3000/

I chose to use SQLite. Specify the options applicable to your setup, make sure you give your domain name and application address.

Go Setup

I followed these instructions:

I downloaded Go for armv6l.


Make swap larger, install Gitea, etc.