前言

NotionNext可以轻松地使用Vercel免费托管,不过免费的流量和函数执行次数有限,如果你的网站访问量非常大,可以尝试在自己的云服务器、vps上部署。 用国内的VPS部署服务、会大大提升网站的访问速度。
可以选择裸机安装Nodejs环境启动项目,注意:服务器的操作系统、CPU内存配置都有可能影响到服务运行。推荐用Docker容器化部署。

安装步骤

准备一台任意操作系统的VPS云服务器,不同系统的安装步骤大同小异。
安装分为三个步骤,一是下载NotionNext代码;二是安装运行环境、三是启动项目。

一、NotionNext代码下载

  1. 安装Git

shell

# Debian/Ubuntu apt install git -y # Centos yum install git -y
Shell
执行效果

javascript

[root@tangly1024 ~]# yum install git -y Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.lzu.edu.cn * extras: mirrors.ustc.edu.cn * updates: mirror.lzu.edu.cn base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/2): extras/7/x86_64/primary_db | 249 kB 00:00:00 (2/2): updates/7/x86_64/primary_db | 18 MB 00:00:02 Resolving Dependencies --> Running transaction check ---> Package git.x86_64 0:1.8.3.1-23.el7_8 will be installed --> Processing Dependency: perl-Git = 1.8.3.1-23.el7_8 for package: git-1.8.3.1-23.el7_8.x86_64 --> Processing Dependency: perl(Term::ReadKey) for package: git-1.8.3.1-23.el7_8.x86_64 --> Processing Dependency: perl(Git) for package: git-1.8.3.1-23.el7_8.x86_64 --> Processing Dependency: perl(Error) for package: git-1.8.3.1-23.el7_8.x86_64 --> Running transaction check ---> Package perl-Error.noarch 1:0.17020-2.el7 will be installed ---> Package perl-Git.noarch 0:1.8.3.1-23.el7_8 will be installed ---> Package perl-TermReadKey.x86_64 0:2.30-20.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================================================================================================== Package Arch Version Repository Size ==================================================================================================================================================================================== Installing: git x86_64 1.8.3.1-23.el7_8 base 4.4 M Installing for dependencies: perl-Error noarch 1:0.17020-2.el7 base 32 k perl-Git noarch 1.8.3.1-23.el7_8 base 56 k perl-TermReadKey x86_64 2.30-20.el7 base 31 k Transaction Summary ==================================================================================================================================================================================== Install 1 Package (+3 Dependent packages) Total download size: 4.5 M Installed size: 22 M Downloading packages: warning: /var/cache/yum/x86_64/7/base/packages/perl-Error-0.17020-2.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Public key for perl-Error-0.17020-2.el7.noarch.rpm is not installed (1/4): perl-Error-0.17020-2.el7.noarch.rpm | 32 kB 00:00:00 (2/4): perl-Git-1.8.3.1-23.el7_8.noarch.rpm | 56 kB 00:00:00 (3/4): perl-TermReadKey-2.30-20.el7.x86_64.rpm | 31 kB 00:00:00 (4/4): git-1.8.3.1-23.el7_8.x86_64.rpm | 4.4 MB 00:00:01 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 3.9 MB/s | 4.5 MB 00:00:01 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Importing GPG key 0xF4A80EB5: Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <[email protected]>" Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 Package : centos-release-7-9.2009.0.el7.centos.x86_64 (@anaconda) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 1:perl-Error-0.17020-2.el7.noarch 1/4 Installing : perl-TermReadKey-2.30-20.el7.x86_64 2/4 Installing : perl-Git-1.8.3.1-23.el7_8.noarch 3/4 Installing : git-1.8.3.1-23.el7_8.x86_64 4/4 Verifying : git-1.8.3.1-23.el7_8.x86_64 1/4 Verifying : 1:perl-Error-0.17020-2.el7.noarch 2/4 Verifying : perl-Git-1.8.3.1-23.el7_8.noarch 3/4 Verifying : perl-TermReadKey-2.30-20.el7.x86_64 4/4 Installed: git.x86_64 0:1.8.3.1-23.el7_8 Dependency Installed: perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-23.el7_8 perl-TermReadKey.x86_64 0:2.30-20.el7 Complete!
JavaScript
  1. 从Github仓库拉取代码

shell

