本文最后更新于 2024-08-04,文章内容可能已经过时!

借鉴于Alist V3 编译以及踩坑解决方案

Github:https://github.com/alist-org/alist

一、部署环境

需要环境(git, nodejs, pnpm, golang>=1.19, gcc)

  • 安装git,gcc

sudo apt-get install git gcc -y
  • 安装golang1.20.4

下载golang
wget https://go.dev/dl/go1.20.4.linux-amd64.tar.gz

解压golang
tar -xvf go1.20.4.linux-amd64.tar.gz

移动解压后go文件夹
sudo mv go /usr/local/

配置环境变量
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go

查看是否安装成功
go version
  • 安装nodejs

apt-get install -y curl && curl -fsSL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh && bash nodesource_setup.sh
  • 查看nodejs是否安装

node -v

环境安装完毕,开始编译

二、编译项目

  • 创建一个目录文件并进入

mkdir Alist && cd Alist\
  • 克隆源码

前端:git clone --recurse-submodules https://github.com/alist-org/alist-web.git
后端:git clone https://github.com/alist-org/alist.git
  • 安装pnpm

npm install -g pnpm
  • 安装后端中文语言包

进入后端
cd alist-web

下载中文语言包并解压语言包
wget https://crowdin.com/backend/download/project/alist/zh-CN.zip && unzip zh-CN.zip 

初始语言包并删除语言压缩包
node ./scripts/i18n.mjs && rm zh-CN.zip
  • 开始编译前端

pnpm install && pnpm run build
  • 编译完后把dist目录复制到后端public里

cp -r /home/lonely/Alist/alist-web/dist /home/lonely/Alist/alist/public/

三、编译后端

  • 进入后端目录

cd && cd Alist/alist/
  • 编译命令

appName="alist"
builtAt="$(date +'%F %T %z')"
goVersion=$(go version | sed 's/go version //')
gitAuthor=$(git show -s --format='format:%aN <%ae>' HEAD)
gitCommit=$(git log --pretty=format:"%h" -1)
version=$(git describe --long --tags --dirty --always)
webVersion=$(wget -qO- -t1 -T2 "https://api.github.com/repos/alist-org/alist-web/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
ldflags="\
-w -s \
-X 'github.com/alist-org/alist/v3/internal/conf.BuiltAt=$builtAt' \
-X 'github.com/alist-org/alist/v3/internal/conf.GoVersion=$goVersion' \
-X 'github.com/alist-org/alist/v3/internal/conf.GitAuthor=$gitAuthor' \
-X 'github.com/alist-org/alist/v3/internal/conf.GitCommit=$gitCommit' \
-X 'github.com/alist-org/alist/v3/internal/conf.Version=$version' \
-X 'github.com/alist-org/alist/v3/internal/conf.WebVersion=$webVersion' \
"
go build -ldflags="$ldflags" .
  • 编译完成目录中的alist就是了

运行命令
./alist server
查看密码
./alist admin

四、魔改代码

Alist V3 自己魔改代码示例