申请海外 Apple ID

准备工作:打开 https://appleid.apple.com/ ,翻到页面底部,创建一个全新的 Apple ID(中国区)

img

在你手机上的 App Store 登录刚刚注册好的Apple ID,因为是新 Apple ID 第一次登录,所以会有图中的提示,点「检查」进入下一步

切换 APPLE ID 时,打开 AppStore ,点击右上角的头像,拉到最底部点击退出登陆,再重新登陆即可,不要在设置中切换 iCLOUD 账户。

img

选中「同意条款和条件」,点击「下一页」,选择付款方式为「」,填好必填信息,再点「下一页」完成创建,然后在 App Store 退出你的 Apple ID

img

开始修改地区

用电脑打开 https://appleid.apple.com/ ,登陆刚刚注册的 Apple ID

点击左侧的个人信息后,再点击右侧的国家或地区进行切换。

img

切换国家或地区选择「香港」,点击「继续更新」(当然您也可以选择您喜欢的国家或地区)。

现在 APPLE 更新了政策,很多地方需要手机短信验证,因此推荐选择 香港 地区,可以使用 +86 号码验证。

img

付款方式选择 然后设置其他信息,然后点击右上角的「保存」

img

QuantumultX 设置方法

QuantumultX 设置方法

  • QuantumultX 推荐使用我们提供的配置文件链接进行添加

1. 查看节点信息

登入到客户中心,依次访问 产品服务 > 我的产品与服务(点击前往) ,查看 Trojan 服务对应的服务器信息。

1.1 获取配置文件的订阅链接

点击 获得地址,在弹出的窗口中点击 复制地址 复制 QuantumultX 配置的订阅链接。

portal-qx-get-link.png

2. 添加配置文件

在客户端首页点击右下角的功能图标打开设置页面。

qx-home.png

然后点击右上角的 icon-qx-lang.png 右侧的 icon-qx-link.png 图标,进行配置文件的关联。

qx-settings.png

在弹出的窗口中,粘贴 1.1 获取配置文件的订阅链接 复制的链接,然后点击 完成添加。

qx-add-by-link.png

添加成功后会如下图进行提示,点击确定再点击左上角的 icon-down-arrow.png 按钮返回首页。

qx-add-done.png

在首页界面,顶部的按钮用于切换节点、查看配置文件的规则。点击顶部 已停止 右侧的开关按钮即可开始连接。初次连接会请求 VPN 权限,请选择允许。

qx-ask-p.png

第一次连接时可能无法使用,推荐断开后再重新连接一次试一下。

长按右下角的功能图标可以切换客户端的运行模式。

  • 蓝底白图标: 全局模式,所有流量都会经过代理。
  • 白底彩图标: 规则切换,会按照配置文件中的规则决定流量是否经过代理,推荐日常使用
  • 黄底白图标: 直接连接,不使用代理。

qx-mode.png

Shadowsocks 配合 Proxifier 实现全局代理

什么是 Proxifier

Proxifier 是一款功能非常强大的 socks5 客户端,可以让不支持通过代理服务器工作的网络程序能通过 HTTPS 或 SOCKS 代理或代理链。支持 64位系统,支持Xp,Vista,Win7,MAC OS ,支持socks4,socks5,http代理协议,支持TCP,UDP协议,可以指定端口,指定IP,指定域名,指定程序等运行模式,兼容性非常好,和 SOCKSCAP 属于同类软件,不过 SOCKSCAP 已经很久没更新了,不支持64位系统。 有许多网络应用程序不支持通过代理服务器工作,Proxifier 解决了这些问题和所有限制,让您有机会不受任何限制使用你喜爱的软件。此外,它让你获得了额外的网络安全控制,创建代理隧道,并添加使用更多网络功能的权力。

实现方法:

Proxifier:

官网地址:http://www.proxifier.com/
下载地址:http://www.proxifier.com/download.htm

Win

软件分为 Standard Edition 和 Portable Edition 版本,注册码不通用,注册用户名任意。
L6Z8A-XY2J4-BTZ3P-ZZ7DF-A2Q9C(Portable Edition)
5EZ8G-C3WL5-B56YG-SCXM9-6QZAP(Standard Edition)

