Update 'The Lab'
							parent
							
								
									b046c64e01
								
							
						
					
					
						commit
						f5430a975e
					
				
							
								
								
									
										74
									
								
								The-Lab.md
									
									
									
									
									
								
							
							
								
								
								
								
									
									
								
								
								
							
						
						
									
										74
									
								
								The-Lab.md
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -11,3 +11,77 @@ How I'm building my personal lab.
 | 
			
		|||
                 │                           │            │                          │
 | 
			
		||||
                 └───────────────────────────┘            └──────────────────────────┘
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
* Caddy for auto HTTPS
 | 
			
		||||
* Rathole for NAT traversal
 | 
			
		||||
* Docker and docker compose to run all services
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Configuration
 | 
			
		||||
### Rathole
 | 
			
		||||
This is the server configuration
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
[server]
 | 
			
		||||
bind_addr = "0.0.0.0:7000"
 | 
			
		||||
 | 
			
		||||
[server.services.ssh]
 | 
			
		||||
token = "REDACTED"
 | 
			
		||||
bind_addr = "0.0.0.0:3389"
 | 
			
		||||
 | 
			
		||||
[server.services.web]
 | 
			
		||||
token = "REDACTED"
 | 
			
		||||
bind_addr = "127.0.0.1:7001"
 | 
			
		||||
 | 
			
		||||
[server.services.git]
 | 
			
		||||
token = "REDACTED"
 | 
			
		||||
bind_addr = "127.0.0.1:3000"
 | 
			
		||||
 | 
			
		||||
[server.services.gitssh]
 | 
			
		||||
token = "REDACTED"
 | 
			
		||||
bind_addr = "0.0.0.0:222"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
And this is the client configuration
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
[client]
 | 
			
		||||
remote_addr = "lab.guillemborrell.es:7000"
 | 
			
		||||
 | 
			
		||||
[client.services.ssh]
 | 
			
		||||
token = "!6Jutges16"
 | 
			
		||||
local_addr = "127.0.0.1:22"
 | 
			
		||||
 | 
			
		||||
[client.services.web]
 | 
			
		||||
token = "!6Jutges16"
 | 
			
		||||
local_addr = "127.0.0.1:8000"
 | 
			
		||||
 | 
			
		||||
[client.services.git]
 | 
			
		||||
token =	"!6Jutges16"
 | 
			
		||||
local_addr = "127.0.0.1:3000"
 | 
			
		||||
 | 
			
		||||
[client.services.gitssh]
 | 
			
		||||
token =	"!6Jutges16"
 | 
			
		||||
local_addr = "127.0.0.1:222"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Caddy
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
lab.guillemborrell.es {
 | 
			
		||||
    reverse_proxy localhost:7001
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
git.guillemborrell.es {
 | 
			
		||||
    reverse_proxy localhost:3000
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
You probably get how to add an additional service with auto-http 
 | 
			
		||||
 | 
			
		||||
## FAQ
 | 
			
		||||
 | 
			
		||||
### How small the small and cheap VM?
 | 
			
		||||
It can be the smallest instance. Half a virtual core and less than a GB of RAM will do. Caddy and Rathole are very efficient, and within normal operation, the VM has a CPU load of less than 1%
 | 
			
		||||
 | 
			
		||||
### Why Caddy on the cloud VM?
 | 
			
		||||
Certificate authorities require that the service that requests the cert runs in an IP related to a `A` or `AAAA` entry in an accessible DNS service. This is the way you prove that you "own" the service
 | 
			
		||||
		Loading…
	
		Reference in a new issue