added docker examples

This commit is contained in:
Willem@105.pve1.lan 2022-02-18 08:52:52 +02:00
parent af5e9e41ab
commit cd07a16a5a
21 changed files with 241 additions and 19 deletions

10
.gitignore vendored
View File

@ -1,10 +0,0 @@
# Logo
/logo.png
# Build executables
/build
/cmd/boringproxy/boringproxy*
boringproxy_*.tar.gz
# Boringproxy database, created if exec is run in boringproxy folder
boringproxy_db.json

2
docker/.gitignore vendored
View File

@ -1,2 +0,0 @@
# Docker-compose file with local dev config
dev.yml

33
docker/client/README.md Normal file
View File

@ -0,0 +1,33 @@
# Files to run client using docker
## Update compose file
Edit docker-compose.yml and change the following under **commands** for service **boringproxy**
- bp.example.com: your admin domain
- your-user-token: token generated by your server
- your-client-name: the name to identify your client
- your-user-name: the user associated with the server token
### certmagic
The certmagic volume is used to store certificats. This directory must also be passed to the container with the -cert-dir command.
==If you make changes to this, make sure that the data in certmagic is persistent, otherwise new certificates will be generated everytime the container is started. This can result in triggering the [rate limits for Let's Encrypt](https://letsencrypt.org/docs/rate-limits/)==
### /etc/ssl/certs
Alpine doesn't include ca-certificates in the docker base image. You can add your OS ca-certificates to the docker container by linking your local certs directory to the image
- /etc/ssl/certs/:/etc/ssl/certs/:ro
## Build image from source and run server in docker
You can build the image from source. This requires that you clone the GitHub repo and start docker using the compose command below:
```bash
docker-compose -f docker-compose.yml -f source.yml up -d
```
## Download prebuild image and run server in docker
If you don't want to build the image, a prebuild image can be downloaded from GitHub. Start docker using the compose commands below to download the image and start the container.
```bash
docker-compose -f docker-compose.yml -f prebuild.yml up -d
```

View File

@ -0,0 +1,12 @@
version: '3.7'
services:
boringproxy:
container_name: boringproxy-client
restart: unless-stopped
command: ["client", "-server", "bp.example.com", "-token", "your-user-token", "-client-name", "your-client-name", "-user", "your-user-name", "-cert-dir", "/certmagic"]
volumes:
- certmagic:/certmagic
- /etc/ssl/certs/:/etc/ssl/certs/:ro
volumes:
certmagic:

View File

@ -0,0 +1,7 @@
# Boringproxy docker examples
The docker examples for boringproxy clients are set up to enable easy integration between boringproxy and popular self hosted services.
## Usage
To start using an example, copy the example content over to a local folder and start the containers using the `start.sh` script
These compose files use prebuild images, if you want to build images yourself, follow the instructions in the parent folder to set up your own compose files.

View File

@ -1,7 +0,0 @@
# Ignore everything in config
config/*
# But not these files...
!config/configuration.yaml
# Ignore everything in development config
dev-config/*

View File

@ -0,0 +1,26 @@
# FUse boringproxy with home-assistant
## Update compose file
Edit docker-compose.yml and change the following under **commands** for service **boringproxy**
- bp.example.com: your admin domain
- your-user-token: token generated by your server
- your-user-name: the user associated with the server token
## Add tunnel in WebUI
Add new tunnel with the following config
- Domain: domain for this tunnel
- Tunnel Type: **Client TSL**
- Tunnel Port: **Random**
- Client Name: **docker-homeassistant**
- Client Address: **homeassistant**
- Client Port: **8123**
## Start containers
To start the container(s), run the start script in the example folder
```bash
./start.sh
```

View File

@ -0,0 +1,10 @@
# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
http:
# For extra security Homeassistant blocks proxy requests unless forwaring is set
use_x_forwarded_for: true
# If you changed the IP address of boringproxy in your docker-compose file, add the correct IP address here
trusted_proxies:
- 10.5.0.2

View File

@ -0,0 +1,38 @@
version: '3.7'
services:
boringproxy:
image: ghcr.io/wgrobler/boringproxy:latest
restart: unless-stopped
command: ["client", "-server", "bp.example.com", "-token", "your-user-token", "-client-name", "docker-homeassistant", "-user", "your-user-name", "-cert-dir", "/certmagic"]
volumes:
- certmagic:/certmagic
- /etc/ssl/certs/:/etc/ssl/certs/:ro
networks:
vpcbr:
ipv4_address: 10.5.0.2
homeassistant:
hostname: homeassistant
restart: unless-stopped
image: ghcr.io/home-assistant/home-assistant:latest
privileged: true
ports:
- "8123:8123" # Enable port on local machine, can be removed if you only want to use the tunnel
volumes:
- ./config:/config # Path to your home assistant config folder
- /etc/localtime:/etc/localtime:ro
networks:
vpcbr:
ipv4_address: 10.5.0.3
volumes:
certmagic:
networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1

View File

@ -0,0 +1,6 @@
#!/bin/bash
export COMPOSE_PROJECT_NAME="bpc-homeassistant"
docker-compose down; # Stop containers if running
docker-compose up -d;
docker-compose logs -f;

View File

@ -0,0 +1,3 @@
#!/bin/bash
docker-compose down

View File

@ -0,0 +1,26 @@
# FUse boringproxy with nginx
## Update compose file
Edit docker-compose.yml and change the following under **commands** for service **boringproxy**
- bp.example.com: your admin domain
- your-user-token: token generated by your server
- your-user-name: the user associated with the server token
## Add tunnel in WebUI
Add new tunnel with the following config
- Domain: domain for this tunnel
- Tunnel Type: **Client TSL**
- Tunnel Port: **Random**
- Client Name: **docker-nginx**
- Client Address: **nginx**
- Client Port: **8123**
## Start containers
To start the container(s), run the start script in the example folder
```bash
./start.sh
```

View File

@ -0,0 +1,19 @@
version: '3.7'
services:
boringproxy:
image: ghcr.io/wgrobler/boringproxy:latest
restart: unless-stopped
command: ["client", "-server", "bp.example.com", "-token", "your-user-token", "-client-name", "docker-nginx", "-user", "your-user-name","-cert-dir", "/certmagic"]
volumes:
- certmagic:/certmagic
- /etc/ssl/certs/:/etc/ssl/certs/:ro
nginx:
image: nginx:1.17
hostname: nginx
ports:
- 8080:80 # Enable port on local machine, can be removed if you only want to use the tunnel
volumes:
certmagic:

View File

@ -0,0 +1,6 @@
#!/bin/bash
export COMPOSE_PROJECT_NAME="bpc-nginx"
docker-compose down; # Stop containers if running
docker-compose up -d;
docker-compose logs -f;

View File

@ -0,0 +1,3 @@
#!/bin/bash
docker-compose down

View File

@ -0,0 +1,4 @@
version: '3.7'
services:
boringproxy:
image: ghcr.io/wgrobler/boringproxy:latest

5
docker/client/source.yml Normal file
View File

@ -0,0 +1,5 @@
version: '3.7'
services:
boringproxy:
image: boringproxy
build: ../../

20
docker/server/README.md Normal file
View File

@ -0,0 +1,20 @@
# Files to run server using docker
## Update compose file
Edit docker-compose.yml and change the following under **commands** for service **boringproxy**
- bp.example.com: your admin domain
## Build image from source and run server in docker
You can build the image from source. This requires that you clone the GitHub repo and start docker using the compose command below:
```bash
docker-compose -f docker-compose.yml -f source.yml up -d
```
## Download prebuild image and run server in docker
If you don't want to build the image, a prebuild image can be downloaded from GitHub. Start docker using the compose commands below to download the image and start the container.
```bash
docker-compose -f docker-compose.yml -f prebuild.yml up -d
```

View File

@ -0,0 +1,14 @@
version: '3.7'
services:
boringproxy:
container_name: boringproxy-server
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- data:/opt/boringproxy/
command: ["server", "-admin-domain", "bp.example.com"]
volumes:
data:

View File

@ -0,0 +1,4 @@
version: '3.7'
services:
boringproxy:
image: ghcr.io/wgrobler/boringproxy:latest

5
docker/server/source.yml Normal file
View File

@ -0,0 +1,5 @@
version: '3.7'
services:
boringproxy:
image: boringproxy
build: ../../