0%

准备工作

本教程主要讲怎么使用dockerdocker-compose搭建一个OpenVPN服务器,需要进行以下操作:

  1. 安装docker服务,参考Install Docker
  2. 安装docker-compose工具,参考Install Docker Compose
  3. 拉取镜像kylemanna/openvpn

安装并运行OpenVPN服务

设置环境变量

1
2
3
4
# 设置OpenVPN数据存放位置
OVPN_DATA=`pwd`/ovpn_data
# 设置OpenVPN域名,也可以设置为ip
OVPN_DOMAIN=openvpn.example.com

初始化OVPN_DATA

1
2
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://$OVPN_DOMAIN
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

编写docker-compose.yaml文件

1
2
3
4
5
6
7
8
9
10
11
version: '2'
services:
openvpn:
image: kylemanna/openvpn
ports:
- 1194:1194/udp
restart: always
volumes:
- ./ovpn_data:/etc/openvpn
cap_add:
- NET_ADMIN

启动OpenVPN服务

1
docker-compose up -d

创建客户端

假设客户端名称为:CLIENTNAME

创建客户端

1
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

导出客户端配置文件

1
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn

Windows下可以使用netsh做端口转发:

1
2
3
4
5
6
# 将192.168.5.322端口转发到xxx.xxx.xxx.xxx的22端口
netsh interface portproxy add v4tov4 listenaddress=192.168.5.3 listenport=22 connectaddress=xxx.xxx.xxx.xxx connectport=22
# 查看存在的转发
netsh interface portproxy show all
# 删除IP是192.168.5.3,端口是22的转发
netsh interface portproxy delete v4tov4 listenaddress=192.168.5.3 listenport=22

1
2
3
4
5
6
7
8
9
10
11
> mklink
MKLINK [[/D] | [/H] | [/J]] Link Target

/D 创建目录符号链接。默认为文件符号链接。
/H 创建硬链接而非符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径(相对或绝对)。

> mklink D:\filelink.txt E:\file.txt
> mklink /D D:\folderlink E:\folder

需要先安装依赖包postgresql-devgccpython3-devmusl-dev

1
2
3
apk update
apk add postgresql-dev gcc python3-dev musl-dev
pip install psycopg2

当然也可以先做一个基础镜像:

1
2
3
4
5
FROM python:3.5-alpine

RUN apk update && apk add postgresql-dev gcc python3-dev musl-dev

CMD ["python3"]

在国内也可以使用aliyun的镜像源:

1
2
3
4
5
6
7
FROM python:3.5-alpine

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk update \
&& apk add postgresql-dev gcc python3-dev musl-dev

CMD ["python3"]

打开文件/run/systemd/system/docker.service,可以看到环境变量$DOCKER_OPTS, 修改docker镜像地址实际上可以认为是修改$DOCKER_OPTS环境变量。

打开文件/run/flannel/flannel_docker_opts.env,在其中添加下面内容:

1
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

由于目录/usr/local/bin不可写,所以docker-compose无法安装到/usr/local/bin目录下; 但是/opt/bin目录是可写的,该目录也在PATH路径下,那我们可以将docker-compose安装到这个目录下。

1
2
3
mkdir -p /opt/bin
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose

方案1

使用taobao镜像源

1
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass

方案2

使用cnpm

1
cnpm install node-sass

安装过程中,在要求输入用户名和密码时,先不输入任何信息,按Shift+F10呼出DOS窗口, 然后输入以下命令(假设用户文件夹转移到X盘,且X盘为NTFS分区):

1
2
3
robocopy C:\Users X:\Users /E /COPYALL /XJ
rmdir C:\Users /S /Q
mklink /J C:\Users X:\Users

而后关闭DOS窗口,继续安装直至完成,如此安装的Win7,所有用户文件夹都在X盘上。

控制代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\033[0m             关闭所有属性
\033[1m 设置高亮
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m--\033[37m 设置前景色:黑、深红、绿、黄、蓝、紫、深绿、白
\033[40m--\033[47m 设置背景色:黑、红、绿、黄、蓝、紫、深绿、白
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[y;xH 设置光标的位置
\033[2J 清屏
\033[K 清除从光标列到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标

1
echo -e '\033[31mcontent\033[37m'