# 来到您的用户主目录 cd ~ # 将Git上的代码下载到服务器中 ; git clone https://github.com/tangly1024/NotionNext && cd NotionNext # 若您的服务器因为网络问题,无法访问github,可手动下载NotionNext代码 上传至服务器 # git clone https://gh-proxy.com/https://github.com/sepbigo/NotionNext && cd NotionNext
Shell

二、运行项目

可以使用Docker运行,或者系统安装NodeJS环境运行,出于兼容性和稳定性的考虑,这里推荐使用Docker方案运行。
  1. Docker运行
原先是推荐在服务器上使用NodeJS环境,奈何在NotionNext_V4.0之后的新版要用到V20以上的Nodej环境,这里有部分服务器无法兼容安装。同时Docker本身的稳定性也更加适合在生产环境使用,因此加入了Docker运行方案。
安装Docker最新版:
Centos

shell

# 1.更新系统 sudo yum update -y # 2.安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 3.添加国内阿里镜像下载源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 4.下载安装docker sudo yum install -y docker-ce # 5.启动docker sudo systemctl start docker
Shell
Debian/Ubuntu

shell

sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Shell
推荐服务器管理脚本安装

shell

bash <(curl -sL kejilion.sh)
Shell
  1. 创建Dockerfile文件
由于国内防火墙的规定,Docker的镜像网络访问受限,现在Docker要下载官方NodeJs环境变得困难,因此推荐使用国内替代的镜像源下载(来自https://docker.aityp.com/)。
确保当前目录是NotionNext代码文件夹:

shell

cd NotionNext
Shell
创建构建文件:

shell

cat > Dockerfile <<EOF # 第一阶段:基础镜像 FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/node:20-alpine AS base # 第二阶段:依赖安装 FROM base AS deps # 声明阶段参数(推荐方式) ARG NOTION_PAGE_ID ARG NEXT_PUBLIC_THEME # 安装依赖 RUN apk add --no-cache libc6-compat WORKDIR /app COPY package.json ./ RUN yarn config set registry https://registry.npmmirror.com && \ yarn config set disturl https://npmmirror.com/dist && \ yarn install --frozen-lockfile --network-timeout 600000 # 第三阶段:构建 FROM base AS builder ARG NOTION_PAGE_ID ARG NEXT_PUBLIC_THEME ENV NEXT_BUILD_STANDALONE=true ENV NEXT_DEBUG=${NEXT_DEBUG:-false} WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . RUN yarn build # 第四阶段:运行 FROM base AS runner ENV NODE_ENV=production WORKDIR /app COPY --from=builder /app/public ./public # Automatically leverage output traces to reduce image size # https://nextjs.org/docs/advanced-features/output-file-tracing COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static # 个人仓库把将配置好的.env.local文件放到项目根目录,可自动使用环境变量 # COPY --from=builder /app/.env.local ./ EXPOSE 3000 # Next.js collects completely anonymous telemetry data about general usage. # Learn more here: https://nextjs.org/telemetry # Uncomment the following line in case you want to disable telemetry. # ENV NEXT_TELEMETRY_DISABLED 1 CMD ["node", "server.js"] EOF
Shell
  1. 开始构建
以下命令将读取当前NotionNext文件夹下的Dockerfile文件,按照文件内容下载Nodejs环境,并将NotionNext代码包括blog.config.js等配置打包进环境中,成为一个可执行的Docker镜像,并且镜像名为my-app。

shell

docker build --build-arg NEXT_DEBUG=true -t my-app .
Shell
根据服务器网络环境,首次打包过程可能要十分钟左右。
notion image
  1. 使用docker运行项目

shell

docker run -d -p 3000:3000 --name app --restart unless-stopped my-app
Shell
  1. 重启docker项目

shell

docker restart app
Shell
更多关于docker的用法,请查阅手册或借助AI使用。
  1. 更新项目
拉取最新代码,或者修改对应的配置文件后,执行以下命令重新打包

shell

docker build --build-arg NEXT_DEBUG=true -t my-app .
Shell
然后关停旧的服务

shell

docker rm -f app
Shell
启动新服务

shell

docker run -d -p 3000:3000 --name app --restart unless-stopped my-app
Shell
博客登陆地址:你的IP:3000
你也可以自行反代域名,在此不做赘述。博客更新在Notion里更新,APP/客户端/网页都行,更新后会自动同步到博客页面。
 
Workers版moments开箱即用,记录美好瞬间Nexus Terminal:一款现代化的 Web SSH / RDP 客户端
Loading...