You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
5.6 KiB
Markdown
146 lines
5.6 KiB
Markdown
1 year ago
|
# Port Forwarding
|
||
|
|
||
|
###### guide-by-example
|
||
|
|
||
|
You want to selfhost stuff.<br>
|
||
|
You know little and want to start somewhere, FAST!
|
||
|
|
||
|
# Requirements
|
||
|
|
||
|
* A **spare PC** that will be the server.<br>
|
||
|
Can be **virtualmachine**.. virtualbox, hyperv.
|
||
|
* **Google**.<br>
|
||
|
If the guide says do X, and steps seem insuficient,
|
||
|
you google that shit and add the word **youtube**.
|
||
|
|
||
|
# Install a linux on the server
|
||
|
|
||
|
![endeavouros_logo](https://i.imgur.com/DSMmaj8.png)
|
||
|
|
||
|
[Some video.](https://www.youtube.com/watch?v=SyBuNZxzy_Y)
|
||
|
|
||
|
* **download linux iso**. For noobs I picked [EndeavourOS \(2GB\)](https://github.com/endeavouros-team/ISO/releases/download/1-EndeavourOS-ISO-releases-archive/EndeavourOS_Cassini_Nova-03-2023_R1.iso)
|
||
|
* why that linux and not xxx? Under the hood its Arch Linux.
|
||
|
* **make bootable usb** from the iso, recommend use [ventoy](https://www.ventoy.net/en/doc_start.html)
|
||
|
* download; run; select usb; click install; exit; copy iso on to it
|
||
|
* **boot from the usb**, maybe on newer machines need to disable secure boot in bios
|
||
|
* **click through the installation**
|
||
|
* pick online installer when offered
|
||
|
* during install, there can be step called `Desktop` - pick `No Desktop`<br>
|
||
|
or whatever, does not really matter
|
||
|
* when picking disk layout choose wipe everything
|
||
|
* username lets say you pick `noob`
|
||
|
* done
|
||
|
|
||
|
# Basic setup of the linux server
|
||
|
|
||
|
![ssh](https://i.imgur.com/ElFrBog.png)
|
||
|
|
||
|
|
||
|
**SSH** - a tiny application that allows you to execute commands
|
||
|
from your comfy windows PC on the damn server
|
||
|
|
||
|
* log in to the server and be in terminal
|
||
|
* ssh is installed by default, but disabled
|
||
|
* to check status - `systemctl status sshd`
|
||
|
* to **enable it** `sudo systemctl enable --now sshd`
|
||
|
* `ip a` or `ip r` - show [somewhere in there](https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/#3)
|
||
|
what IP address the server got assigned<br>
|
||
|
lets say you got `192.168.1.8`,
|
||
|
nope I am not explaining IP addresses
|
||
|
* done
|
||
|
|
||
|
*arrow up key in terminal will cycle through old comamnds in history*
|
||
|
|
||
|
# Remote connect to the server
|
||
|
|
||
|
![mobasterm_logo](https://i.imgur.com/aBL85Tr.png)
|
||
|
|
||
|
* **install** [mobaXterm](https://mobaxterm.mobatek.net/) on your windows machine
|
||
|
* use it to **connect** to the server using its ip address and username
|
||
|
* [have a pic](https://i.imgur.com/lhRGt1p.png)<br>
|
||
|
* done
|
||
|
|
||
|
# Install docker
|
||
|
|
||
|
![docker_logo](https://i.imgur.com/6SS5lFj.png)
|
||
|
|
||
|
**Docker** - a thing that makes hosting super easy, people prepared *recipies*,
|
||
|
you copy paste them, maybe edit a bit, run them
|
||
|
|
||
|
* **install docker-compose** - `sudo pacman -S docker-compose`
|
||
|
* **enable docker service** - `sudo systemctl enable --now docker`
|
||
|
* add your user to docker group so you dont need to sudo all the time<br>
|
||
|
`sudo gpasswd -a noob docker`
|
||
|
* log out, log back in
|
||
|
* done
|
||
|
|
||
|
# Using docker
|
||
|
|
||
|
Well, its time to learn how to create and edit files and copy paste shit
|
||
|
in to them, IN LINUX!<br>
|
||
|
Honestly could be annoying as fuck at first, but mobaXterm should make it easier
|
||
|
with the right mouse click paste.<br>
|
||
|
Nano editor is relatively simple and everywhere so that will be used.
|
||
|
|
||
|
* be in your home directory, the command `cd` will always get you there
|
||
|
* create directory `mkdir docker`
|
||
|
* go in to it `cd docker`
|
||
|
* create directory `mkdir nginx`
|
||
|
* go in to it `cd nginx`
|
||
|
* Oh look at you being all hacker in terminal, following simple directions
|
||
|
* create empty docker-compose.yml file `nano docker-compose.yml`
|
||
|
* paste in to it this *recipe*, spacing matters
|
||
|
```
|
||
|
services:
|
||
|
|
||
|
nginx:
|
||
|
image: nginx:latest
|
||
|
container_name: nginx
|
||
|
hostname: nginx
|
||
|
ports:
|
||
|
- "80:80"
|
||
|
```
|
||
|
* save using `ctrl+s`; exit `ctrl+x`
|
||
|
* run command `sudo docker compose up -d`<br>
|
||
|
will say the container started
|
||
|
* on your windows machine go to your browser<br>
|
||
|
in address bar put the ip of your server `192.168.1.8` bam<br>
|
||
|
|
||
|
![nging_welcome](https://i.imgur.com/Iv0B6bN.png)
|
||
|
|
||
|
# undertanding what you just did
|
||
|
|
||
|
* on linux server a docker container is running, its a webserver and it is
|
||
|
accessible for others.<br>
|
||
|
Most of selfhosted stuff is just webserver with some database.
|
||
|
* if this part is done that means that shit like hosting own netflix(jellyfin),
|
||
|
or google drive/calendar/photos(nextcloud), or own password manager(vaultwarden)
|
||
|
or own minecraft server(minecraft server) is just one `docker-compose.yml` away.
|
||
|
* you could almost abandon terminal at this point, just start googling portainer
|
||
|
and you can be doing this shit through a webpage. I dont use it, but it
|
||
|
got good I heard.
|
||
|
|
||
|
# undertanding what you did not get done
|
||
|
|
||
|
* this shit is on your own local network, not accessible from the outside.
|
||
|
Cant call grandma and tell her to write `192.168.1.8` in to her browser
|
||
|
to see your awesome nginx welcome running.
|
||
|
She tells you that the dumb fuck you are, you do not have public IP and ports
|
||
|
forwarded.<br>
|
||
|
To get that working is bit challenging, probably deserves own page,
|
||
|
not realy speedrun, but thorough steps as shit gets sideways fast and people
|
||
|
can dick around for hours trying wrong shit.
|
||
|
* everything here is just basic setup that breaks easily,
|
||
|
server got dynamic IP, turn it off for a weekend and it might get a different ip
|
||
|
assigned next time it starts. Container is not set to start on boot,...
|
||
|
* you dont understand how this shit works, fixing not working stuff be hard,
|
||
|
but now you can start to consume all the guides and tutorials on
|
||
|
docker compose and try stuff...
|
||
|
|
||
|
## Links
|
||
|
|
||
|
* https://www.reddit.com/r/HomeNetworking/comments/i7ijiz/a_guide_to_port_forwarding/
|
||
|
|
||
|
|