VPC Network DiagramOPC.png前言: 我之前的博客是部署在家中的機器，發現Oracle 提供雲免費套餐服務，包括2 個基於 AMD 的計算虛擬機，每個虛擬機配備 2Core CPU 和 1 GB 內存，對於私人博客是夠用，開始嘗試將部份服務轉移到Oracle的VPC內，於是就有了這篇記錄。目錄內容: DockerDNMPDDNSACMEVPNZeroTierTailscaleRcloneDocker 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更新狀態，非常方便。DDNS_2022-01-26_105400.pngversion: "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: alwaysdata/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.shgit clone https://github.com/acmesh-official/acme.sh.git cd ./acme.sh ./acme.sh --install -m my@example.comACME_2021-10-15_123100.png返回目錄內容VPN 利用 VPN 可以簡單部署及測試 VPC ，就像內網機器使用一樣。ZeroTierZeroTier 結合了 VPN 和 SD-WAN 的功能，簡化了網路管理。我在使用功能ZeroTier 實現遠端訪問局域網，因為好多大佬編譯OpenWRT已經build-in ZeroTIer軟件，在設定和使用上變得簡單。TailscaleZerotier 和 TailSale 非常類似，我使用 TailSale 主要是透過Zerotier 訪問內網段20.13.3.0/24 失效，誤判為外網網段而不能訪問。而使用 TailSale 的設定可以實現遠端訪問網段為 20.13.3.0/24 的局域網。我使用 TailSale 的功能和設定，TailScale 實現遠端訪問整段局域網 (ZeroTier 另一選擇)、TailScale 實現「出口節點」"Exit Node"（導向所有流量經這出口節點）返回目錄內容Rclone Rclone 是一個命令行程式，用於管理雲存儲上的檔。主要是定期備份 VPC 的內容到雲端上。RCLONE_2022-01-26_105552.png備份腳本配置: (參考鳥哥的每週系統備份的 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 {} \;加入到排程 crontab30 2 * * 1 "/home/opc/script/sync.sh" > /dev/null返回目錄內容結語: VPC可以實現功能是太過豐富，我所使用的只是冰山一角。如可實現安裝路由器功能，代理軟件供404區以外用戶翻過來等等。