Alist 一个支持多种存储的文件列表程序,使用 Gin 和 Solidjs。
1、安装
1
| docker run -d --restart=unless-stopped -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest
|
2、生成管理员密码
3.25.0以上版本将密码改成加密方式存储的hash值,无法直接反算出密码,如果忘记了密码只能通过重新 随机生成 或者 手动设置
1 2 3 4
| # 随机生成一个密码 docker exec -it alist ./alist admin random # 手动设置一个密码,`NEW_PASSWORD`是指你需要设置的密码 docker exec -it alist ./alist admin set NEW_PASSWORD
|
3、配置 Nginx
3.1、生成证书
1
| certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d alist.youhost.com --email 'email@youhost.com'
|
3.2、将域名解析到服务器,利用 Nginx 代理请求 127.0.0.1:5244
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| upstream alist { server 127.0.0.1:5244; }
#HTTP 重定向到 HTTPS
server { listen 80; listen [::]:80; server_name alist.youhost.com;
if ($host = alist.youhost.com) { return 301 https://$host$request_uri; } return 404; }
server {
listen 443 ssl; listen [::]:443 ssl;
server_name alist.youhost.com; #你的域名,已经解析到服务器ip
#HTTP 重定向到 HTTPS # if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
#判断 $host 如果不是设置好的域名,就返回403页面,可以禁止 IP 访问 Web。 if ($host !~ (alist.youhost.com)$){ return 403; }
# IP 访问跳转至域名,将域名替换成自己的。就是判断 $host 如果不是域名结尾的,就重定向至该域名。 # if ($host !~ (youhost.com)$){ # rewrite ^ https://youhost.com$request_uri?; # }
# IP 访问跳转至域名,将 IP 和域名替换成自己的。判断是 IP 的,就重定向。 # if ($host ~ 192.168.1.1){ # rewrite ^ https://www.yourdomain.com$request_uri?; # }
#证书位置 ssl_certificate /etc/letsencrypt/live/alist.youhost.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/alist.youhost.com/privkey.pem;
#证书配置 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #安全链接可选的加密协议 ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; #加密算法 ssl_prefer_server_ciphers on; #表示优先使用服务端加密套件。默认开启 ssl_session_timeout 10m; #缓存有效期 ssl_session_cache builtin:1000 shared:SSL:10m; ssl_buffer_size 1400; add_header Strict-Transport-Security max-age=15768000; ssl_stapling on; ssl_stapling_verify on;
client_max_body_size 525m;
#Nginx 默认的 client_max_body_size 配置大小为 1m,可能会导致你在 Halo 后台上传文件被 Nginx 限制, #所以此示例配置文件加上了 client_max_body_size 1024m; 这行配置。当然,1024m 可根据你的需要自行修改
#日志 access_log /var/log/nginx/nginx.alist.access.log; error_log /var/log/nginx/nginx.alist.error.log;
#反代设置开始# 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://alist; # the max size of file to upload client_max_body_size 20000m; } #反代设置结束#
#禁止访问的文件或目录 location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) { deny all; } #禁止访问的文件或目录
}
|
3.3、验证并重载 nginx 配置
4、更新
4.1、停止并移除旧容器
1
| docker stop alist && docker rm alist
|
4.2、拉取最新镜像
1
| docker pull xhofe/alist:latest
|
4.3、重新安装
1
| docker run -d --restart=unless-stopped -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest
|
5、设置
对照 官方文档 进行设置。