pve下lxc运行alpine + alist + ssl 非docker方式

pve下 可以把lxc当作应用容器使用,所以系统肯定选择只有3m的alpinelinux
不用docker配置,优点体积小,缺点略微繁琐一丢。

# 创建alpine lxc容器

pve下操作,特权容器,创建完成后,选项功能 里面 最好勾选 嵌套和 fuse,磁盘大小0.3G。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 配置源和时区 alpine内运行
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
apk add tzdata 
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
apk del tzdata
rm -rf /var/cache/apk/*
# vim替换为nano
apk add nano
apk del  vim && ln -s /usr/bin/nano /usr/bin/vim  && rm -rf /usr/bin/vi && ln -s /usr/bin/nano /usr/bin/vi

# 安装alist

官网一键安装命令 不支持alpine,手动装,alpine 没有 glibc,我用musl版本

1
2
3
4
5
6
akp add wget
cd ~
wget https://github.com/alist-org/alist/releases/download/v3.11.0/alist-linux-musl-amd64.tar.gz
tar -zxvf alist-*.tar.gz && rm alist-*.tar.gz
chmod +x alist
./alist server  # 运行程序 查看有没有异常

ctrl +c 停止

如果要更新alist,上面命令简单修改一下即可

1
2
./alist admin # 获得管理员用户名和密码信息 kT0voJRZ
./alist server & # 临时后台运行,然后去后台配置  配置完成后 killall alist

# alpine下配置alist守护进程

可以用 rc.local , 我这里使用supervisor 更简单一些

1
2
3
apk add supervisor nano
rc-update add supervisord boot
service supervisord restart

初始化配置文件

1
2
echo_supervisord_conf > /etc/supervisord.conf
nano  /etc/supervisord.conf

编辑或者添加文件末尾两行

1
2
[include]
files = /etc/supervisord_conf/*.ini
1
2
mkdir -p /etc/supervisord_conf/
nano /etc/supervisord_conf/alist.ini

根据自己的情况配置 注意这个文件是ini格式的

1
2
3
4
5
6
7
8
[program:alist]
directory=/root/
command=/root/alist server
autostart=true
autorestart=true
;stderr_logfile=/tmp/alist.err
;stdout_logfile=/tmp/alist.log
environment=CODENATION_ENV=prod

管理

1
2
3
4
5
supervisord -c /etc/supervisord.conf
supervisorctl start alist
supervisorctl stop alist
supervisorctl status alist
reboot # 重启后检查alist是否已经ok

# 配置外网ssl

# 获取证书

获取你的域名证书。我这里是 部署到github上的acme.sh,直接拉回来解压。你可以自签,也可以单独装acmesh 甚至宝塔 自己随意就好。

1
2
3
wget https://github.com/joyanhui/ssl/raw/main/ssl.zip
apk  add p7zip
7z x ssl.zip  -p密码 #密码和p字母之间没有空格

# 配置nginx

alpine下nginx的配置文件 是在 http.d 目录下哈

1
2
3
4
apk add nginx
rc-update add nginx
rc-service nginx start
nginx -s reload # 重载
1
2
mv /etc/nginx/http.d/default.conf /etc/nginx/http.d/default.conf-bak #非必须
nano /etc/nginx/http.d/alist.conf

内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
server {
  listen       端口号码 ssl;
  server_name  你的域名;
  ssl_certificate /root/ssl/ddns.leiyanhui.com.cer; # fullchain.pem
  ssl_certificate_key /root/ssl/ddns.leiyanhui.com.key; #privkey.pem
  ssl_verify_client off;
  server_tokens off;
  root /usr/share/nginx/html;
  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Range $http_range;
    proxy_set_header If-Range $http_if_range;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5244;
    # the max size of file to upload
    client_max_body_size 20000m;
  }
}

# 结束

重载nginx,路由器设置好ip绑定和端口转发 完毕
windows下 挂载后,尝试复制大文件正常。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计