ani după ce primul meu server de acasă a murit, am decis să am unul din nou. De data aceasta, de dragul de a învăța și de a avea mai multă flexibilitate, o fac cu containere docker.
Chestia este că am configurat un proxy invers cu nginx și însoțitorul let’s ecnrypt, pentru a oferi criptare SSL și pentru a evita redirecționarea mai multor porturi pe routerul meu.
Acest lucru funcționează aproape perfect, de pe telefonul meu cu date mobile sau dintr-o rețea complet diferită, îmi pot accesa serviciile fără nicio problemă. Problema vine atunci când încerc să accesez din aceeași rețea LAN, pot accesa de 1/10 ori și primesc timeout-uri celelalte 9/10.
Nu există nicio diferență în modul în care încerc să mă conectez; în ambele cazuri este printr-un browser web folosind <subdomain>.<domain>
ca URL
Acestea sunt containerele mele actuale:
În ceea ce privește fișierul meu docker-compose actual, este așa:
versiunea: '3'
Servicii:
proxy invers:
imagine: jwilder/nginx-proxy
porturi:
- „80:80”
- „443:443”
container_name: reverse-proxy
retele:
service_network: null
volume:
- „/var/run/docker.sock:/tmp/docker.sock:ro”
- „.\nginx\certs:/etc/nginx/certs”
- „.\nginx\vhosts:/etc/nginx/vhost.d”
- „.\nginx\html:/usr/share/nginx/html”
ACME-SSL:
imagine: jrcs/letsencrypt-nginx-proxy-companion
depinde de:
- proxy invers
mediu inconjurator:
NGINX_PROXY_CONTAINER: proxy invers
retele:
service_network: null
volume:
- „/var/run/docker.sock:/var/run/docker.sock:ro”
- „.\nginx\certs:/etc/nginx/certs”
- „.\nginx\vhosts:/etc/nginx/vhost.d”
- „.\nginx\html:/usr/share/nginx/html”
nginx:
imagine: nginx
depinde de:
- proxy invers
porturi:
- „8080:80”
expune:
- 8080
mediu inconjurator:
- NGINX_HOST=<DOMENIU>
- NGINX_PORT=80
- HTTP_PORT=8080
- VIRTUAL_HOST=<DOMENIU>
- LETSENCRYPT_HOST=<DOMENIU>
- LETSENCRYPT_EMAIL=<EMAIL>
retele:
service_network: null
volume:
- „.\<DIRECTORY>:/usr/share/nginx/html”
koel:
imagine: hyzual/koel
depinde de:
- proxy invers
- Bază de date
porturi:
- „8000:80”
expune:
- 8000
mediu inconjurator:
- HTTP_PORT=8000
- VIRTUAL_HOST=<SUBDOMAIN>.<DOMEN>
- LETSENCRYPT_HOST=<SUBDOMENIUL>.<DOMENIU>
- LETSENCRYPT_EMAIL=<EMAIL>
- DB_CONNECTION=mysql
- DB_HOST=bază de date
- DB_USERNAME=koel
- DB_PASSWORD=<PASS>
- DB_DATABASE=koel
- FORCE_HTTPS=adevărat
- LASTFM_API_KEY=<API_SECRET>
- LASTFM_API_SECRET=<API_KEY>
retele:
service_network: null
db_network: nul
volume:
- „/e/musica:/music”
- „.\koel\covers:/var/www/html/public/img/covers”
- „.\koel\search_index:/var/www/html/storage/search-indexes”
Bază de date:
imagine: „mysql/mysql-server:5.7”
volume:
- „.\mysql:/var/lib/mysql”
mediu inconjurator:
- MYSQL_ROOT_PASSWORD=<PASS>
- MYSQL_DATABASE=koel
- MYSQL_USER=koel
- MYSQL_PASSWORD=<PASS>
retele:
db_network: nul
retele:
service_network:
şofer: pod
db_network:
şofer: pod
*Am schimbat unele valori în descrieri între < >
deoarece conțin informații private.