add HTTPS.

This commit is contained in:
m1k1o
2021-03-12 10:47:34 +01:00
parent 3b545e0cec
commit f79da7995a
9 changed files with 125 additions and 12 deletions
+2 -2
View File
@@ -2,8 +2,8 @@ NEKO_ROOMS_EPR=59000-59049
NEKO_ROOMS_NAT1TO1=192.168.1.20 NEKO_ROOMS_NAT1TO1=192.168.1.20
NEKO_ROOMS_TRAEFIK_DOMAIN=neko-rooms.server.lan NEKO_ROOMS_TRAEFIK_DOMAIN=neko-rooms.server.lan
NEKO_ROOMS_TRAEFIK_ENTRYPOINT=web NEKO_ROOMS_TRAEFIK_ENTRYPOINT=websecure
NEKO_ROOMS_TRAEFIK_NETWORK=neko-rooms-traefik NEKO_ROOMS_TRAEFIK_NETWORK=neko-rooms-traefik
NEKO_ROOMS_TRAEFIK_PORT=8080 NEKO_ROOMS_TRAEFIK_CERTRESOLVER=lets-encrypt
TZ=Europe/Vienna TZ=Europe/Vienna
+22 -7
View File
@@ -6,6 +6,10 @@ Simple room management system for [n.eko](https://github.com/m1k1o/neko).
You need to have installed `Docker` and `docker-compose`. You need to have installed `Docker` and `docker-compose`.
You can watch this installation video provided by *Dr R1ck*:
https://www.youtube.com/watch?v=cCmnw-pq0gA
### Step 1 ### Step 1
Copy `.env.example` to `.env` and customize. Copy `.env.example` to `.env` and customize.
@@ -16,22 +20,33 @@ cp .env.example .env
### Step 2 ### Step 2
Run start docker compose stack. Create `usersfile` with your users:
```bash ```bash
docker-compose up -d touch traefik/usersfile
``` ```
### Stop 3 And add as many users as you like:
Use `OpenApi.yml` and send commands to your new controller. ```bash
echo $(htpasswd -nb user password) >> traefik/usersfile
```
## WARNING ### Step 3
This project is WIP, n.eko is not wokring on custom `/paths/`, because all static files are loaded from `/`. This needs to be fixed in upstream repository to have this instane working. Create `acme.json`
```bash
touch traefik/acme.json
chmod 600 traefik/acme.json
```
Update your email in `traefik/traefik.yml`.
### Roadmap: ### Roadmap:
- [ ] add authentication provider for API
- [x] add GUI - [x] add GUI
- [x] add HTTPS support
- [x] add authentication provider for traefik
- [ ] add bearer token to for API
- [ ] add docker ssh / tcp support - [ ] add docker ssh / tcp support
- [ ] add docker swarm support - [ ] add docker swarm support
@@ -15,9 +15,9 @@ services:
- "--providers.docker.watch=true" - "--providers.docker.watch=true"
- "--providers.docker.exposedbydefault=false" - "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=${NEKO_ROOMS_TRAEFIK_NETWORK}" - "--providers.docker.network=${NEKO_ROOMS_TRAEFIK_NETWORK}"
- "--entrypoints.${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}.address=:${NEKO_ROOMS_TRAEFIK_PORT}" - "--entrypoints.${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}.address=:${APP_PORT-8080}"
ports: ports:
- "${NEKO_ROOMS_TRAEFIK_PORT}:${NEKO_ROOMS_TRAEFIK_PORT}" - "${APP_PORT-8080}:${APP_PORT-8080}"
volumes: volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro" - "/var/run/docker.sock:/var/run/docker.sock:ro"
@@ -30,7 +30,7 @@ services:
- "NEKO_ROOMS_TRAEFIK_DOMAIN" - "NEKO_ROOMS_TRAEFIK_DOMAIN"
- "NEKO_ROOMS_TRAEFIK_ENTRYPOINT" - "NEKO_ROOMS_TRAEFIK_ENTRYPOINT"
- "NEKO_ROOMS_TRAEFIK_NETWORK" - "NEKO_ROOMS_TRAEFIK_NETWORK"
- "NEKO_ROOMS_TRAEFIK_PORT" - "NEKO_ROOMS_TRAEFIK_PORT=${APP_PORT-8080}"
volumes: volumes:
- "/var/run/docker.sock:/var/run/docker.sock" - "/var/run/docker.sock:/var/run/docker.sock"
labels: labels:
+44
View File
@@ -0,0 +1,44 @@
version: "3.7"
networks:
default:
attachable: "true"
name: "${NEKO_ROOMS_TRAEFIK_NETWORK}"
services:
traefik:
image: "traefik"
restart: unless-stopped
environment:
- "TZ"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./traefik/traefik.yml:/etc/traefik/traefik.yml:ro"
- "./traefik/usersfile:/usersfile:ro"
- "./traefik/acme.json:/acme.json"
- "./traefik/config:/config"
neko-rooms:
build: "./"
restart: unless-stopped
environment:
- "TZ"
- "NEKO_ROOMS_EPR"
- "NEKO_ROOMS_NAT1TO1"
- "NEKO_ROOMS_TRAEFIK_DOMAIN"
- "NEKO_ROOMS_TRAEFIK_ENTRYPOINT"
- "NEKO_ROOMS_TRAEFIK_CERTRESOLVER"
- "NEKO_ROOMS_TRAEFIK_NETWORK"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
labels:
- "traefik.enable=true"
- "traefik.http.services.neko-rooms-frontend.loadbalancer.server.port=8080"
- "traefik.http.routers.neko-rooms.entrypoints=${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}"
- "traefik.http.routers.neko-rooms.rule=Host(`${NEKO_ROOMS_TRAEFIK_DOMAIN}`)"
- "traefik.http.routers.neko-rooms.tls=true"
- "traefik.http.routers.neko-rooms.tls.certresolver=${NEKO_ROOMS_TRAEFIK_CERTRESOLVER}"
- "traefik.http.routers.neko-rooms.middlewares=basicauth@file"
+2
View File
@@ -0,0 +1,2 @@
acme.json
usersfile
+10
View File
@@ -0,0 +1,10 @@
http:
middlewares:
basicauth:
basicAuth:
usersFile: "/usersfile"
httpsredirect:
redirectScheme:
scheme: https
permanent: true
+9
View File
@@ -0,0 +1,9 @@
http:
routers:
redirecttohttps:
entryPoints:
- "web"
middlewares:
- "httpsredirect"
rule: "HostRegexp(`{host:.+}`)"
service: "noop@internal"
+11
View File
@@ -0,0 +1,11 @@
tls:
options:
default:
minVersion: VersionTLS12
cipherSuites:
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
+22
View File
@@ -0,0 +1,22 @@
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
file:
directory: "/config"
docker:
endpoint: "unix:///var/run/docker.sock"
network: traefik
watch: true
exposedByDefault: false
certificatesResolvers:
lets-encrypt:
acme:
email: youname@example.com
storage: /acme.json
httpChallenge:
entryPoint: web