分类: OS

Armbian使用Docker安装IPsec VPN 服务器

项目地址:https://github.com/hwdsl2/setup-ipsec-vpn
首先获取镜像

docker pull hwdsl2/ipsec-vpn-server

创建配置文件config.env

# Note: All the variables to this image are optional.
# See README for more information.
# To use, uncomment and replace with your own values.

# Define IPsec PSK, VPN username and password
# - DO NOT put "" or '' around values, or add space around =
# - DO NOT use these special characters within values: \ " '
VPN_IPSEC_PSK=密钥
VPN_USER=账号
VPN_PASSWORD=密码

# Define additional VPN users
# - DO NOT put "" or '' around values, or add space around =
# - DO NOT use these special characters within values: \ " '
# - Usernames and passwords must be separated by spaces
# VPN_ADDL_USERS=additional_username_1 additional_username_2
# VPN_ADDL_PASSWORDS=additional_password_1 additional_password_2

# Use a DNS name for the VPN server
# - The DNS name must be a fully qualified domain name (FQDN)
# VPN_DNS_NAME=vpn.example.com

# Specify a name for the first IKEv2 client
# - Use one word only, no special characters except '-' and '_'
# - The default is 'vpnclient' if not specified
# VPN_CLIENT_NAME=your_client_name

# Use alternative DNS servers
# - By default, clients are set to use Google Public DNS
# - Example below shows Cloudflare's DNS service
# VPN_DNS_SRV1=1.1.1.1
# VPN_DNS_SRV2=1.0.0.1

# Protect IKEv2 client config files using a password
# - By default, no password is required when importing IKEv2 client configuration
# - Uncomment if you want to protect these files using a random password
# VPN_PROTECT_CONFIG=yes

运行镜像

docker run -d \
    -p 500:500/udp \
    -p 4500:4500/udp \
    --privileged=true \ # 特权模式运行
    --restart=always \  # 开启自启动
    --name ipsec-vpn-server \
    --env-file /home/iuu/Software/Docker/ipsec-vpn-server/config.env \ # 加载配置文件
    -v /home/iuu/Software/Docker/ipsec-vpn-server/ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \ # 挂载运行库目录 但是只有只读权限
    hwdsl2/ipsec-vpn-server

启动容器后查看容器状态
防火墙开4500 500 UDP端口
如果是内网穿透,路由器也得做对应的端口转发

N1安装File Browser 轻量网盘工具

折腾了好久的N1,尝试过各种面板,都不太理想,最后还是开始用各种独立软件来搭建自己的服务。
我的N1都是硬改过的内存128/64Gb 可以做一个小的云盘来使用,当然也可以挂一个硬盘来用。

官方有脚本安装,但个人喜欢自定义安装,同时本就是 Go 语言编写的程序,直接下载编译好的可执行文件运行即可。因此下面介绍在 Linux 上直接运行的方式。

安装

首先去 release 页面,根据你的系统和处理器架构选择下载最新的版本,比如这里下载 linux-arm64-filebrowser.tar.gz 版本:

wget https://github.com/filebrowser/filebrowser/releases/download/v2.30.0/linux-arm64-filebrowser.tar.gz

解压到你指定的目录,比如这里的 /home/filebrowser:

tar -xvf linux-arm64-filebrowser.tar.gz  -C /home/filebrowser

进入到你的目录为 filebrowser 添加可执行权限:

chmod +x filebrowser

接下来就直接运行了:

./filebrowser -p 2222

配置参数运行

在上面的直接运行命令中你可以加上一些自定义参数,在官方文档中可以看到完整的命令使用,下面是部分常用的的参数:

-a, –address string:监听的地址(默认为 127.0.0.1)
-p, –port string:监听端口(默认为 8080)
-b, –baseurl string:网站路径
-t, –cert string:SSL 证书
-k, –key string:SSL 证书密钥
-l, –log string:日志默认为标准输出,如果要记录到文件的话可以直接指定文件,例如 /home/filebrowser/filebrowser.log
-c, –config string:配置文件路径
-d, –database string:数据库路径(默认值 “./filebrowser.db”)
-r, –root string:数据存放路径

这里我为了方便,选择自己写一个配置文件,vim filebrowser.json:

{
  "port": 2222,
  "baseURL": "",
  "address": "127.0.0.1",
  "log": "stdout",
  "database": "/home/filebrowser/database.db",
  "root": "/data/filebrowser"
}

之后直接在程序目录执行:

./filebrowser -c filebrowser.json

然后在浏览器中打开你的网站登录即可,默认管理员用户和密码都为 admin,建议登录后先重新设置密码。

使用 SSL

File Browser 本身支持直接在运行时使用 t 和 k 参数或者在配置文件中使用 cert 和 key 参数设置 SSL 证书和密钥。但我这里选择使用 Nginx 前端反代:

