I have a lot of laptops and desktops that I want to be able program from, and I have found using a repository like Github to be super frustrating. I have a couple of desktops that sit unused at my house that I could install Linux on to make as the development environment, but I have no idea how to make them accessible to the internet, so I can remote into them from anywhere.
Once you have an SSH server installed, you will need to first disable password-based authentication (this is very important—even if you think you have a strong password, there are bots all over the internet just waiting for the chance).<p>Then set up port forwarding on your router. To do this, go to your router settings and:<p>1. Set up a DHCP reservation for the server. This should be easy enough, but depending on your router you might have to look up the server's MAC address and set it manually.<p>2. Set up a port forwarding connection from the router settings. The internal IP should be the one you just reserved, port 22, and the external port should be pretty much anything but 22; I recommend choosing a random number from 10000 to 65535.<p>3. Now you can use it anywhere! Look up your public IP (<a href="https://duckduckgo.com/?q=what+is+my+ip&ia=answer" rel="nofollow">https://duckduckgo.com/?q=what+is+my+ip&ia=answer</a>) from your home network, and SSH into it like this:<p><pre><code> ssh <username>@<public ip> -p <external port>
</code></pre>
Last thing you need to do is set up the server with whatever stuff you want—gitlab or gogs for a github replacement, or anything really.<p>You can then access port 80 of the server securely with<p><pre><code> ssh <username>@<public ip> -p <external port> -L <some port>:localhost:80
</code></pre>
and go to localhost:<some port>/ in your browser while that session is open. Don't forward port 80 to another external port on your router because it will all go over the internet (not just your home network) in plain text.