Actually its 1 IP-adress, but 2G1C jokes never get old!
Issue: I, as most others, only have one public IP. I also got plans for several services I need to be able to connect to from outside my home and network. As mentioned in former posts, I’ll be running multiple virtual machines.
Solution: Reverse proxy. Yep, that is a expression I learned about a couple days ago.
After some intense googling (there seems to be absolutely no complete guides for this, unless you know exactly what to look for), I got it working. I used an old Raspberry Pi 2 Model B I had lying around. Its only purpose in life is pretending to be a real server…
Step 1 – Install Linux
Since I’m using a Raspberry Pi I installed raspbian, because its Debian based and I like Debian.
Step 2 – Install updates and Apache web server
Step 3 – Enable proxy and configuration
This will enable the proxy-module. Next up is configuring the config file.
Instead of going straight to installing Linux on a server I want to do some test runs, just to see if everything actually works. I am not experienced enough to make any real security checks, but will try some guides I have found online for securing the server. On a virtual server I can mess up as much as I want, and just recover from an earlier snapshot if I want to revert back to where it worked.
As mentioned earlier I am going to set up a Linux server for running different services, like the ownCloud “getting rid of Dropbox” experiment and other things. I have some experience using Linux, but usually end up doing stupid stuff that I cant find my way out of. This time however I plan to be a bit more systematic about it, and documenting the changes I make to make troubleshooting a bit easier.
Choosing between the multitude of Linux flavours can be hard, as it is a few to choose between. I have tried a few different ones, and for me the biggest differences lies in the GUI (which I wont use) and how stuff is installed.
The server of choice will be Debian. No particular reason really, but I like the package manager APT. I also really dont like Ubuntu, as I felt it was full of bloatware last I tried it. So a command line, only whats needed, Debian server is what I trust to take care of my web server.
Choosing the web server
Up until just a few days ago I thought apache/php/mysql was the way to go when you wanted to host a web server. After googling around for read-ups on security settings and other information around web servers I discovered NGINX. Its supposedly a lot faster than apache, and more future proof. All the facts and numbers they present to me had me convinced that this was the place to go. The ownCloud installation manual recommended apache, but in the same breath they write about requirements for up to 150 users. My installation will have 2 users, so I dont think I will notice much of a speed difference. Actually it would probably not matter at all if I went apache or NGINX for any of my applications, but sometimes I just have to do what I have to do.
I will also need to run a ruby on rails server. I am hoping this is as easy as it looks in the different installation manuals I have checked. I may have to read up on developing with ruby. There is a great resource for this here, but I have yet to find the time to dive into that.
Other than that I will most likely follow the install instructions for the services I want.
The web services
Here is the initial list of services, or web sites, I want installed on the server
ownCloud – This is for a local run Dropbox variant. All files will also sync to an offsite server for extra safety
Piwigo – This is the photo library of choice. It works fairly well, got lots of add-ons and is open source. All photos will be synced to an offsite server.
Thingspeak/data.sparkfun – This is for the data logging once I get the ESP8266 projects up and running. As of yet I have no preffered choice between the two, so both will be installed and tested. Also I dont think there is anything stopping me from logging data to both services simultaneous.
The Linux server will be running on an old computer I got lying around. I was actually looking into buying an old real server, rack mounted with dual xeon processors and hot swap disks and what not. What I realised though was that those rack servers are about 70cm in depth, and my rack cabinet is about 45cm. Simple math then proves that this might not be as feasible as I first hoped. Until I can find a spot for a full size rack cabinet, and a spot to put it, I am stuck with my old desktop computers.
Full specs of the server:
Core 2 Duo E8200 2.66GHz
120GB SSD + 2x1TB HDD
Single Gb ethernet
Definitely not a powerhouse of a server, but with 2 users I do believe it is more than enough to host a webserver. The harddisk space will be upgraded as needed.
So thats it for the server. Next up will be installing the software on a virtual machine, testing and documenting all the way. Hopefully I will be a little bit wiser about Linux when this is all done.