GOPHERSPACE.DE - P H O X Y
gophering on circumlunar.space
+-----------------------------------------+
| Server: Part 1                          |
+-----------------------------------------+-------+
|                                                 |  
| Date: 20181124-13:15                            |  
| Author: Sloum                                   |   
| Soundtrack: Black Metalic by Catherine Wheel    | 
|                                                 |   
+-------------------------------------------------+-------------------------+

As mentioned earlier, I am trying to set up a small ssh/gopher/code portal.
I have decided to document the setup process here. I am setting this up with
a Raspberry Pi Zero W. Here is what has been done so far:


Step 1: Get the Pi up and running
----------------------------------
This step is pretty basic. Inserted the SD card into a computer/laptop and 
use Etcher[0] to flash Rasbian Lite onto the SD card. Then unmounted the card
and put it into the Pi. After that plug the Pi into a monitor and keyboard (I
used a terrible cheap keybaord my wife had meant to throw away). Boot up and
log into the Pi. Default user is "pi" and default password is "raspberry". 

At this point I recommend changing the password for the "pi" user. I did this 
via the "passwd" command, but it can also be done with "raspi-config", which 
will be used for other things in the next step anyway.


Step 2: Configure WIFI & SSH
----------------------------------
In "raspi-config" changed the hostname to what you want it to be. Then update
the time zone and locale. I am running wireless (via WIFI) rather than using
ethernet. Getting the WIFI on the Pi to work was a really big pain. It tookctr
quite a lot of time to get going. First you will want to set the WIFI country
in the "raspi-config" tool. While in the tool activate SSH.

While it is possible that your Pi may just work on WIFI at this point, it
seems unlikely. Here are some things to try:

- Running "sudo iwlist wlan0 scan" will show you available WIFI networks.
- Edit "/etc/wpa_supplicant/wpa_supplicant.conf" as administrator as follows:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

# Use your country code
country=US

network={
# use quotes around the ssid & psk
# replace networkname with your access point name
# replace networkpassword with your access key
# key_mgmt gets set as what you use e.g. NONE or WPA-PSK
ssid="networkname"
psk="networkpassword"
key_mgmt=WPA-PSK
}

- Edit "/etc/network/interfaces" as administrator to be similar to:

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet static
#your local IP here
         address x.x.x.x 
#your netmask here
        netmask x.x.x.x 
# your gateway here
         gateway x.x.x.x 
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

- Run "sudo systemctl disable dhpcd && sudo systemctl enable networking"

- Backup sshd_config file: 
"sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults"

- Edit sshd config as desired (lots of settings options available)
I sandbox all users except root to force chrooted SFTP access

- Update the "/etc/skel" directory so that new users get set up the same way

- Log into ssh locally: "ssh username@host.local"
This will use passwords unless you already set up using
authorized keys during the sshd_config editing phase.

I set mine up to use authorized keys and organized a file
structure for storing those keys based on username as part
of my sshd_config.

-------------------------------------------------------------------

That is basically where I am at. I, of course, also updated and upgraded
via apt. Installed vim, updated vimrc, updated bash_aliases, etc.

I am looking into gopher server software options. It seems like gophernicus
is likely the best call, but it would be fun to support a less mature
project if I can find something that will work well.

I am going to start coding a custom shell in Python soon and will likely
document that process in the coming updates.

I am still thinking about doing version control hosting as well. I am 
trying to decide between Bazaar[1] and Git. Bazaar has some cool stuff 
going for it... meh. I'll keep thinking on it while I get gopher set up 
on the pi.

Lastly, I need to get dynamic DNS set up. I got a static IP assigned by
my router and port forwarding set up for SSH and Gopher. Do any of you
have advice for dynamic DNS providers, gopher server software/daemon,
custom shell styles, etc? Feel free to respond via your gopher or email
me: sloum@sdf.org

I hope those of you that celebrate it had a lovely thanksgiving! I had 
a great time with family and have been enjoying the long weekend. 



[0] https://www.balena.io/etcher/
[1] https://bazaar.canonical.com/en/