Scaleway星尘Stardust用docker安装Nginx Proxy Manager实现反向代理并安装alist

前言

前段时间写了一个Scaleway星尘搭建节点的教程,很多小伙伴反映Scaleway涨价了,有没有一个更便宜的方法,近期我整理了一下,就是把他们家的硬盘改成Local storage的3G容量,这样就又能省下一点点的欧元,今天特此记录。

创建新机器

如果提示没货可以参考我们不到1欧元的稳定服务器这篇文章,提醒需要注意一点的是,和甲骨文一样,开脚本提前创建好SSH-key,避免创建好后无法登陆。默认只能创建10G硬盘,这时候的价格是:0.43欧每月。

如果你的节点可以直接访问IPV6,则下面的第三步可以不用添加ipv4的地址,我们以v2rayn和FinalShell为例,首先v2rayn设置里面开启允许来自局域网的连接。

然后FinalShell连接设置添加代理服务器就可以正常连接纯ipv6的服务器了,设置如下图

硬盘改为3G的方法

  1. 将刚创建完的机器登陆进去后试试,可以用SSH key登陆则正常,关机。
  2. 在/instance/volumes里面创建一块同地区的3G的Local Storage,并挂载到你要改的星辰下面(记得地区要一样的),然后删掉原来的10G盘。(这个要在小机外面的地方添加,直接在小机内部添加的话,那个不是local SSD,会略贵!直接地址是https://console.scaleway.com/instance/volumes)
  3. (可选,不过强烈建议临时买个IPV4不然后面的DD比较麻烦)接着添加一个IPV4出来并且记得挂载到实例上(如果你有CDN或v6的服务器来做web,可以提前下载好下面的镜像,然后挂载web里面,只要能在v6环境下访问就可以不需要挂载ipv4),拿来下载镜像的,用完记得删。
  4. 到实例的advanced-settings,选择Use rescue image(救援系统),这时候建议不要选3G的盘启动救援系统,而是直接启动(因为选了硬盘再D的话就不会升级内核了,而是用Ubuntu救援镜像的内核了)。
  5. 启动小鸡。
  6. 使用root账号和key登录小鸡,运行以下命令

Debian 10:

curl -Lo- "https://cloud.debian.org/images/cloud/buster/latest/debian-10-genericcloud-amd64.raw" | dd of=/dev/vda bs=1M
curl -Lo- "https://cloud.debian.org/images/cloud/buster/latest/debian-10-genericcloud-amd64.tar.xz" | tar -xJO | dd of=/dev/vda bs=1M

Debian 11:

curl -Lo- "https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.raw" | dd of=/dev/vda bs=1M
curl -Lo- "https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.tar.xz" | tar -xJO | dd of=/dev/vda bs=1M

上面的命令,按照自己的需求,DD运行Debian 10或者Debian11,没有错误的话,再执行下列命令

parted -l
partprobe
parted -s /dev/vda resizepart 1 100%
e2fsck -f /dev/vda1
resize2fs /dev/vda1

现在我们就可以重启和去官网取消ipv4还有记得要把”Use rescue image”改回”Use local boot”,并且下面的boot硬盘记得要选上刚才创建的3G盘,记得都保存哈。

登录的时候,使用账号debian和key登录小机,使用sudo -i切换到root账号。(可以将key同步到root账号下,使用root账号登录,或者设置root密码,然后修改sshd的配置文件来使用root+密码登录小机)

理论上,如果只安装x-ui面板2G的硬盘就够了,但是Scaleway给的2G硬盘貌似小于2G,上面的debian文件dd不进去,会报错~~~3G是此方法的最小值了.

优化服务器

  • 安装BBR

新的 TCP 拥塞控制算法 BBR (Bottleneck Bandwidth and RTT) 可以让服务器的带宽尽量跑满,并且尽量不要有排队的情况,让网络服务更佳稳定和高效。

Linux Kernel 内核升级到 4.9 及以上版本可以实现 BBR 加速(Ubuntu 18.04 默认的内核是 4.15 版本的内核,Ubuntu 20.04 默认的内核是 5.4 版本的内核,并已经默认编译了 TCP BBR 模块,可以直接通过参数开启)。

更新一下包

apt update -y && apt upgrade -y

目前 De­bian 10 自带的内核版本一般是 4.19,我们可以查看一下内核版本(如果是 5.6 及以上内核则集成了 Wire­Guard )

hostnamectl

我们的内核版本为6.1可以直接开BBR,修改 kernel 参数配置文件 sysctl.conf 并指定开启 BBR

vi /etc/sysctl.conf

按英文字符i并把光标移到最下面后把下面的内容添加进去

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

然后按ESC键后输入:wq回车保存。重启 VPS

reboot

用下面的命令确认 BBR 是否正确开启

lsmod | grep bbr

返回这样的结果表示正常

tcp_bbr

用下面的命令确认fq 算法是否正确开启

lsmod | grep fq

返回这样的结果表示正常

sch_fq
  • 修改服务器时间

部份程序要求服务器的时间与我们本地的时间一致。可以通过下面的方式修改

查看时间:

timedatectl

DD完后的系统是欧洲时间,这边需要改成上海时间

sudo timedatectl set-timezone Asia/Shanghai

如果没有 sudo 命令我们可以安装几个常用的

apt install sudo curl wget

重新查看时间就变成上海时间了

  • 添加SWAP

swap 是 Linux 中的虚拟内存,用于扩充物理内存不足而用来存储临时数据存在的。它类似于 Windows 中的虚拟内存。在 Windows 中,只可以使用文件来当作虚拟内存。而 linux 可以文件或者分区来当作虚拟内存。如果你是3G的硬盘就不要添加SWAP了。

我们用以下脚本来添加SWAP:

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

选择18后输入SWAP数值,我们这里是小机就选择了1024

安装 Docker、Docker-compose

更新、安装必备软件

apt-get update && apt-get install -y wget vim

安装Docker

wget -qO- get.docker.com | bash

查看 Docker 版本

docker -v

设置开机自启动

systemctl enable docker

卸载 Docker(非必须)

sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

安装Docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

修改 Docker 配置,以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘

cat > /etc/docker/daemon.json <<EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

重启 Docker

systemctl restart docker

安装 Nginx Proxy Manager

官网:https://nginxproxymanager.com/

创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/npm

cd /root/data/docker_data/npm

用 docker安装Nginx Proxy Manager

vim docker-compose.yml

英文输入法下,按 i然后粘贴下面的代码

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

按一下 esc,然后 :wq 保存并退出

要确保你服务器后台安全组放行了81端口,当然你要安装alist还要放行5244端口,其它程序也是一样

查看端口是否被占用(以 81 为例)

lsof -i:81

如果啥也没出现,表示端口未被占用

如果出现:

-bash: lsof: command not found

我们就要安装 lsof

apt install lsof

如果端口被占用了就修改一下端口,比如改成 82,注意 docker 命令行里和防火墙都要改

运行并访问 Nginx Proxy Manager

cd /root/data/docker_data/npm

docker-compose up -d

我们就可以输入 http://ip:81 访问了。(我们只有ipv6的地址就要输入http://[你的ipv6地址]:81访问)

默认登陆名和密码:

Email:    [email protected]
Password: changeme

如果你不想长期用ipv6地址访问Nginx Proxy Manager,你可以解析一个域名,类型选AAAA地址填你的ipv6地址,Nginx Proxy Manager后台添加一个反向代理如下图,证书可以上传cloudflare的15年证书,也可以在后台申请一个证书

cloudflare开启小云朵后我们的ipv4地址也能正常访问。

更新 Nginx Proxy Manager

cd /root/data/docker_data/npm

docker-compose down 

cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive  # 备份以防万一

docker-compose pull

docker-compose up -d

docker image prune

提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] 

输入 y即可

卸载 Nginx Proxy Manager(非必须)

cd /root/data/docker_data/npm

docker-compose down 

rm -rf /root/data/docker_data/npm

安装alist

官网https://alist.nn.ci/zh/

docker安装发行版本

docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest

docker-compose

version: '3.3'
services:
    alist:
        restart: always
        volumes:
            - '/etc/alist:/opt/alist/data'
        ports:
            - '5244:5244'
        environment:
            - PUID=0
            - PGID=0
            - UMASK=022
        container_name: alist
        image: 'xhofe/alist:latest'

我们就可以输入 http://ip:5244 访问了。(我们只有ipv6的地址就要输入http://[你的ipv6地址]:5244访问)

我们像上面那样添加一个反向代理后就可以访问网站了,输入 docker logs alist 里面的密码就能正常登陆后台了。为了方便起见,建议更改一个自己能记住的密码。

网盘的添加方式,请参考官方文档:https://alist-doc.nn.ci/en/

最终效果如下图

视频教程