หลายปีหลังจากโฮมเซิร์ฟเวอร์เครื่องแรกของฉันเสียชีวิต ฉันตัดสินใจมีเซิร์ฟเวอร์ใหม่อีกครั้ง ครั้งนี้เพื่อการเรียนรู้และมีความยืดหยุ่นมากขึ้น ฉันใช้ docker container
ประเด็นคือ ฉันได้ตั้งค่า reverse proxy ด้วย nginx และ the Let's ecnrypt Companion เพื่อให้การเข้ารหัส SSL & เพื่อหลีกเลี่ยงการส่งต่อพอร์ตเพิ่มเติมบนเราเตอร์ของฉัน
มันทำงานได้ค่อนข้างไม่มีที่ติ จากโทรศัพท์ของฉันที่มีข้อมูลมือถือหรือจากเครือข่ายที่แตกต่างกันโดยสิ้นเชิง ฉันสามารถเข้าถึงบริการของฉันได้โดยไม่มีปัญหาใดๆ ปัญหาเกิดขึ้นเมื่อฉันพยายามเข้าถึงภายใน LAN เดียวกัน ฉันสามารถเข้าถึงได้ 1/10 ครั้งและหมดเวลาอีก 9/10
ไม่มีความแตกต่างในวิธีที่ฉันพยายามเชื่อมต่อ ในทั้งสองกรณีเป็นเว็บเบราว์เซอร์ที่ใช้ <subdomain>.<domain>
เป็น URL
นี่คือคอนเทนเนอร์ปัจจุบันของฉัน:
สำหรับไฟล์นักเทียบท่าปัจจุบันของฉันมันเป็นดังนี้:
รุ่น: '3'
บริการ:
พร็อกซีย้อนกลับ:
รูปภาพ: jwilder/nginx-proxy
พอร์ต:
- '80:80'
- '443:443'
container_name: พร็อกซีย้อนกลับ
เครือข่าย:
service_network: เป็นโมฆะ
ปริมาณ:
- '/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:
รูปภาพ: jrcs/letsencrypt-nginx-proxy-companion
ขึ้นอยู่กับ:
- พร็อกซีย้อนกลับ
สิ่งแวดล้อม:
NGINX_PROXY_CONTAINER: พร็อกซีย้อนกลับ
เครือข่าย:
service_network: เป็นโมฆะ
ปริมาณ:
- '/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
ขึ้นอยู่กับ:
- พร็อกซีย้อนกลับ
พอร์ต:
- '8080:80'
เปิดเผย:
- 8080
สิ่งแวดล้อม:
- NGINX_HOST=<โดเมน>
- NGINX_PORT=80
- HTTP_PORT=8080
- VIRTUAL_HOST=<โดเมน>
- LETSENCRYPT_HOST=<โดเมน>
- LETSENCRYPT_EMAIL=<EMAIL>
เครือข่าย:
service_network: เป็นโมฆะ
ปริมาณ:
- '.\<ไดเรกทอรี>:/usr/share/nginx/html'
คูล:
ภาพ: hyzual/koel
ขึ้นอยู่กับ:
- พร็อกซีย้อนกลับ
- ฐานข้อมูล
พอร์ต:
- '8000:80'
เปิดเผย:
- 8000
สิ่งแวดล้อม:
- HTTP_PORT=8000
- VIRTUAL_HOST=<SUBDOMAIN>.<DOMAIN>
- LETSENCRYPT_HOST=<SUBDOMAIN>.<DOMAIN>
- LETSENCRYPT_EMAIL=<EMAIL>
- DB_CONNECTION=mysql
- DB_HOST=ฐานข้อมูล
- DB_USERNAME=โคเอล
- DB_PASSWORD=<รหัสผ่าน>
- DB_DATABASE=โคเอล
- FORCE_HTTPS=จริง
- LASTFM_API_KEY=<API_SECRET>
- LASTFM_API_SECRET=<API_KEY>
เครือข่าย:
service_network: เป็นโมฆะ
db_network: เป็นโมฆะ
ปริมาณ:
- '/e/musica:/เพลง'
- '.\koel\covers:/var/www/html/public/img/covers'
- '.\koel\search_index:/var/www/html/storage/search-indexes'
ฐานข้อมูล:
รูปภาพ: 'mysql/mysql-server:5.7'
ปริมาณ:
- '.\mysql:/var/lib/mysql'
สิ่งแวดล้อม:
- MYSQL_ROOT_PASSWORD=<รหัสผ่าน>
- MYSQL_DATABASE=โคเอล
- MYSQL_USER=โคเอล
- MYSQL_PASSWORD=<รหัสผ่าน>
เครือข่าย:
db_network: เป็นโมฆะ
เครือข่าย:
บริการ_เครือข่าย:
คนขับ: สะพาน
db_network:
คนขับ: สะพาน
* ฉันได้เปลี่ยนค่าบางค่าเป็นคำอธิบายระหว่าง < >
เนื่องจากมีข้อมูลส่วนตัว