This articles is published 1015 days ago and last updated 1015 days ago, some information may be out of date.
VPC Network Diagram
前言: |
我之前的博客是部署在家中的機器,發現Oracle 提供雲免費套餐服務,包括2 個基於 AMD 的計算虛擬機,每個虛擬機配備 2Core CPU 和 1 GB 內存,對於私人博客是夠用,開始嘗試將部份服務轉移到Oracle的VPC內,於是就有了這篇記錄。
目錄內容: |
Docker |
- DNMP(GitHub - yeszao/dnmp)
DNMP
(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一鍵安裝程序。我主要是用於建立私人博客,用文字記錄生活。
默認支持pdo_mysql
、mysqli
、mbstring
、gd
、curl
、opcache
等常用熱門擴展,根據環境靈活配置。
version: "3"
services:
nginx:
build:
context: ./services/nginx
args:
NGINX_VERSION: nginx:${NGINX_VERSION}
CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
NGINX_INSTALL_APPS: ${NGINX_INSTALL_APPS}
container_name: nginx
ports:
#- "${NGINX_HTTP_HOST_PORT}:80"
#- "${NGINX_HTTPS_HOST_PORT}:443"
- "1080:1080"
- "2080:2080"
- "3080:3080"
volumes:
- ${SOURCE_DIR}:/www/:rw
- ${NGINX_SSL_CERTIFICATE_DIR}:/ssl:rw
- ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw
- ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro
- ${NGINX_FASTCGI_PHP_CONF}:/etc/nginx/fastcgi-php.conf:ro
- ${NGINX_FASTCGI_PARAMS}:/etc/nginx/fastcgi_params:ro
- ${NGINX_LOG_DIR}:/var/log/nginx/:rw
environment:
TZ: "$TZ"
restart: always
networks:
- default
php:
build:
context: ./services/php
args:
PHP_VERSION: php:${PHP_VERSION}-fpm-alpine
CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
PHP_EXTENSIONS: ${PHP_EXTENSIONS}
TZ: "$TZ"
container_name: php
expose:
- 9501
extra_hosts:
- "www.site1.com:172.17.0.1"
volumes:
- ${SOURCE_DIR}:/www/:rw
- ${PHP_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
- ${PHP_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
- ${PHP_LOG_DIR}:/var/log/php
- ${DATA_DIR}/composer:/tmp/composer
restart: always
cap_add:
- SYS_PTRACE
networks:
- default
mysql:
image: mysql:${MYSQL_VERSION}
container_name: mysql
ports:
- "${MYSQL_HOST_PORT}:3306"
volumes:
- ${MYSQL_CONF_FILE}:/etc/mysql/conf.d/mysql.cnf:ro
- ${DATA_DIR}/mysql:/var/lib/mysql/:rw
restart: always
networks:
- default
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
TZ: "$TZ"
networks:
default:
- DDNS (qmcgaw/ddns-updater)
輕量型容器,可定期為多個 DNS 供應商更新 DNS A 和/或 AAAA 記錄,主要更新自己的域名,還可以查看DDNS更新狀態,非常方便。
version: "3.7"
services:
ddns-updater:
image: qmcgaw/ddns-updater
container_name: ddns-updater
network_mode: bridge
ports:
- 8000:8000/tcp
volumes:
- ./data:/updater/data
environment:
- CONFIG=
- PERIOD=5m
- IP_METHOD=cycle
- IPV4_METHOD=cycle
- IPV6_METHOD=cycle
- HTTP_TIMEOUT=10s
# Web UI
- LISTENING_PORT=8000
- ROOT_URL=/
# Backup
- BACKUP_PERIOD=0 # 0 to disable
- BACKUP_DIRECTORY=/updater/data
# Other
- TZ=Asia/Hong_Kong
restart: always
data/config.json
配置
{
"settings": [
{
"provider": "cloudflare",
"zone_identifier": "%RoL['a0fw>9Gxu", #自行穫取
"domain": "kingtam.win",
"host": "@",
"ttl": 600,
"token": "%RoL['a0fw>9Gxu", #自行穫取
"ip_version": "ipv4"
}
]
}
ACME |
acme.sh 實現了acme
協議, 可以從 letsencrypt 生成免費的證書,如果是使用freenom
域名,可配合 luolongfei 大佬的域名自動續期,無論是域名還是TLS證書也變得全自動,永不過期。最後使用nginx服務器, 反代自己的博客。
https://github.com/acmesh-official/acme.sh
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m [email protected]
VPN |
利用VPN
可以簡單部署及測試VPC
,就像內網機器使用一樣。
- ZeroTier
ZeroTier
結合了VPN
和SD-WAN
的功能,簡化了網路管理。
我在使用功能ZeroTier 實現遠端訪問局域網,因為好多大佬編譯OpenWRT已經build-in ZeroTIer軟件,在設定和使用上變得簡單。
- Tailscale
Zerotier
和TailSale
非常類似,我使用TailSale
主要是透過Zerotier
訪問內網段20.13.3.0/24
失效,誤判為外網網段而不能訪問。而使用TailSale
的設定可以實現遠端訪問網段為20.13.3.0/24
的局域網。我使用
TailSale
的功能和設定,TailScale 實現遠端訪問整段局域網 (ZeroTier 另一選擇)、TailScale 實現「出口節點」"Exit Node"(導向所有流量經這出口節點)
Rclone |
Rclone
是一個命令行程式,用於管理雲存儲上的檔。主要是定期備份VPC
的內容到雲端上。
備份腳本配置: (參考鳥哥的每週系統備份的 script)
#!/bin/bash
# =========================================================
# Source Folder
BaseDir=/home/opc/backup/
Weekly=/home/opc/backup/Weekly
# =========================================================
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG=C
# 判斷目錄是否存在,若不存在則予以建立。
for dirs in $BaseDir $Weekly
do
[ ! -d "$dirs" ] && mkdir -p $dirs
done
# Stop the Docker-Compose
cd /home/opc/apps/dnmp
docker-compose stop
# Differential Backup (DNMP)
cd /home/opc/apps
tar -N '2021-12-25' -czv -f $Weekly/dnmp.$(date +%Y-%m-%d).tar.gz dnmp
# Start the Docker-Compose
cd /home/opc/apps/dnmp
docker-compose up -d
# Sychonizztion OPC Apps to Cloud(LWCPS) Folder
rclone sync --progress $BaseDir LWCPS:/Cloud/OPC/Apps
# Delete Files older Than 180 Days
find $Weekly/* -mtime +180 -exec rm {} \;
加入到排程 crontab
30 2 * * 1 "/home/opc/script/sync.sh" > /dev/null
結語: |
VPC可以實現功能是太過豐富,我所使用的只是冰山一角。如可實現安裝路由器功能,代理軟件供404區以外用戶翻過來等等。