Mac OS X:

注册码:P427L-9Y552-5433E-8DSR3-58Z68

若系统为 10.11,请下载Beta版

若 Yosemite 下 Proxifier 不能运行,

打开“终端”应用,运行这个命令然后重启就好了

1
sudo nvram boot-args="kext-dev-mode=1"
详细使用方法:

因为 win 和 mac 的使用方式是一样的,我就只演示 Mac OS X 下的使用方法啦~
首先点击 proxies —— add 在其中填写 socks5 的代理地址,127.0.0.1:1080 请确保与图中一致。
img
img
img
接下来填写代理规则。
img
其中最重要的就是请将 Shadowsocks 客户端设置为 direct 也就是直接连接。
如图,点击 添加 app,再在 Action 中选择 Direct
img
其他 app 的添加就可以按心情来啦~比如我要让 steam 和 cfgo 走 Shadowsocks 以降低延迟,那么如图:
确保选择的是走 socks5 就可以了。

img

Docker基本操作命令

前言

刚看别人使用Docker的时候有很多不解,为什么要用Docker,Docker怎么用?Docker配置为什么这么难?为什么网络访问不通?等等因素阻碍了笔者学习Docker?其实笔者也很笨,有很多思考不清晰的点。顺便也分享下。

学时疑惑:

Q:我一套服务为什么不放在一个容器里面(Java、MySQL、Nginx、Redis等)?
A:因为既要维护容器内网络,又要维护端口等等之类的东西,Docker就是为了快速搭建环境而生的,而且Docker最好也是一个服务一个容器,这样好打理。

Q:Docker能放到生产环境吗?
A:在公司没有专门的运维团队情况下,不建议使用Docker部署的环境作为生产环境,因为不仅仅要维护项目和中间件,Docker或者Kubernetes出现问题后,还要解决这些问题,也就是还要解决Docker的问题。如果在没有专门运维团队的情况下,最好使用某里云的服务,例如RDS,SLB等,最起码别人还会帮你维护你的数据库和服务。

基本命令

下载镜像

1
2
# 以Redis为例子
docker pull redis

运行镜像

1
2
3
4
5
6
docker run \
-d \ # 后台运行
--name redis6 \ # 自定义名字
-p 6379:6379 \ # 端口映射
redis # 镜像名称
docker run -d --name redis6 -p 6379:6379 redis redis-server --appendonly yes --requirepass "123456" # 完整命令

进入容器

第一种(不推荐,当退出容器使用exit命令时,会停止这个容器):

1
docker attach 容器id

第二种:

1
docker exec -it 容器id /bin/bash

暂停容器

1
docker stop 容器id

启动容器

1
docker start 容器id

查询容器列表

1
2
docker ps -a # 查看所有容器
docker ps # 查看运行中的容器

run和start的区别:

  • run是创建一个新的容器
  • start是把已经创建好的容器启动

查看容器信息

1
docker inspect 容器id

挂载

挂载介绍

容器里面的文件都是在容器内部,而跟你当前电脑是没有关系的,如果删除了容器怎么办?但是资料又想保存就像MySQL一样,我只是换一台电脑就要把整个容器复制过去,太麻烦了!所以需要把容器的文件跟当前主机文件作为一个映射

命令教程

参数-v宿主机路径:容器路径

1
2
3
# 以MySQL为例子
docker run -d --name mysql8 -p 3306:3306 -v /data/mysql8/config:/etc/mysql/conf.d -v /data/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
# 以上的命令可以参考:https://hub.docker.com/_/mysql,里面有详细介绍

为什么要知道这么多路径或者参数

每个中间件或者一个数据库容器,他可能需要有很多配置,例如密码,持久化文件的路径等等。那我们怎么知道路径是什么:

  1. 可以进hub.docker.com找到自己需要的容器然后看文档
  2. 进容器找了(这个方法有点笨,笔者一开始就是这么找到的。)

网络

容器之间怎么进行通讯

容器虽然是能相互通讯的,但是容器每次重启ip都跟上一次不一样,所以这样通讯会很复杂。