server {
    listen ...;
    server_name ...;
    ssl_certificate ...; 
    ssl_certificate_key ...;
    ...
    location / {
        proxy_pass  http://127.0.0.1:2222;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

如果你想使用二级目录,例如 yourdomain.com/file 的形式,需要修改前面配置文件中 "baseURL": "/file",以及 Nginx 配置文件中 location /file。

后台持续化运行

可以简单使用直接 nohup:

nohup filebrowser -c filebrowser.json &

但我更推荐通过 systemd 控制:

vim /etc/systemd/system/filebrowser.service

输入以下内容:

[Unit]
Description=File Browser
After=network.target

[Service]
ExecStart=/home/filebrowser/filebrowser -c /home/filebrowser/filebrowser.json

[Install]
WantedBy=multi-user.target

记得修改 ExecStart 后面为你自己的文件路径,之后执行:

systemctl daemon-reload

systemctl 常用操作

运行:systemctl start filebrowser.service
停止运行:systemctl stop filebrowser.service
开机启动:systemctl enable filebrowser.service
取消开机启动:systemctl disable filebrowser.service

Armbian安装SMB做文件共享

安装SMB

进入armbian-config,到安装软件页面,Samba空格选中,再回车安装。

配置SMB

修改配置文件/etc/samba/smb.conf,直接覆盖原内容,实现匿名直接连接。

[global]
    workgroup = WORKGROUP
    server string = Samba Server Version %v
    passdb backend = tdbsam
    cups options = raw
    security = user                    #认证模式为User
    map to guest = bad user            #这个很关键,实现匿名无须交互输入用户名和密码就靠它了
    guest account = guest              #匿名用户映射为guest用户

[myshare]                    #共享后看到的文件夹名
    comment = My share
    path = /home/public      #共享路径
    browseable = Yes         #可以被浏览,就是在网络邻居中能看到共享名
    read only = No           #可读写
    guest ok = Yes           #允许匿名访问,这个也需要设置,否则匿名无法访问
    valid users = samba liuag guest    #有效的用户和组
    invalid users = liuben   #无效用户和组   
    read list = samba    #只读用户和组(如果read only = No,只读用户需要在此设置)
    write list = liuag   #可读写用户和组(如果read only = Yes,可读写用户需要在此设置)
    allow hosts = 192.168.100.236    #允许访问主机列表,支持通配符
    deny hosts = 192.168.100.0/24    #禁止访问主机列表,支持通配符

简洁版

[global]
       workgroup = WORKGROUP
       security = user
       map to guest = Bad User
[media]
       comment = resources
       path = /home/public
       public = yes
       writable = yes
       guest ok = yes
       browseable = yes

修改目录权限
chmod -R 777 /home/public
开机启动SMB
systemctl enable samba
重启SMB
systemctl restart samba

虚拟机VMware Centos7挂载共享文件夹(开机自动挂载)

安装VMware tools

自行百度

虚拟机VMware设置共享文件夹

自行百度

挂载共享文件夹到Centos中

默认Vmware共享的文件夹存放在 /mnt/hgfs/ 目录下,但是仅仅通过上面步骤,还是无法找到共享出去的本地目录的,还需要进行Centos的挂载;

vmhgfs-fuse .host:/src /mnt/hgfs/src 

开机自动挂载

编辑文件/etc/fstab,最后新增一行

.host:/src /mnt/hgfs/src  fuse.vmhgfs-fuse allow_other 0 0

在 CentOS 上安装 Go 语言 (Golang) 的步骤如下

步骤一:更新系统

首先,确保系统的软件包是最新的。打开终端并执行以下命令:

sudo yum update -y

步骤二:下载 Go 语言安装包

前往 Go 语言官方网站 下载适用于 Linux 的最新版本安装包。你也可以使用 wget 命令直接下载。例如:

wget https://golang.org/dl/go1.20.1.linux-amd64.tar.gz
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz

请根据最新的 Go 版本替换 URL 中的版本号。

步骤三:解压安装包

下载完成后,将压缩包解压到 /usr/local 目录:

tar zxvf go1.8.linux-amd64.tar.gz  -C  /usr/local
或
sudo tar -C /usr/local -xzf go1.20.1.linux-amd64.tar.gz

步骤四:设置环境变量

要使 Go 语言生效,需要配置环境变量。打开你的 shell 配置文件,例如 .bashrc 或 .profile,并添加以下行:

vim /etc/profile

# 添加如下内容
# GO相关
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN

# 将用户GOBIN加入到PATH
export GOPATH=/home/iuu/Developer/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

执行以下命令以使配置文件生效:

# 完成后执行
source /etc/profile

步骤五:验证安装

验证 Go 语言是否成功安装,可以通过以下命令检查:

go version

如果安装成功,你会看到类似如下的输出:

go version go1.20.1 linux/amd64

番外篇

为了方便管理 Go 项目,你可以设置一个 Go 工作区。创建一个工作目录,例如:

mkdir -p /home/iuu/Developer/go/{bin,src,pkg}

然后在你的 shell 配置文件中添加以下行:

export GOPATH=/home/iuu/Developer/go
export PATH=$PATH:$GOPATH/bin

再次执行 source ~/.bashrc 或 source ~/.profile 使配置生效。
现在你已经成功在 CentOS 上安装并配置了 Go 语言环境,可以开始编写和运行 Go 语言程序了。

1 2 3