示范

1
2
3
4
5
6
7
# 先拉个CentOS镜像下来
docker pull centos
# 创建个容器
docker run -d -it --name centos1 centos
docker run -d -it --name centos2 centos

docker inspect centos1_id

截取一些容器信息下来:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[
{
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "9e7ed6d29ca3474de04409833e39b7c7965c7c63d3a1f509886a7a998e4825f8",
"EndpointID": "41230bf523fac8fa4933989d98baaaa7655fba5c5dadd14e63839ffe868ed3f8",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.4",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:04",
"DriverOpts": null
}
}
}
}
]
1
docker inspect centos2_id
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[
{
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "9e7ed6d29ca3474de04409833e39b7c7965c7c63d3a1f509886a7a998e4825f8",
"EndpointID": "8ae77d46887c795983ee7a8fb96951d05e236b4ca4b4caa5d5964f892e18a476",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:05",
"DriverOpts": null
}
}
}
}
]
  • 以上centos1 ip为172.17.0.4
  • 以上centos2 ip为172.17.0.5

解决问题

1
2
3
4
5
6
docker network create centos-network
docker run -d -it --network centos-network --name centos3 centos
docker run -d -it --network centos-network --name centos4 centos
docker exec -it centos3_id /bin/bash
ping centos4
# 所以当创建了一个network后 容器都能加入到这个网络里面,很方便

这样就可以解决每次容器重启后ip不一致问题。

小结

其实在刚使用容器的时候会很麻烦:

  1. 不知道Docker的命令和容器需要的参数
  2. 每次都要上官网找下有什么参数或者百度,但相比每次下载文件下来,进去配置省很多力气,并且配置一次保存好用过的命令,以后都可以用了,不需要再重复去改很多东西
  3. 其实在一些小型公司,没有专业的运维的话尽量不要在生产环境上使用Docker,不然真的出现问题的话会很头疼,不仅仅要维护项目,还要维护Docker

原文链接:https://juejin.cn/post/6974427129748389902,作者:Kakki

openwrt设置旁路由实例

转载自:https://pfschina.org/wp/?p=8031

在主路由和旁路由的搭配中,主路由负责上网和NAT转发的,旁路由起到的是网关的作用,可以用来分流数据和扩展插件。严格来说应该是旁路网关或网关服务器,它的核心是网关而不是路由。

在使用pfSense或OPNsense防火墙的网络环境中,如果有访问外网等需求时,可以通过设置OpenWrt作为旁路由来实现。

Jietu20211229-100144

使用OpenWrt作为旁路由,要注意以下几点:

  • 旁路由必须与主路由在同一网段,旁路由的LAN接口接入主路由的LAN网络。
  • 旁路由的网关设置为防火墙的LAN接口地址
  • 防火墙开启IP动态伪装
  • DHCP设在主路由上,需要使用旁路网关的设备手动指定网关为旁路由的LAN接口地址。如果需要旁路由完全接管,则DHCP的默认网关设为旁路由LAN接口地址即可。

下面介绍在OpenWrt上的详细设置步骤。

添加LAN接口网关

导航到网络>接口>LAN,添加LAN接口网关和DNS。IPv4网关填写主路由的LAN接口地址,DNS填写公共DNS。

禁用LAN接口DHCP

Jietu20211229-101650

删除WAN接口

导航到网络>接口,删除WAN接口。

Jietu20211229-101416

修改防火墙设置

导航到网络>防火墙,取消选中启用SYN-flood 防御,选中LAN接口的IP动态伪装,如下图所示。

Jietu20211229-101956

至此,OperWrt旁路由的设置就完成了。

客户端如果要使用OpenWrt旁路由上网,必须在客户端设备上手动设定IP地址,并指定网关为OpenWrt的接口地址。如果想让旁路由完全接管,可以在主路由的DHCP设置中,手动指定网关为OpenWrt的接口地址,客户端就可以自动获取旁路由网关地址。下图所示为pfSense中DHCP的旁路由网关设置:

Jietu20211229-102438

申请了amazon EC2 免费一年主机,我用他干了啥

https://aws.amazon.com

安装trojan

参考:https://iyideng.win/black-technology/cgfw/trojan-server-building-and-using-tutorial.html

安装 pythonstock

参考:https://github.com/pythonstock/stock

因为 mariadb已经装好,所以不需要再次安装,直接配置pythonstock的docker启动就好(MYSQL_HOST参数配置错误。后面费了好大的周折才修复回来。应当配置为 MYSQL_HOST=172.17.0.2 ,mysql容器的ip

1
2
3
4
5
6
7
8
9
docker run -itd --name stock  \
-v /data/notebooks:/data/notebooks \
-p 8888:8888 \
-p 9999:9999 \
-e MYSQL_HOST=127.0.0.1 \
-e MYSQL_USER=root \
-e MYSQL_PWD=RTWhN \
-e MYSQL_DB=stock_data \
pythonstock/pythonstock:latest

安装好后,登录进入容器shell

1
2
docker exec -it a562 bash
sh /data/stock/jobs/cron.daily/run_daily

执行后提示数据库连接不上。查看trojan的安装配置,发现mysql的端口设置为 31220(这个端口是映射个外部宿主的,不能在容器之间访问

1
2
cd /usr/local/etc/trojan/
cat config.json

解决方案:修改docker容器主机中的通用脚本中的数据库链接端口(原本的数据库端口是写死的3306)

1
2
3
#安装 vim
apt-get install vim
vim /data/stock/libs/common.py

仍然不行,只能查看两个docker容器的ip地址了,然后配置mysql的地址访问

172.17.0.3-》stock,172.17.0.2-》mysql

所以要把上面的修改复原,将mysql的配置改回来。

然后通过修改容器的环境变量参数来最终修复问题。(只能修改docker的容器配置参数,在docker容器内修改不行)

1
2
3
4
5
6
7
8
#宿主机内
service docker stop
vim /var/lib/docker/containers/a5629af557b237a035f32535766f569a3c5b0aad163fa2aff66809ef8a380969/config.v2.json
service docker start
docker container start a562

#容器内执行
sh /data/stock/jobs/run_init.sh

amazon EC2 服务器安装trojan服务端

amazon aws EC2 服务器快速安装Trojan服务端

准备工作

  1. 配置域名,指向aws服务器的ip。

    我使用的是cloudflare的dns服务,添加一条A记录直接指向ec2的动态ip。注意:这里一定不要开启cf的dns代理(proxy)功能,否者后续的脚本申请SSL证书时会一直失败。

    image-20220304223019526

  2. ec2服务器配置一条安全规则,开启TCP的443端口的外部访问。

    image-20220304225205360

  3. ssh 链接到ec2服务器,这个是基本操作了,不管做啥都要做这个操作的。

安装

执行一键安装脚本

1
source <(curl -sL https://git.io/trojan-install)

当以上命令执行完毕会安装Trojan管理程序,然后选择安装SSL证书的方式并绑定域名,我们选择“1.Let’s Encrypt 证书”,然后输入域名,如“app.mydomain.com”。申请证书这个过程比较容易出问题,注意向导的错误提示,以及安装成功后,通过查看执行记录来定位问题。

安装过程中还会有一个安装mysql数据库的过程,一般选择第一项,自动安装docker版的mariadb就可以了。

安装后的测试

推荐一个自己用的云加速服务

​ 由于经常需要通过google搜索技术资料、解决技术问题,所以如何流畅的使用google搜索服务,成了一个必要的需求。由于众所周知的原因,国内通常无法

正常访问google,以及谷歌的其他一些服务。所以当时做了很多尝试:包括使用google的蓝灯软件,使用网络搜索到的公用的“机场”,自己在vutlr、搬瓦工购买最便宜的vps手动搭建服务,但都不尽人意。蓝灯的免费可用流量太少,根本不够用,而且一定需要一个客户端,使用起来很不方便;vutlr、搬瓦工价格并不便宜,而且需要一定的技术能力。

​ 总结下来,使用时间最长、最稳定的基本上就是shadowsocks的服务了。省心,支持的协议很多,而且服务器的网点很多,最终要的是方便。配合一个刷过openwrt的极路由极1s,做为旁路路由使用,基本上自己网络里的pc、手机、pad都能快速访问谷歌和youtube。很是方便。

shadowsocks的基本介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
云加速服务 - Lite

单用户 / 2 同时在线设备

多个节点位于:

香港、日本、美国、欧洲和澳大利亚

支持所有操作系统

支持 IPv4 和 IPv6 双栈网络

一流的安全性和加密

每月 100GB+ 流量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
云加速服务 - Pro

单用户 / 5 同时在线设备

国际专线 IPLC Access

额外多个节点位于:

香港、日本、美国、欧洲和澳大利亚*

支持所有操作系统

支持 IPv4 和 IPv6 双栈网络

一流的安全性和加密

每月 100GB+ 流量

openwrt上的服务器节点配置(只是配置了常用的几个,其他很多其他地区的节点根本用不过来)

image-20220303150926533

进入shadowsocks官网购买

静态博客网站工具

记录最近刚刚使用、接触过的几个markdown文档转静态网页(网站)的工具。

也记录了一些遇到过的问题。

[TOC]


hexo

官方主页:https://hexo.io/zh-cn/

基于nodejs,部分主题对nodejs版本要求比较高,安装包升级包容易出现兼容性问题;

最大的问题就是编译速度太慢了。超过1W的文件量,windows底下就直接报“too many open files”错误,在linux下编译也是小时级别的,无法忍受。

找到的合适的主题:https://github.com/blinkfox/hexo-theme-matery

本地实施目录: F:\study\js\hexo_html 临时对比目录 F:\study\js\hexo2html

关于配置文件

根目录的配置文件和主题目录的配置文件一同生效,并且如果有相同配置,是以主题目录的配置为主的。这点试了好多次才发现的规律

遇到的问题:文件明太长,git无法cp文件,(windows文件名有255的长度限制)

报错信息:

1
unable to stat “xxxxxxxxxxxxxxxxxxx/index.html” Filename too long

解决方法:https://confluence.atlassian.com/bamkb/git-checkouts-fail-on-windows-with-filename-too-long-error-unable-to-create-file-errors-867363792.html

1
2
git config --system core.longpaths true
git config --global core.longpaths true

hugo

官网文档:https://gohugo.io/getting-started/quick-start/

合适的主题:https://themes.gohugo.io/themes/parsa-hugo/

​ :文档:https://docs.gethugothemes.com/parsa/?ref=github

本地实施并修改的目录:

cloudflare上部署的时候遇到版本太低的问题,用环境变量来指定版本。官方文档说明如下

  • Hugo builds automatically run an old version. To run the latest version of Hugo (for example, `0.80.0`), you will need to set an environment variable. Set `HUGO_VERSION` to `0.80.0` or the Hugo version of your choice.
    

更高阶的静态网站生成器

gatsby

Gatsby 是一个为 React 打造的快如闪电的现代化站点生成器

官网:https://www.gatsbyjs.com/how-it-works/

中文网站:https://www.gatsbyjs.cn/docs/

gridsome

基于 Vue.js 构建的 Jamstack 框架
Gridsome 让开发人员可以轻松地构建静态生成的网站和应用程序,这些网站和应用程序 天生速度快

官网:https://gridsome.org/

中文网站:https://www.gridsome.cn/

nodejs升级

windows下的升级

n模块不支持windows平台,所以一般的升级方法是直接到nodejs官网下载对应的版本进行安装

Linux平台下的升级

更新升级node版本的方法如下:

1)首先:查看当前node版本:

1
node –v

2)安装n模块:

1
npm install -g n

3)升级到指定版本/最新版本(该步骤可能需要花费一些时间)升级之前,可以执行n ls (查看可升级的版本)
如:n v6.9.1

或者你也可以告诉管理器,安装最新的稳定版本

1
n stable

或者升级到最新版

1
n latest

4)安装完成后,查看Node的版本,检查升级是否成功

1
node -v

注:如果得到的版本信息不正确,你可能需要重启机器